使用 Coded UI 进行 UI 的自动化测试

jopen 10年前

介绍

曾经有一段时间,人们习惯于在MS Excel里面编写单元测试用例,然后开发人员就按照单元测试用例一步一步的来实现用例。这通常是很耗时的漫长的过程,尤其是如果应用很大或者UI很复杂的话。

这一套单元测试的执行过程常常成为瓶颈,因为任何代码修改都会带来手工执行大量单元测试,以确保新的修改没有破坏原有功能。

如今是个快节奏时代,人们希望工作能够无需人工介入、自动化的快速完成。每个人都喜欢执行一个命令就能把工作搞定,而且在执行期间不需要人工介入。需要做的仅仅是检查一下最终的输出结果。

当这个世界正在迈向自动化时,自动化测试也不甘落后,不论是在功能测试方面还是UI测试方面。每天我们都能听说自动化测试方面涌现出的新软件。

本文提供了一些信息给那些想用Coded UI自动测试框架来进行应用界面自动化的.Net开发者。

什么是Coded UI?

最近我一直在寻找一个自动化的用户接口测试的解决方案。用户接口测试需要用户多次进行手工输入操作,这是一个既枯燥又费时的过程。因此,我想寻找一种更智能的自动化UI测试的方案,这种UI测试在不需要人工干预下,能够被保存,记录并提供支持 ,快速测试代码的改变。

Coded UI 采用用户接口来驱动应用的进行自动化测试。这些测试包括UI控制的功能性测试。他们使你可以验证整个应用的功能是否正确,其中包括了用户接口。Coded UI尤其适合用于用户接口中存在校验或者其它的登录方式的测试,比如网页。Coded UI也可以用于人工测试用例的自动化。

Coded UI 测试帮助用户测试应用程序的用户接口。这些测试允许用户验证应用程序的功能。Coded UI 多数时间用于帮助验证在UI层本身的有效逻辑。它能够验证值对用户接口的控制的正确性。

其它方案

市场有许多自动化用户接口的方案,比如HP的QuickTest Professional, IBM Rational Functional Tester. 其它著名的,易于使用的开源工具解决用户接口自动化问题的有Selenium,也能够记录测试,需要的时候回放。市场上还有来自Microsoft的也能不需要太多努力做同样的事。用Visual Studio Microsoft还有Coded UI的方案用于单元测试。

Coded UI适合在哪儿用?

大多数安装了Visual Studio的开发者都喜欢在Visual Studio的环境里进行单元测试,而不是使用第三方工具。由微软提供的Coded UI,在Visual Studio环境里可谓上手即用。在开发者的机器上无需另外安装任何东西。一旦你安装了Visual Studio的Premium版或者Ultimate版,你就同时也安装好了Coded UI。

Coded UI可用性

为了使用Coded UI,需要安装Visual Studio 2010/2012/2013的Premium版或者Ultimate版。

Coded UI 测试的组成

Coded UI 测试的组成容易理解。它可分成下列文件:

UIMap.uitest

这个文件是UIMap类的XML表示。UIMap类包括视窗,控件,属性,方法,断言和动作。

UIMap.cs

对UIMap的自定义部分都存在这文件里。如果修改直接存在UIMap.designer.vb文件的话,那些修改都会在记录结束后丢失,因为这个文件重新创建了。

给每个在测应用程序中的每个模块创建一个独立的UIMap文件。

UIMap.Designer.cs

这是部分类表达各种类。这各种类是给多样的控件和他们的范围,属性,方法的类。

提示:不要直接修改 UIMap.Designer.cs。加入你这样做,这个修改会被覆盖掉。

CodedUITest.cs

这类表示的实际的CodeUI测试类,方法调用,和断言调用,所有的方法和断言默认都是从UIMap.Designer.cs文件调用的。这类有具有【codedUITest]属性TestClass和包含具有【TestMethod]属性的多种方法。

Coded UI的特性/好处

  • 进行用户界面测试的同时进行校验.

  • 生成VB.Net/C#代码.

  • 测试用例可以被记录和重放.

  • 集成了ALM Story

    • 能够作为每日构建的一部分来运行.

  • 根据需要进行高级扩展.

  • 和Visual Studio集成在一起,所以无需单独购买许可.

  • Coded UI对Web和Windows应用同样适用.

  • 著名的Microsoft支持.

创建Coded UI测试

Coded UI测试可以用下列方式创建

  • 使用MTM进行快速自动构建

  • 从现有的记录(从手动测试中记录下来的操作)中创建Coded UI

  • 在Coded UI Test Builder创建的底稿的基础上创建一个新的Coded UI测试.

  • 自己写Coded UI.

