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

上一篇 / 下一篇  2012-03-30 10:19:29 / 个人分类:VS2010功能测试

示例程序介绍

系统主窗口:(下载点我

该系统拥有两个功能,“添加用户”和“查询用户”

点击添加用户后,进入添加用户子窗体:(“添加用户”窗口的测试代码编写在上部分已经实现

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

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

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

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

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

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

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

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

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

如何设计测试

现在需要明确的就是,我们既需要检查“查询用户”窗口的基本功能,又需要确定之前在“添加用户”窗口添加的用户是否被添加了进来,所以这里的检查尤其重要,根据刚才的功能描述,现在需要编写测试设计。(在看下面的设计之前大家可以先试着自己设计下)

自动化测试,关键不在技术,而是在测试设计上,所以这里需要设计得比较全面

步骤序号

操作步骤

检查点

1

在主窗口菜单点击用户查询

检测查询用户子窗口是否弹出

2

用户名为空,用户类型为“所有”,不勾选时间,点击查询,记录查询出的用户行数,程序默认选中第一行,这时我们选中第二行

检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致

3

加的用户,其他条件不变,点击查询(例如,在上个部分的示例中,我们使用的是”TestUser6”)

查询出用户名为TestUser6的一条数据

4

用户名为一个不存在的用户“testuser100”,其他条件不变,点击查询

未查询出数据

5

将用户名设置为空,其他条件不变,用户类型为“管理员”,记录查询出的行数

查询出所有为“管理员”的用户(注,为了方便,这里没有使用从数据库比对,而只使用查询条件与查询出的数据比对,实际项目中可能使用数据库比对)

6

将用户类型设置为“一般用户”,其他条件不变,记录查询出的行数

查询出所有为“一般用户”的用户

7

使用刚才用户类型分别为“所有”,“管理员”,“一般用户”查询出的数据行数,进行比对

一般用户行数+管理员用户行数=所有用户行数

8

用户名为空,用户类型为“所有”,勾选时间,并进行选择“2008-1-11”

查询出所有添加时间为“2008-1-11”的用户

9

将条件设置为刚才我们在添加用户窗口添加的用户信息(使用我们在上一个示例中使用的值,如”TestUser6”,”一般用户”,时间为添加时间,时间这个需要用到某个变量来记录

查询出对应的一条数据

10

点击重置按钮

用户名为空,用户类型为“所有”,不勾选时间

11

点击退出

退出窗口

接下来将以上的检查点转换为代码

对测试进行编码

我们可以接着上次录制的代码来编写,因为在上个部分对于某些编写方式(例如先捕获对象再编写和先录制再转移修改的方式)已经描述得很详细了,下面默认使用这些方式,因此就不一一阐述对象的捕捉过程了。这里只介绍上个部分没有介绍的注意点和和给出主要代码。

由于是接着上个部分的代码写,这里需要注释掉AddUserUIMap.cs中Step7_CloseWindows的两句代码,以免他在测试结束后将主窗口关闭掉:

1publicvoidStep7_CloseWindows()
2{
3//操作步骤
4boolisClosed;
5Mouse.Click(this.UI添加用户Window.UI取消Window.UI取消Button,newPoint(1,1));
6//和WaitForControlExist相反,这里是最长等待他3秒关闭,如果3秒内关闭返回true,否则为false
7isClosed=this.UI添加用户Window.WaitForControlNotExist(3000);
8//这里添上了注释,以免将主窗口关闭掉
9//Mouse.Click(this.UI系统主窗口Window.UI系统主窗口TitleBar.UICloseButton, new Point(1, 1));
10//isClosed &= this.UI系统主窗口Window.WaitForControlNotExist(3000);
11
12//检查点
13Assert.IsTrue(isClosed,"点击退出,检测是否退出添加用户子窗体和主窗体失败");
14}

接下来,我们通过在项目中添加新项的方式新建一个SearchUserUIMap.uitest,在这个UIMap的.cs中来编写我们对于“查询用户”这个窗口的操作

实现步骤1

步骤序号

操作步骤

检查点

1

在主窗口菜单点击用户查询

检测查询用户子窗口是否弹出

相信这个很简单,两下就可以通过录制然后修改的方式编写出来:

1publicvoidStep1_ClickSearchUser()
2{
3WinMenuItem uI查询用户MenuItem=this.UI系统主窗口Window.UIMenuStrip1MenuBar.UI用户管理MenuItem.UI查询用户MenuItem;
4//操作步骤:Click '用户管理' -> '查询用户' menu item
5Mouse.Click(uI查询用户MenuItem,newPoint(1,1));
6
7//检查点:检查查询用户子窗口是否弹出
8Assert.IsTrue(this.UI查询用户Window.WaitForControlExist(6000),"点击查询用户,检测查询用户子窗口弹出失败");
9}

实现步骤2

步骤序号

操作步骤

检查点

2

用户名为空,用户类型为“所有”,不勾选时间,点击查询,记录查询出的用户行数,程序默认选中第一行,这时我们选中第二行

检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致

这一步需要注意的就是,首先这里有一个选行的操作,然后需要从表里单元格当中取值,最后与文本框的值进行比对,这里之所以需要记录这个RowCount,是因为在步骤7的时候会用于比对,

这里需要用准星首先捕获到这个GridViewTable,然后将其添加到对象库:

然后才开始录制并编写代码,如下

1publicintAllUser;//注意,这里留一个字段来保存行数
2
3publicvoidStep2_SearchWithOutCondition()
4{
5WinButton uI查询Button=this.UI查询用户Window.UI查询Window.UI查询Button;
6//操作步骤
7Mouse.Click(uI查询Button,newPoint(1,1));//Click '查询' button
8System.Threading.Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时
9AllUser=this.UI查询用户Window.UIUserGridViewWindow.UIDataGridViewTable.Rows.Count;//获取行数
10WinRow row2=this.UI查询用户Window.UIUserGridViewWindow.UIDataGridViewTable.Rows[1]asWinRow;
11Mouse.Click(row2.Cells[0],newPoint(10,10));//点击第二行第一个单元格,用以将第二行其选中
12System.Threading.Thread.Sleep(1000);//等待1秒,应付可能出现的查询延时
13
14//检查点:检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致
15Assert.AreEqual(this.UI查询用户Window.UITbx_MemoWindow.UITbx_MemoEdit.Text,((WinCell)row2.Cells[4]).Value,"检测“用户备注”一列的值是否和下方的“用户备注”文本框的值一致失败");
16}

实现步骤3

步骤序号

操作步骤

检查点

3

用户名为刚才我们在添加用户窗口添加的用户,其他条件不变,点击查询(例如,在上个部分的示例中,我们使用的是”TestUser6”)

查询出用户名为TestUser6的一条数据

步骤3和步骤4是对用户名这个维度来进行测试,需要和上一个模块对接,因为在上一个模块添加了一个用户,所以这里需要检查是否能够查询出来,需要确定的就是RowCount=1并且第一行第一列数据为”TestUser6”才算正确,代码如下

1publicvoidStep3_SearchWithUidOnly()
2{
3stringNewUser="TestUser6";
4WinEdit uITbx_UserNameEdit=this.UI查询用户Window.UITbx_UserNameWindow.UITbx_UserNameEdit;
5WinButton uI查询Button=this.UI查询用户Window.UI查询Window.UI查询Button;
6//操作步骤
7uITbx_UserNameEdit.Text=NewUser;
8Mouse.Click(uI查询Button,newPoint(1,1));//Click '查询' button
9System.Threading.Thread.Sleep(3000);//等待3秒,应付可能出现的查询延时
10
11//检查点:查询出用户名为TestUser6的一条数据
12boolisValid=1==this.UI查询用户Window.UIUserGridViewWindow.UIDataGridViewTable.Rows.Count;

TAG: codedUI 测试

 

评分:0

我来说两句

Open Toolbar