在前面几篇文章网站测试自动化系统—基于Selenium和VSTT、数据驱动测试、在测试代码中硬编码测试数据里,已经编写了一部分测试用例的代码了。我在文章自动化系统该有的功能里,也提到了,自动化测试用例代码应该能够被系统自动执行起来。我们总不能要求测试人员每天下班之前把最新的测试代码下载到自己本机,用VSTS打开,然后选择要批次执行的测试用例。这种重复机械的劳动是应该要被程序消灭的,毕竟机器的成本要比人工的成本低多了。
首先先分解一下执行测试用例的步骤,编码实现每一个步骤,然后使用批处理的形式将工作流串起来:(当然啦,我们也可以使用.NET里面的Workflow来实现,只不过那样的话我们需要格外添加一个命令—安装.NET Framework 3.0。)
1. 安装最新版本的产品,在这次测试过程中,由于开发团队没有使用什么自动化每日编译系统,所有的程序员都是从代码服务器下载最新的代码,在 Visual Studio里面编写调试网站。所以我们测试团队也是直接下载最新的代码,使用Visual Studio编译产品代码 。
当然啦,在自动化测试系统里面,不可能要求有一个专人按什么“F5”之类的按钮编译整个网站的。幸好Visual Studio只是一个集成开发环境(IDE),它编译程序的实际工作是由MSBUILD这个程序完成的,Msbuild这个程序类似于Ant和Make等软件。你只要提供代码的解决方案文件(.sln文件)或者项目文件(.csproj文件),Msbuild自己会根据项目之间的依赖关系编译代码。因此安装最新版本产品的工作就被分解成:
1.1 下载最新的源代码,所有的文件版本服务器的客户端程序都提供了这个功能。我们这个项目使用的是hg,这个命令获取最新的代码:
hg.exe update
1.2 编译代码:
Msbuild /nologo productcode.sln
1.3 发布编译好的网站,或者使用xcopy命令更新网站文件夹,或者在IIS里面将网站的根目录直接指向产品代码的文件夹。
2. 下载并且编译最新的测试代码,这个步骤跟第1步类似,所以就省略相关命令了。
3. 运行所有的自动化测试用例。VSTT提供了一个叫做用例列表(Test List)的功能,因为是SCRUM的第一个Spring,所以我们在工作时,将所有自动化好了的测试用例都归档到一个叫做Automation的用例列表(Test List)里。
当自动化测试工程师在VSTT批量执行测试用例的时候,通常的步骤是通过执行下面这些步骤实现的:
a) 在VSTT里面打开测试工程文件。
b) 点击Visual studio菜单里的“测试(Test)”—> “窗口(Windows)”—> “Test List Editor”。
c) 展开“Lists of Tests”,勾上“Automation”这个用例列表(Test List),这样就选择了所有自动化的测试用例。如下图所示:
d) 最后点击Visual studio菜单里的“测试(Test)”—> “运行(Run)”—> “Tests in Current Context”,就可以运行所有的用例了。
前面已经讲到过,Visual Studio只不过是一个集成开发环境,基本上所有界面上的操作都可以使用命令行工具完成,例如编译程序可以使用msbuild.exe,调试程序可以使用mdbg.exe(当然Visual Studio的调试器是窗体程序,不是命令行程序),执行测试用例是通过Mstest.exe完成的。上面a,b,c,d四个步骤,可以使用下面这个命令实现:
mstest /runconfig:TestRunConfig.testrunconfig /testmetadata:Test.vsmdi /testlist:Automation /resultsfile: \TestResults\%SELENIUMHOST%_%ORCHARDSERVICE%_%1.trx
下表列出了上面的命令里使用的参数的意义。
参数名 | 说明 |
Runconfig | 当你在Visual Studio里创建了一个测试工程(Test Project),VS会自动在你的项目解决方案添加一个.testrunconfig文件。这个文件是用来配置执行一遍测试过程(Test Run)所需要准备的环境的。例如: l 测试用例是在本机执行,还是在其他机器上执行。 l 要拷贝的测试数据。 l 在所有测试用例执行前后要运行的命令—用来准备测试环境。 l 是否要进行代码覆盖率统计。 l 等等。 使用.testrunconfig的过程我会在后面讲到。 |
Testmetadata | VS除了添加一个.testurnconfig文件以外,它还会添加一个叫做测试用例元数据(test meta data)的.vsmdi文件。这个文件嘛,就像是所有元数据所标榜的那样,用来描述测试用例的信息。例如测试用例属于哪一个用例列表(test list)啦,测试用例的负责人(Owner)是谁啦等等。 .vsmdi文件的详细信息我也会在后面的文章中讲解。 |
testlist | 用例列表,通过这个参数,可以指定要执行的测试用例列表,用例列表是一个树形结构,即用例列表可以包含其他用例列表,具体的示例请看上图。 |
resultsfile | 测试用例执行完毕以后,测试结果文件保存的位置。 |
备注:mstest.exe的其他参数请参考MSDN文档:
http://msdn.microsoft.com/zh-cn/library/ms182489%28VS.80%29.aspx