这个白皮书的范围仅限于“在Coded UI Test Builder创建的底稿之上创建一个新的Coded UI测试”。

小贴士: 尽量使用Coded UI Test Builder。

Coded UI Test Builder

每一个Coded UI测试的生成都需要遵从下列步骤.

  • 记录/停止/暂停

  • 编辑记录下来的步骤

  • 添加断言

  • 生成代码

创建Coded UI 测试

创建新的Coded UI 项目

要开始使用Coded UI,首先我们需要创建一个测试项目,用来保存所有Coded UI测试。创建一个新的Coded UI项目包含下列步骤

  • 打开Visual Studio 2012

  • 选择 File > New > Project

  • 选择需要的语言模板 (C# or VB.Net). 我们选择了C#.

  • 选择Coded UI Project

  • 输入一个名字

  • 点击 OK 按钮

添加 Coded UI 测试

Visual Studio默认配置为创建Coded UI 测试使用 "Generate a new Coded UI Test from scratch using Coded UI Test Builder"

提示在测试的应用程序中,当你创建UI控件时尽量使用有意义的名称,从而对于自动生成的控件显得更加有意义和可用。

一旦 Coded UI 测试工程创建完成,将会自动打开生成Coded UI 测试代码的对话框,请给出以下选项的设置。

  • 记录操作,编辑UI地图或添加断言

  • 使用一个已经存在的操作记录

默认情况下 选择记录操作,编辑UI地图或添加断言,无需做任何操作,然后点击 "ok"

Coded UI Test Builder

选择了上述选项后,Coded UI Test Builder就会被打开,同时Visual Studio窗口被最小化。这意味着我们已经为记录操作做好了准备。

正如之前描述的,Coded UI Test Builder基于下列4个操作来做记录

  1. Record Steps

  2. Update or Delete Steps

  3. Verify Results (Add Assertions)

  4. Generate Code

小贴士: 如果用户界面(UI)变化了,就重新记录测试方法或断言方法,或者重新记录一个既有测试方法中受影响的部分。

记录一个序列的操作.

记录一个操作主要需要下列几步.

  • Start Recording, 通过选择Record按钮即可.

  • Pause Recording, 用来处理记录过程中的其它操作,即Generate Code.

  • Edit/Delete 操作, 以防错误的操作被记录。

  • Generate code为记录下来的操作创建编号。会给每一个记录下来的操作都生成编号。

  • Add Assertions 用来校验结果。

小贴士: 创建断言最好使用Coded UI Test Builder,因为它会在UIMap.Designer.cs文件中自动添加一个断言方法。

为记录动作做计划

任何事情的成功都取决于它计划得有多好。较好地计划最大限度保证了任务成功完成。这样总是比较好,在开始记录动作之前,我们计划好所有的所有要计划的步骤。

这里我们将要使用应用程序Windows计算器来记录步骤。我们要自动地加和减两个数字。在记录加和减两个数字的时候,下面的步骤将会用到。

。点击“开始记录”控件

。到开始,点击执行

。在执行窗口,输入”calc"

。停止记录,看记录的步骤

。删除错误的步骤(存在的话)

。产生代码;提供和动作相匹配的名字。比如,打开计算器。

提示:当你产生一个方法时候,使用一个有意义的方法的名字,代替默认名字。

有意义的名字帮助识别方法的木的。

。重新记录,提供第一个数字,暂停记录产生代码

。重新记录,提供操作(加或者减),暂停记录,产生代码

。重新记录,提供第二个数字,暂停记录,产生代码。

。加断言

提示: 产生你的测试作为一系列记录的方法

提示: 可以的时候,限制每个方法小于10个动作。这模块化的方法让UI改变时候容易替换方法。

结论

我们已经看到了Coded UI可以使开发者的生活变得多么轻松,尤其是遇到每次都需要进行很多输入的复杂页面的时候。这时,测试用例只需要被记录一次,就可以按照需要执行任意多次。使用Coded UI比使用其它工具的好处是,它能自动适配Web页面和Windows窗口应用。Coded UI测试可以用Visual Studio 2010来运行,也可以用任何版本的VS来运行,它们的功能正变得越来越强大。无需多说,Coded UI是一个由技术领导者提供的强大工具,想要体验Coded UI测试的强大,我们应该开始在项目中使用它看看它能带来多少ROI,我确信Coded UI不会让你失望。

参考文章和延伸阅读…

http://msdn.microsoft.com/en-us/library/dd286726.aspx

http://msdn.microsoft.com/en-us/library/dd286681(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/ee624082.aspx