测试用例模板中的对象类型 QTP中的对象类型 作为对象名称的属性
Web 按钮 WebButton(Class Name) name
输入框 WebEdit(Class Name) name
图片 Image(Class Name) File name
链接 Link(Class Name) name
下拉框 Weblist(Class Name) name
单选按钮 WebRadioGroup(Class Name) name
复选框 WebCheckBox(Class Name) name
浏览上传输入框 WebFile(Class Name) name
表格 WebTable(Class Name) innertext
网页元素 WebElement(Class Name) innertext
WinButton WinButton(Class Name) text
WinEdit WinEdit(Class Name) attached text
Static Static(Class Name) text
SliverLight Slv按钮 button(slvtypename) devname
Slv输入框 edit(slvtypename) devname
Slv下拉框 combo box(slvtypename) devname
Slv单选按钮 radio button(slvtypename) devname
Slv文本块 TextBlock(slvtypename) parent text
Java Java按钮 JavaButton(to_class) attached text
Java输入框 JavaEdit(to_class) attached text
Oracle Oracle下拉框 OracleList(Class Name) description
Oracle输入框 OracleTextField(Class Name) description
Oracle复选框 OracleCheckbox(Class Name) description
Oracle按钮 OracleButton(Class Name) lable
Oracle单选按钮 OracleRadioGroup(Class Name) selected item
Oracle清单栏 OracleListOfValues(Class Name) title
OracleForm窗口 OracleFormWindow(Class Name) short title
OracleFlex窗口 OracleFlexWindow(Class Name) title
Oracle状态栏 OracleStatusLine(Class Name) error code
Oracle通知栏 OracleNotification(Class Name) title
1、 目的和范围
1.1目的
本文的目的是指导测试人员使用功能测试自动化工具iRobot进行自动化测试。
1.2范围
分类 适用iRobot 不适用iRobot
产品类型 Web类产品:
平台公共服务类产品,如:Jalor、SSO
IT应用类产品,如:CPP、CES
部分软件包产品:Oracle、SilverLight 非Web类产品:
C/S类的产品,如:ESPACE
无界面服务类产品
其他软件包产品
测试类型 功能测试(主要是回归测试) 单元测试、非功能测试
生命周期 产品生命周期长且还有多个版本规划(有大量回归测试需求) 产品生命周期较短的、一次性产品(无回归测试需求)
稳定性 功能相对稳定且界面改动比较少 功能经常改变、页面频繁变更
质量 质量要求较高的产品,如:业务重要、全球使用 质量要求不高的产品
其他 1、 逻辑判断较少的场景 1、 逻辑判断较多的场景,如:根据页面多个字段逻辑判断后执行操作
2、 工具简介
2.1工具简介
功能测试自动化工具iRobot旨在降低自动化测试的门槛, 实现测试用例与测试数据分离,通过用例自动转化技术,将合格的测试用例自动转化为测试脚本,在测试时按照测试数据模板输入测试数据,通过集中调度测试脚本和测试数据完成自动化测试。
2.2安装
1.下载最新版本到本地安装;
2.需要安装QTP/UFT;
3.需要安装IE,推荐的版本为IE8和IE9。其他浏览器暂不支持;
4.需要安装Office Excel,推荐的版本为2003和2007.
3、 编写测试用例
3.1测试用例编号
测试用例编号为必填字段,每个测试用例必有一个测试用例编号并且测试用例编号必须符合Window创建文件夹命名规范,不能含有特殊字符,如:“/”、“\”、“|”、“!”、“$”等,否则该用例步骤将不会被正常解析。如下图:
3.2是否自动执行
是否自动执行字段只能选择“Y”或“N”,“Y”表示该用例会被执行,“N”表示该用例不须要执行。只须要在每个用例的第一个步骤前填写该字段即可,如上图所示。
3.3父级对象
父级对象是为了指定须要被操作的对象所在的页面范围。父级对象的类型有很多,这里我们只须要用到产品中最常见的几种。
3.3.1Web类父级对象
1)B.P
Browser(……).Page(……),最常见的父级对象类型,一半Page后面就是具体页面某个元素了。例如:
上图中红色框类的“系统管理”链接,可以用QTP的Object Spy工具查看到它所在的父级对象,如下图:
可以看到“系统管理”所在的父级对象是Browse(„„).Page(„„)类型的,这种情况,我们就可以选择该父级对象为B.P类型,然后再来判断页面层级,若该页面是第一层页面,则选择B1.P,若为第二层页面,则选择B2.P,以此类推。
2)B.P.F
Browser(……).Page(……).Frame(……),这种类型通常出现在页面弹出的选择框中,如下图:
图中红色框类的弹出框是点击一个按钮弹出的,它就是一个Frame,用QTP的Object Spy工具查看此弹出框里的元素如下图:
可以看到此父级对象的类型为Browser(„„).Page(„„).Frame(„„),这种情况就选择B.P.F的父级对象类型,若弹出框是第一层页面弹出的,则选择B1.P.F,若是第二层弹出的,则选择为B2.P.F,依次类推。
3)B.W.P
Browser(……).Window(……).Page(……),这种类型普通出现在网页对话框,例如下图:
可以看到父级对象的类型为Browser(„„).Window(„„).Page(„„),这种情况选择父级对象类型为B.W.P,若为第一层页面则选择为B1.W.P,若为第二层页面,则选择为B2.W.P,依次类推。
4)B.D
Browser(……).Dialog(……),这种类型通常出现在如下图所示的场景:
可
以看到父级对象为Browser(„„).Dialog(„„),这种情况选择父级对象类型为B.D,若是第一层页面的弹出的对话框则选择为B1.D,若
是第二层,则选择为B2.D,依次类推。在涉及对话框Dialog的操作时,切记将Espace的聊天对话框关闭,不然会影响到对Dialog的操作。
3.3.2 SilverLight父级对象
加载了QTP的SliverLight插件之后便可识别出SilverLight类型的对象了。
3.3.3 Java类父级对象
加载了QTP的Java插件后便可识别到java类型的对象。
1)B.P.JA
2)JD
3.3.4 Oracle父级对象
加载了QTP的Oracle插件之后便可识别出Oracle类型的对象了。
1) OXW
2) OMW
3) ON
4) OMW.OT
5) OA
3.3.5填写规则
一般在用例的第一步都会指定父级对象,但不是每个步骤都须要指定父级对象,指定了父级对象的步骤及其以下的步骤都是共用相同的父级对象的,除非父级对象发生改变。
3.4对象类型与对象名称
查看对象的类型可以用QTP的ObjectSpy来查看,而对象名称是由对象的某个属性确定的,不同对象类型的对象使用不同的属性作为对象名称,其对应关系如下:
3.4.1按钮
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.4.2输入框
支持的操作
1) 单击
2) 输入
3) 检查是否存在
4) 检查属性
3.4.3图片
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.4.4链接
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.4.5下拉框
支持的操作
1) 单击
2) 选择
3) 检查是否存在
4) 检查属性
3.4.6单选按钮
支持的操作
1) 选择
2) 检查是否存在
3) 检查属性
3.4.7复选框
支持的操作
1) 单击
2) 输入
3) 检查是否存在
4) 检查属性
3.4.8浏览上传输入框
支持的操作
1) 单击
2) 输入
3) 检查是否存在
4) 检查属性
3.4.9表格
innertext 属性作为其对象名称,但是发现,其innertext属性很长,而且有一部分并不是固定的,所以我们可以只用在“对象名称”字段写上部分文字,并用“.*”进行匹配没有写完的文字,如:“选择.*”
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.4.10网页元素
QTP无法识别的Web对象都是网页元素
支持的操作
1) 单击
2) 检查属性
3.4.11 WinButton
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.4.12 WinEdit
支持的操作
1) 输入
2) 检查是否存在
3) 检查属性
3.4.13 Static
支持的操作
1) 单击
2) 检查是否存在
3) 检查属性
3.5识别属性
某些情况下,对象的默认识别属性,为空,或者与其他对象重复,这种时候就须要使用其它属性来作为他的名称,这种场景下,我们可以在“识别属性”字段填写上用户自己选取的属性,然后再在“对象名称”中填入对应的属性值
3.6序号
当同一个页面中有相同名字的对象时,可以用“序号”标识为第几个对象,按从左至右、从上至下的原则。当要选择最后一个对象时,可以用“序号”来标识也可以用“Last”来标识操作类型
3.7对象库的管理与应用
以上方法是通过对象的某个单一属性来描述对象。iRobot V2R01版本以后,同可以结合QTP本身的对象库来描述识别对象,本章节将介绍如何结合QTP的对象库来使用iRobot
3.7.1QTP对象库的引用
QTP自动化测试的原理是封装真实的被测对象并转化为QTP对象到对象库,回放时把被测对象的鉴别属性去和对象库里面的对象的鉴别属性进行匹配,如果结果一致则进行下一步操作,不一致则报错,提示无法识别对象。
1)录制生成
使用QTP的录制功能录制需要操作的那些界面的基本操作,录制完成后,打开对象库,对象库的打开有两种方式
一:快捷键Ctrl+R
二:QTP上方菜单栏→Resources→ ObjectRepository
2)手动添加(添加单个)
用QTP的对象抓取工具,Object Spy抓取想要添加的某个对象,然后单击加号。
3)批量添加
打开QTP对象库,QTP上方菜单栏→Resources→ ObjectRepository,单击绿色的加号。然后把抓取对象的箭头放在需要获取对象的页面上的任意位置,然后单击一下,选择最顶层,然后点击OK。然后出现几个可供选择的添加方式。
1、仅仅添加指定的对象。
2、添加默认的对象。
3、添加页面所有的对象。
4、选择需要添加的对象。
批量添加对象一般选择第二个,其余的选择用户可以自己一个个的添加,然后查看对象库增加前后有什么区别,大家就能够很好的明白這几个之间的区别。
3.7.2对象库的导出
对象库经常需要进行迁移,所以对象库的导出和导入是管理对象库中一个必不可少的环节。
一:对象库的导出
点击对象库上方菜单栏File,然后出现两个导出选项,第一个是导出到本地,第二个是导出到本地并且替换以前的对象库文件。导出的对象库文件保存后会自动以.tsr作为后缀名。
当我们导出对象库以后会发些对象库这些原来可以编辑的东西都变灰了,都变成了不可编辑的状态了。這个时候别急,這个时候我们就需要在Object Repository Manager中进行操作。
3.7.3对象库的维护
对象库导出后变成不可编辑状态,对象库的导入,往对象库里面添加对象这些问题将在Object Repository Manager中一一得到解决。
1、 对象的修改
有些时候一个对象库可能包含许多同名的对象,为了更好的区分這些对象我们需要对对象的逻辑名进行修改。
一:QTP上方菜单栏→Resources→Object Repository Manager
二:导入对象库文件
QTP上方菜单栏→File→Open,然后选择一个对象库文件
三:然后展现在我们面前还是一个不可编辑置灰状态,這个时候我们点击一下QTP菜单栏上的小铅笔,這个时候就会发现可以对name进行修改了,如下图所示:
四:然后就选择需要修改的对象,单击一下,就可以在右边的编辑栏对它的逻辑名进行修改了,也可以删除对象多余无用的识别属性,然后点击保存。
第一个红色框框为修改后的保存按钮,第二个为对象的逻辑名,第三个为删除按钮,删除无用或者多余的对象属性值,第四个是对象的属性值。
2、 增加对象
在测试过程中,可能录制的脚本有个对象没有录制进去,导致有步操作执行不下去,這个时候需要往对象库里面添加這个对象。
一、点击QTP菜单栏上的绿色的十字架,如下图所示:
二、然后就会出现一个一个小手,這个就是QTP的Object SPY的小手,然后把這个小手移动到需要抓取的对象上面,点击一下,然后点击OK:
然后我们就可以在对象库里面找到這个新添加的对象
三、另外一种添加对象到对象库里面的方法,进入Object Repository Manager后,点击Object SPY這个小侦探。
然后把小手放到需要添加的对象上面,然后就侦探到這个对象的属性,然后点击小加号:然后就可以在对象库中看见新增的這个对象了
3、 删除对象
进入对象库,选择需要删除的对象点击删除按钮删除。
4、合并对象库
在
实际工作中编写用例,可能一个脚本需要多个人在编写,编写完成后需要整合,這个时候对象库也需要进行合并,首先进入QTP对象库合并的界面,方法如
下:QTP上方菜单栏→Resources→Object Repository Manager→Tools→Object Repository
Merge Tool,点击之后会弹出一个对话框New Merge,选择需要合并的对象库文件Primary file和Secondary
File然后点击OK(如果需要多个对象库合并,则两两合并完后再把合并后的对象库文件和别的对象库文件用同样的方法进行合并)。接下来会弹出一个
Statistics的对话框,在对话框的右边是需要合并的两个对象库的信息,左边是合并后的对象库信息。然后点击Close按钮,然后点击保存另存为,
输入新对象库的名称,合并后的对象库生成。
3.7.4在iRobot中引用QTP的对象库
1、对象库文件的存放
对象库文件必须保存在iRobot安装目录的OR及其子文件夹下,建议以OR为根目录,新建一个文件夹(以产品名来命名),作为对象库文件的存放路径,文件的命名最好按照产品组名称和项目的模块名来命名。
2、选择对象库文件
建立测试用例模板与对象库之间的对应关系,一个EXCEL只能选择一个对象库,一个对象库可以被多个对象库调用。
首先需要选择一个对象库文件,启动宏Excel宏功能以后单击模板左上方的选择对象文件,然后选择OR路径下的对象库文件。(点击选项来启动宏)
然后单击Excel模板上的选择对象這一列,就会弹出一个选择框,就可以选择封装好的某个对象了(第一次点击选择对象的时候会卡住一小会是正常现象因为這个时候正在读取对象库文件)
3、选择对象
3.7.5正则表达式
当获取的对象属性是动态变化的时候,這个时候就需要用到正则表达式也就是模糊匹配,如下图的html id的属性的_0是动态变化的。这种情况就需要用到正则表达式。
点击<#>图标,然后会弹出一个正则表达式的弹出框,把Regular expression勾选上,把红色框框里面的_0去掉用.*替代,然后点击OK,如下图所示:
3.8操作类型
操作类型字段为测试用例的必填字段,每个步骤必须填写操作类型
3.8.1. 打开网址
关闭当前桌面上所有浏览器,并打开新的浏览器,进入指定网址
3.8.2. 新开网址
新打开一个浏览器,并进入指定网址
3.8.3. 关闭指定浏览器
关闭指定的浏览器,根据指定的父级对象来关闭浏览器,所以父级对象字段必填
3.8.4. 关闭所有浏览器
关闭当前桌面上存在的所有浏览器,其他字段可以不用填
3.8.5. 最大化浏览器
最大化当前桌面上所有浏览器,其他字段不用填
3.8.6. 最小化浏览器
最小化当前桌面上所有浏览器,其他字段不用填
3.8.7. 刷新浏览器
刷新指定的某个浏览器。
3.8.8. 回退浏览器
回退指定的某个浏览器
3.8.9. 页面跳转
在某个浏览器上进行页面的跳转,跳转到指定的网址
3.8.10. 清除IE缓存
3.8.11. 中英文转换
对浏览器的中英文环境进行转换操作
3.8.12. 执行SQL语句
对数据库中的表进行增,删,改操作
上图“对象名称”字段填写的信息依次为数据库的类型(目前只支持Oracle,DB2),数据库账号,数据库密码,和数据库连接串(TNS),“操作值”字段为需要操作的SQL语句。注:(TNS和SQL语句不能包含换行符)
3.8.13. 去掉首尾空格
去掉一个字符串首尾空格
3.8.14. 比较
比较两个数值是否相等
3.8.15. 加
需要计算几个数值相加的时候,可以用数值相加这个操作,具体见下图:
以上是先获取表格里面的数值设置成变量,然后再进行数值相加,相加后得到的和会保存在SaveValue里面,最后和预期的数值进行比较。
3.8.16. 除(百分比)
需要获取两个数相除后的值,可以使用除百分比这个操作,具体见下图:
3.8.17. 截取字符串(左)
取得左边几位的字符串,并保存在SaveValue临时变量里面
3.8.18. 截取字符串(右)
取得右边几位的字符串,并保存在SaveValue临时变量里面
3.8.19. 截取字符串(中)
3.8.20. 键盘操作
键盘操作是完全模拟对键盘的按键操作的(锁屏的情况下不能进行键盘操做)
上图是对网页进行Alt+F4的操作,下图是常见的部分键盘操作的按键和代码的对应关系,键盘操作都是用{}括起来的。
3.8.21. 单击
1) 普通对象
2) 存在于动态表格中的对象
若对象存在于动态表格中,且无法使用某个属性唯一标识,则使用此操作,进行点击,若要对上图中红色框内的图片进行点击操作,按照如下步骤操作:
用Object Spy查看该表格的“innertext”属性:
然后在测试用例模板中填写如下:
上图意为,点击“DicTable”表格中,“CVE-test-0001”关键字所在行,第6列,单元格中第1个图片。
其
中“对象名称”字段由4个参数组成:1)DicTable(表格的名称html
id属性);2)CVE-test-0001(行关键字);3)6(图片所在的列数);4)1(图片所在单元格中的序号),4个参数用英文的逗号“,”隔
开。第2个参数,也可以填写行数,但是须要加上“#”关键字,例如:DicTable,#2,6,1
3.8.22. 单击(模拟鼠标操作)
当“单击”操作无法进行点击,可以使用“单击(模拟鼠标)”这种操作(尽量少使用这种方法,因为当电脑锁屏时候鼠标的光标是没有的,会导致这一步骤失败,如果大量使用这种方法鼠标光标会经常移动导致自己无法操作)如下图:
3.8.23. 单击(DD)
单击Windows弹出框的保存时候,有时候会发现使用单击有时候会点击不到,
所以在处理这种单击Windows弹出框的时候,可以使用单击(DD),Windows弹出框和单击(DD)的具体用法见下图:
3.8.24. 右击
右击某个对象
3.8.25. 输入
1) 普通对象
向对象输入值
上图意为,勾选“status”复选框,注意,若是“复选框”的输入操作,那么“操作值”只能输入“On”或者“Off”,“On”代表勾选,“Off”代表取消勾选。
2) 存在于动态表格中的对象
若对象存在于动态表格中,且无法使用某个属性唯一标识,则使用此操作向对象中输入值,如
若要向图中红框内的输入框输入数据“test1”,则按照以下步骤操作:
用Object Spy 查看此表格的“innertext”属性,如下图:
然后在测试用例模板中可以如下输入:
意
思为,向“IntDemandSourceList
Maintenance”表格中,“MDSMXGLIST”所在行,第3列单元格中的第一个输入框中输入值“test1”。“对象名称”字段一共由4个参
数组成:Tablename,RowKey,ColNo,Index,他们之间用英文的逗号“,”隔开。第一个参数代表对象所在表格的名称(html
id属性),第二个参数代表 行的关键字,第三个参数代表
所在列数,第四个参数代表,对象存在于单元格中的序列。其中第二个参数也可以用行数来表示,但是须要加上“#”关键字,例如:
table_IntDemandSourceList,#2,3,1
意为,向“table_IntDemandSourceList”表格中,第2行,第3列单元格中的第一个输入框中输入值“test1”
3) DOJO对象的输入
DojoFilterComboBox的默认识别属性为html id。
3.8.26. 选取日期1
“选取日期1”是用于使用日历控件选取日期的操作,目前只支持如下类型的日历控件