题外话:昨天去上海浦东机场接闺女, 一切还是蛮顺利的,公交机场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. 启动计算器程序;
  2. 点击数字"1";
  3. 点击"+"号;
  4. 点击数字"9";
  5. 点击"="号。

注意:"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,自动生成测试用例代码,如此的生成的测试用例就直接可以执行,生活的代码如下所示:

[c-sharp] view plaincopy
  1. [TestMethod]
  2. public void CodedUITestMethod1()
  3. {
  4. // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
  5. this.UIMap.Launchcalculator();
  6. this.UIMap.Setaugend1();
  7. this.UIMap.Clickplussign();
  8. this.UIMap.Setaddend9();
  9. this.UIMap.Clickequalsign();
  10. }

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年好运气!

参考资料:

  1. Channel9 CodedUI Test and Playback
  2. Understanding the code generated by “Coded UI Test” – Part 1
  3. Understanding the code generated by “Coded UI Test” – Part 2
  4. Visual Studio UI Automation Testing (includes CodedUI) Forum
  5. Junhua Chen's Blog
  6. Best practice for coded UI tests
  7. [Video] VSX211:VSTS 2010 Team Test
  8. How does "Coded UI test" finds a control?
  9. MSDN : Testing the User Interface with Automated UI tests

转载于:https://www.cnblogs.com/vmyspace/archive/2012/03/05/2380007.html

VS 2010 测试功能学习(七) - RnP与Coded UI自动化测试相关推荐

  1. VS 2010 测试功能学习(八) - RnP与Coded UI测试(继续篇)

    题外话:CSDN博客不能上传图 片已经有一周多了,以前的博客内容中的图片仍然是"图片审核中..."状态,没关系,咱是中国网民,咱最大的优点就是能忍!图片不能传,咱继续发文字内容 的 ...

  2. 一起谈.NET技术,VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(下)...

    回顾 在本章上部分介绍了操作动作的录制原理,描述了操作动作是如何录制,UIMap.uitest和UIMap.Designer.cs的代码如何生成,以及他们的结构.在这个部分,将着重说明如何通过修改UI ...

  3. 【转】VS2010测试功能之旅:编码的UI测试(2)-操作动作的录制原理(上)

    VS2010测试功能之旅 --编码的UI测试系列之二:操作动作的录制原理(上) RealZhao,2011年2月18日 回顾 在之前我们介绍了如何用VS2010的UI测试功能创建一个简单的示例,大致描 ...

  4. VS2010测试功能之旅:编码的UI测试(6)- 提高UI测试稳定性的8个方法(下)

    VS2010测试功能之旅 --编码的UI测试系列之六:提高UI测试稳定性的8个方法(下) RealZhao,2011年5月11日 回顾 在之前,我们介绍了提高UI测试稳定性的8个方法的前6个,接下来介 ...

  5. VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式“.NET研究”建立UI测试(下)...

    回顾 最近比较忙,距离上次更新的时间较久,见谅. 在本章上部分,介绍了"添加用户"窗口的测试代码编写.想必大家也看到了,在UIMap.cs文件中实现自定义编码是一件很轻松的事情,接 ...

  6. 一起谈.NET技术,VS2010测试功能之旅:编码的UI测试(3)-操作对象的识别原理...

    回顾  在之前的两章分别介绍了一个简单的示例, 操作动作的录制原理,通过修改UIMap.UItest文件控制操作动作代码的生成.想必大家对编码的UI测试操作动作的录制应该有一定了解了,在UI操作中,操 ...

  7. 测试:VS2010的Coded UI Test参考内容列表

    本篇是一个内容索引,对测试不感兴趣的可以马上飘过:)前几篇IronRuby的文章都是围绕着自动化测试来写的,这个测试框架使用了微软的CodedUI Test的几个dll功能来写的.学习任何新的技术和事 ...

  8. Coded UI Test中的数据驱动测试

    有关什么是Coded UI Test以及如何使用Coded UI Test可以查看我的另一篇文章:http://www.cnblogs.com/jaxu/p/3706652.html 本文主要介绍如何 ...

  9. 在Visual Studio 2010中实现数据驱动Coded UI Tests

    通常情况下,我们要与不同的数据值一起重复一个测试.这个"数据驱动"在Coded UI Test中非常容易的.在本例子中,我们创建了一个Coded UI Test,以验证在计算器的两 ...

最新文章

  1. 当一个序列满足对于任意的前 项和都满足不小于_时间序列分析第01讲--平稳序列(基本概念,线性平稳序列)...
  2. C#类中的internal成员可能是一种坏味道
  3. 牛客假日团队赛8:H.Cell Phone Network(最小支配集)
  4. qt中实现左右分割线_Qt项目中,实现屏幕截图并生成gif的详细示例(值得细读)...
  5. Python QT5
  6. asp多表查询并显示_高级子查询
  7. 星巴克人造肉产品来了,植物牛肉餐品真香?
  8. Ngrok让你的本地Web应用暴露在公网上
  9. db2:根据TABLEID找table
  10. 未来5-10年计算机视觉发展趋势
  11. 从0开始的视频特效制作之路
  12. Period、Duration计算时间间隔
  13. 【P5385】【Cnoi2019】须臾幻境(LCT)
  14. adb命令重置_Android ADB 常用命令
  15. springBoot整合sftp
  16. Vue 3 之什么是 解包
  17. QQ号转换成16进制登陆
  18. 2021年中国股票市场成交情况、政策调整与股票市场异常波动及政策建议分析[图]
  19. hbuilderx如何去除结尾黑字LF,CRLF
  20. linux qq 提示错误,linux QQ使用实践兼wine QQ2013版本太低无法使用解决办法

热门文章

  1. 机器学习实战(入门级) ------ Kaggle 泰坦尼克号幸存者预测 (随机森林,KNN,SVM)
  2. Maven自动更新SNAPSHOT包
  3. DBA的工作职责是什么?
  4. python自然语言处理—Teacher Forcing
  5. “单向网闸”技术介绍-网络隔离的新型产品
  6. CountDownLatch、CyclicBarrier实战场景分析(附代码)
  7. 服务器kvm切换器维修,服务器数字KVM切换器
  8. gis合并dem数据_arcgis如何制作DEM数据
  9. bd青鸟Java宠物商店2017
  10. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)