VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(上)

  回顾

  在之前的入门篇系列中,分别介绍了一个简单的示例, 操作动作的录制原理通过修改UIMap.UItest文件控制操作动作代码的生成对象的识别原理。接下来正式进入我们UI测试的进阶篇,在这一章,将讲述如何初步通过自己编写代码的方式来建立UI测试。

  示例程序

  一个系统的基本功能是增,删,改,查,其中增和改界面基本一样,删就几乎是一个按钮的事,所以我做了一个程序示例(下载点我),拥有增和查两个功能,之后的操作都将会在这个示例之上进行:

  系统主窗口:

  该系统拥有两个功能,“添加用户”和“查询用户”,点击添加用户后,进入添加用户子窗体:

  这里添加用户的时候根据情况会出现以下几个提示框:

  “用户名不能为空”

  “已有重名用户”

  “备注不能为空”

  “添加成功!”

  如果在之前的主窗口,点击查询用户,则进入查询用户子窗体。

  注:系统默认自带了5个用户TestUser1, TestUser2, TestUser3, TestUser4, TestUser5。

  这个窗体不会弹任何提示框,默认进入窗体时,DataGridView里面没有加载数据,现在进行一个说明:

  查询条件-用户名:表示是否按用户名查询(非模糊查询),如果不输入,默认为不按其查询。

  查询条件-用户类型:有三个选项“所有”,“管理员”,“一般用户”。

  查询条件-日期:表示是否按日期查询,如果勾上了日期CheckBox,则旁边的DateTimePicker会启用,然后选择一个具体的日期。

  按钮-查询:就会按以上条件查询。

  按钮-重置:用户名清空,用户类型变成所有,日期取消勾选。

  文本框-用户备注:当查询出数据以后,每选择DataGridView里面中的一行数据,用户备注TextBox会自动加载当前行的用户备注。

  因为篇幅的关系,这里仍然分为上下两部分,上部分介绍添加用户窗体,下部分介绍查询用户窗体和测试之间的衔接。

  如何设计测试

  首先从前面的分析中,就可以得出添加用户实际上是检测是否有那些反例的弹出框弹出,然后正确添加用户,这里设计了一些检查点。

步骤序号

操作步骤

检查点

1

运行主程序exe

检测系统主窗口是否弹出

2

点击添加用户

检测添加用户子窗口是否弹出

3

输入用户名为空,用户类型选择“一般用户”,备注为空

检测是否弹出“用户名不能为空”

4

输入用户名为“TestUser1”(系统默认就已有该用户),用户类型选择“一般用户”,备注为空

检测是否弹出“已有重名用户”

5

输入用户名为“TestUser6”,用户类型选择“一般用户”,备注为空

检测是否弹出“备注不能为空”

6

输入用户名为“TestUser6”,用户类型选择“一般用户”,备注为“Test”

检测是否弹出“添加成功!”

7

点击取消按钮,并退出主窗体

检测是否退出添加用户子窗体和主窗体

  接下来要做的工作就很轻松,我们要将以上的检查点转换为代码。

  对测试进行编码

  实际上,很多自动化测试项目在编写的时候都是采用边录制边编写的方法来进行的,比如复杂的操作可以先录制下来,然后手工去改某些步骤,这里我们将采用这种方法。

  我们需要新建一个项目,然后在添加一个编码的UI测试映射,命名为AddUserUIMap.uitest,建立之后,录制生成器会自动弹出,这个时候,我们什么也不做,直接点击“生成代码”,这样VS2010就会自动生成AddUserUIMap.cs文件和AddUserUIMap.Designer.cs文件,在第二章(下)已经提到,自定义代码可以编写到.cs文件下,因为这里不会被覆盖。

  实现步骤1

  为了实现第一步检查点,首先我们需要捕获主窗体对象,首先我们需要打开示例程序,然后点击录制生成器的准星。

  从点击准星的那一刻起,按住鼠标不放,将鼠标挪动到主窗体直到主窗体被蓝色框选中,这个时候便可以松开鼠标。

  之后我们可以看到对象库中识别了该对象,现在点击对象库上面的“添加”图标,就可以将这个对象正式加入对象库:

  然后选择录制生成器的生成代码。

  之后对象识别代码就生成在了AddUserUIMap.Designer.cs。

  之后我们就可以进入AddUserUIMap.cs(注,这里是.cs,不是.Designer.cs),实现我们第一个步骤的代码Step1_LoginSystem()。

public void Step1_LoginSystem()
{
//操作步骤:假设程序在D盘,这句的作用是加载程序
ApplicationUnderTest.Launch(@"D:/TestDemo.exe");

//检查点:this.UI系统主窗口Window.WaitForControlExist(6000)的作用为,最多花6秒的时间等待UI系统主窗口Window出现,如果没有出现,返回false,如果出现了,则返回true
Assert.IsTrue(this.UI系统主窗口Window.WaitForControlExist(6000), "运行主程序exe,检测系统主窗口弹出失败");
}

NET技术VS2010 测试功能之旅:编码的UI测试(4)-通过编写测试代码的方式建立UI测试(上),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。