题外话:昨天去上海浦东机场接闺女,一切还是蛮顺利的,公交机场7线直接从上海火车南站一站直达浦东机场,票价20元,算上乘坐地铁5号和1号线的6元,从我家到机场总共要26元,相对于打的士的220元,还是实惠很多的。在新的上海轨交图上,看到地铁2号线延伸到了浦东机场,只是现在这段还没有通车。机场7线是在地铁3号线的上海南站站2号出口附近,可是俺是乘坐1号线到上海南站的,需要经过换乘通道到3号线的上海南站站才能找到2号出口,稍费了些周折。
Coded UI Test (CUIT) 英文资料大全 - Content Index for Coded UI Test
如果有机会看一看Visual Studio 2010 Team System的《新功能介绍》,你会发现它对于测试部分的改进一共包含了七大项内容,如下图所示。在我的前一篇CSDN个人博客中介绍了什么是MTLM。本篇将介绍一下《Record manual test steps and replay them during a future test run》和《Create automated UI tests》,前者实际上就是RnP(Record and Playback,录制和播放),后者则引入了一个Coded UI Test(也简称为CUIT)工程模版,用来创建直接对界面进行操作测试用例。
我个人认为,这哥俩儿应该是VS2010测试部分的一大亮点,它们让VS真正具有了更完善的UI自动化测试支持。从功能实现上看,它是微软的RnP,但是由于和TFS相结合,将手工测试用例和自动化界面测试用例有机结合了起来,同时有着强大界面自动化库的支持,测试人员可以使用C#或者VB.NET开发测试用例,这些都使得它们较其他的RnP工具更具实用性和竞争力,呵呵!
由于它们关系紧密,所以把它们一起介绍,他们主要是关于如何把手工执行的测试用例过程用代码自动记录下来,并可以自动执行,并在需要的时候生成自动测试用例。本文将通过一个计算器加法功能 "1+9 = 10" 测试的实际例子,来介绍一下这两个功能是如何实际中应用的,大概的步骤如下:
Step 1 - 在MTLM中创建一个测试计划 Step 2 - 添加一个计算器加法功能的手工测试用例到测试计划 Step 3 - 执行测试用例并记录执行步骤 Step 4 - 播放测试用例 Step 5 - 手工测试用例转化为自动化测试用例 Step 6 - 添加验证步骤 |
Step 1 - 在MTLM中创建一个测试计划
运行Microsoft Test and Lab Manager (MTLM)工具,连接到你的Team Foundation Server(TFS 2010)和相应的工程,创建一个新的测试计划(Test Plan)- "CalculationTestPlan",如下图所示。为了便于分类管理,我在CalculationTestPlan下面又创建了一个"Calculator UI Tests"的子目录(Test Suite),用来专门存放计算器UI相关的测试用例,现在它下面还是空的。 (如果大家对MTLM还不是很了解,请参见我在CSDN上的博客《VS 2010 测试功能学习(一) 新老Logo》)
Step 2 - 添加一个计算器加法功能的手工测试用例到测试计划
右键选择"Calculator UI Tests"节点,在弹出的上下文菜单中选择"New test case",创建一个新的测试用例项,它实际上是在TFS创建了一个新的Test Case工作项。如果已经有了Test Case,则可以选择"Add test cases"。在测试用例项中,最重要的内容就是要在"Steps"页下填写详细地描述测试步骤,以及每一步的期盼结果。这里使用的测试用例是 :1 + 9 = 10,其步骤描述如下图所示,对于这个简单的测试用例给出了五个测试步骤:
- 启动计算器程序;
- 点击数字"1";
- 点击"+"号;
- 点击数字"9";
- 点击"="号。
注意:"Automation Status"项默认被设置为"Not Automated",表示这是一个手工测试用例。在我们将一个测试工程中的测试用用例方法关联到它的是否,会被自动设置为"Automated"。
测试用例的描述步骤应该是尽可能的详细,如果一个不是很了解你的产品测试人员,也能够根据你的测试步骤能够轻松地执行它,那说明是足够详细了。从另外一个角度去理解,测试用例应该被当作是最准确的产品文档或者设计说明来对待。
Step 3 - 执行测试用例并录制执行步骤
在MTLM上的Testing Center中,切换到Test页,然后选择"Calculator UI Tests"节点,右键选择我们刚刚创建好的"Test case #338 – Basic calculator test',并在上下文菜单中选择"Run"。
在执行测试用例的开始窗口中选择"Create action recording",这样手工执行每一个步骤的操作过程就会被工具记录下来,并能够由此生成程序代码,非差酷吧,呵呵!
选择"Start Test"开始测试,每完成一个测试步骤后,根据结果将相应的步骤标为"Pass“或者"Fail',如下图所示。在所有测试完成后,选择"End test"结束测试,并保存测试收集的数据。
注意:在录制和保存录制的结果之后,如果对测试步骤进行了修改,如添加或删除步骤、或者参数,则需要从新录制。当你再次Run测试用例时,会提示: The action recording cannot be loaded for the test "My first test case".
Changes have been made to the test steps or parameters for this test after the action recordings were created. To include the changes, you must create the action recording again.
Step 4 - 播放测试用例
在录制好了之后,播放是一个非常简单的,在Play菜单中选择"Play all",播放刚才录制的所有步骤,"Play"则是用来播放某一步的录制内容,你也可以把测试步骤中能够录制的步骤录制下来,采用“手工+播放”的方式来执行一个测试用例。这样的好处是,即使你的用例不能被整体自动化,也可以自动化其中可以自动化的(Automatable)部分,在很多情况下这样办自动化的测试用例,比去全手工的执行效率还是要高的,呵呵!这个功能也称为 "Fast Forwarding for manual test”。
Step 5 - 转换测试用例为自动化测试用例代码
录制好一个测试用例后,利用Visual Studio可以将它转换为CodedUI自动化测试用例代码。在Visual Studio中创建一个测试工程项目,然后添加一个Coded UI Test测试项,命名为"CalculatorBasic.cs",如下图所示。
在弹出的"Generate Code for Coded UI Test"对话框中选择"Use an existing action recording"项目,以启动录制信息到代码的转换功能,如下图所示:
在随后的对话框中选择测试用例#338,自动生成测试用例代码,如此的生成的测试用例就直接可以执行,生活的代码如下所示:
Step 6 - 添加验证步骤
我们在MTLM中创建的测试用例和录制的手工执行步骤,对于一个真正的自动化测试用例而言,实际还缺少了很重要的一步操作,那就是验证。因为之前我们测试用例是手工测试,在执行时候实际上是靠测试人员去验证了执行的结果,然后判断和标识每一步执行结果是Pass还是Fail。所以现在生成的CodeUI测试用例虽然能够运行,但缺少一个对结果验证的步骤,也就是验证1+9的结果是否=10 ?,再具体到计算器本身,就是要验证计算器显示窗口中的内容是否为10,如下图所示。
添加验证操作的步骤很简单,鼠标右键点击测试用例代码中需要添加验证的代码行,在上下文菜单中选择"Generate Code for Coded UI Test" –> "Use Coded UI Test Builder...",这时在整个桌面窗口的右下角会出现一个小窗口,如下图所示:
把第三个"Crosshair"按钮拖放到计算器10的显示位置,在"Coded UI Test Builder"对话框框中右键DisplayText = 10,执行"Add Assertion...",如下图所示。
最后选择生成代码按钮并制定验证方法的名称,工具会自动生成一个验证DisplayText == 10的代码,一个有步骤有验证的Coded UI测试用例就这样完成了,够强大吧,呵呵!
这里仅是介绍了Coded UI Test的一些使用操作,应该只算是些皮毛。对于Coded UI来说,真正强大应该是其背后的自动化界面操作支持类库,它能够真正完成对界面的操作,并允许用户在其上编写程序代码(C#、VB)开发测试用例。
总算是把文章传上去了,不知道是网络的问题,还是CSDN博客系统出了问题,上传图片的操作特别慢而且还经常出现错误,元旦写篇博客也着实不易啊!今天报道说北京下了暴雪,明天是元旦节后第一天,估计上班的朋友会更不容易。不过瑞雪兆丰年,祝大家2009年好运气!
参考资料:
- Channel9 CodedUI Test and Playback
- Understanding the code generated by “Coded UI Test” – Part 1
- Understanding the code generated by “Coded UI Test” – Part 2
- Visual Studio UI Automation Testing (includes CodedUI) Forum
- Junhua Chen's Blog
- Best practice for coded UI tests
- [Video] VSX211:VSTS 2010 Team Test
- How does "Coded UI test" finds a control?
- MSDN : Testing the User Interface with Automated UI tests