1、自动化测试的实践应用QTP测试框架目录1.1.自动化测试实施规划自动化测试实施规划2.2.自动化测试源于手工测试自动化测试源于手工测试3.3.基于功能分解的自动化测试框架基于功能分解的自动化测试框架4.4.使用使用TD+QTPTD+QTP管理测试脚本管理测试脚本5.5.测试自动化实现的两个难点测试自动化实现的两个难点1.1.功能分解功能分解2.2.WebWeb对象的识别对象的识别1.静态静态Web对象的识别对象的识别2.动态动态Web对象的识别对象的识别6.6.实例操作实例操作自动化测试实施规划阶段一:完成对结算和信贷主要业务的流程覆盖阶段二:完成对业务的校验和约束阶段三:应用到更多的业务中去
2、,规模扩大开发自动化测试框架,降低对测试工具的依赖 使用动作词的自动化测试第一层次第二层次第三层次层次阶段测试自动化程度自动化测试源于手工测试手工测试手工测试自动化测试自动化测试测试设计测试设计测试执行测试执行测试用例测试用例测试设计测试设计测试实现测试实现测试执行测试执行测试用例测试用例1 输入数据2 操作3 预期结果1 业务数据2 业务功能实现业务功能所占用的时间所占用的时间所占用的时间所占用的时间2022-8-105基于功能分解的自动化测试框架2022-8-106基于功能分解的自动化测试框架2022-8-107基于功能分解的自动化测试框架优点优点1.较为模块化(modular)的设计,避
3、免重复的脚本,减少建立或维护脚本的成本。2.在应用软件开发的同时,就可以同步进行脚本建立的动作,而且当应用软件功能变动时,只需要修改业务功能脚本。3.由于应用软件的功能已经被分解成独立的业务功能脚本,测试人员可以随意组合业务功能脚本成为更复杂多样的测试个案。4.测试输入数据与验证数据与脚本分开,储存在另外的档案,如纯文字文件或 Excel 文件,测试人员可以更容易修改与维护。5.透过判断 Action 回传值是 TRUE 或 FALSE,可以作错误处理,让脚本更有弹性。缺点缺点1.在编写业务功能脚本时,需要精通测试工具脚本语言的工程师。2.每个Action都会有自己的输入输出参数,需要用文档统
4、一维护,控制变更。3.测试人员除了要维护测试计划之外,还要另外维护数据文件。4.对测试工具以及脚本语言来说,使用数据文件可能也要注意数据文件的格式。2022-8-108使用TD+QTP管理测试脚本2022-8-109使用TD+QTP管理测试脚本TDTD管理管理QTPQTP脚本脚本1.QTP开发机连接TD服务器2.开发QTP脚本3.保存脚本到Test LabTDTD调度调度QTPQTP脚本脚本1.添加QTP脚本到Test Plan中2.QTP执行机连接TD服务器3.在执行机中运行Test Plan2022-8-1010测试自动化实现的两个难点测试自动化实现的两个难点测试自动化实现的两个难点1.设
5、计功能分解2.实现Web对象的识别2022-8-1011测试自动化实现的两个难点功能分解业务功能分解的原则和方法:清晰画出业务流程图根据业务流程分解业务功能,可以被复用的功能也要被分解出来。按照路径覆盖的思想,组织测试用例参见附件的业务流程分析2022-8-1012测试自动化实现的两个难点Web对象的识别静态静态WebWeb对象的识别对象的识别序号序号WebWeb对象对象推荐识别属性推荐识别属性方法方法1creationTime2index3name4name5nameSet6textClick7nameSelect8textClick9name10name11name12innertext/
6、html tag13text14text2022-8-1013静态Web对象的识别示例:示例:1.Browser(“creationTime:=0”).Page(“index:=0”).WebEdit(“name:=amount”).Set“1000”在第一个被创建的IE窗口,查找name属性为amount的输入框,输入数据10002.Browser(“creationTime:=1”).Page(“index:=0”).WebButton(“text:=保存”).Click 在第二个被创建的IE窗口,查找按钮,该按钮上显示的文字是“保存”,点击该按钮2022-8-1014静态Web对象的识别
7、creationTime,Index,LocationQuickTest QuickTest 可以使用三种类型的顺序标识符来标识对象:可以使用三种类型的顺序标识符来标识对象:索引(索引(index index):指示该对象在应用程序代码中相对于其他描述都相同的其他对象的显示顺序。QTP在录制和执行中,为测试对象属性分配一个值,以便唯一标识该对象。该值基于对象在源代码中的显示顺序。第一个出现的是 0。注意,index属性值是特定于对象的。因此,如果使用 Index:=3 描述 WebEdit测试对象,QuickTest 将在页中搜索第四个 WebEdit 对象。位置(位置(locationloc
8、ation):指示该对象在父窗口、框架或对话框中相对于其他描述都相同的其他对象的显示顺序。QuickTest 可以为对象的 location测试对象属性分配一个值,以便唯一标识该对象。该值基于对象在窗口、框架或对话框中相对于具有相同属性的其他对象的显示顺序。第一个出现的对象是 0。各列值的分配从上到下、从左到右。creationTimecreationTime(仅限于浏览器对象):指示该浏览器打开的顺序,相对于其他描 述都相同的其他打开的浏览器。如果 QuickTest 不能仅基于测试对象描述唯一标识浏览器对象,它将为“CreationTime”测试对象属性分配一个值。该值指示该浏览器打开的顺
9、序,相对于其他描述都相同的其他打开的浏览器。在运行会话期间,如果 QuickTest 不能只是基于其测试对象描述来标识某个浏览器对象,那么,它将检查浏览器的打开顺序,然后使用“CreationTime”属性标识正确的对象。2022-8-1015动态Web对象的识别Object Spy一个好助手Object Spy通过Object Spy可以查看到所需要识别的Web对象的所有属性值,挑选其中可以唯一识别该对象的一个属性或多个属性,对该Web对象进行描述。2022-8-1016动态Web对象的识别GetROPropertyGetToPropertyGetToProperty:Returns the
10、 value of the specified property from the test object description.GetTOProperties:Returns the collection of properties and values u s e d t o i d e n t i f y t h e o b j e c t.GetROProperty:Returns the current value of the test object property f r o m t h e o b j e c t i n t h e a p p l i c a t i o
11、n.举个例子:假 设 在 库 中 有 一 个 对 象 窗 口 A ,用 于 识 别 该 对 象 的 属 性 有 2 个,一 个 属 性 是 t e x t ,在 库 中 记 录 的 值 是 Q Q Q Q .另 一 个 属 性 是 n a m e ,记 录 的 值 是 M M 在 实 际 运 行 脚 本 时 属 性 t e x t 的 值 是 P P P P 而 不 是 Q Q Q Q 那么:Window(窗口A).GetToProperty(text)返回的是:QQQQWindow(窗口A).GetRoProperty(text)返回的是:PPPPWindow(窗口A).GetToPrope
12、rties(text)返回的是用于识别窗口A的两个属性和值的集合 2022-8-1017动态Web对象的识别对象、数组、String使用对象描述的方式来描述使用对象描述的方式来描述WebWeb对象对象Set oDesc=Description.Create()oDesc(“micClass”)=“Link”oDesc(“text”)=“01-0001”Browser().Page().oDesc.Click与这种方法搭配使用的是ChildObjectsChildObjects方法ArrayArray与与StringString的转换的转换str=join(myArray)str=join(myArray)myArray=split(str,”,”)myArray=split(str,”,”)StringString的几个比较有用的方法的几个比较有用的方法Instr(SearchString,SearchChar)Instr(SearchString,SearchChar)2022-8-1018实例操作银行付款业务的实现