版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、QTP工具应用初级培训,测评中心,刘德,课程概述 - you will know in next 2 hours,测评中心,1.QTP简述 *1.1录制与回放 *1.2熟悉QTP工作环境,2.QTP工作原理 *2.1关键字驱动测试(Keyword-Driven testing),3.脚本优化 *3.1调试 *3.2参数化 *3.3检查点 *3.4使用对象方法 *3.5描述性编程 *3.6自定义函数 *3.7执行与报告,1.QTP功能简述,测评中心,1.1录制与回放 录制准备工作 *明确需要录制的操作,准备好所需要的数据 *关闭已经打开的浏览器,关闭一些不必要的其他程序,1.QTP功能简述,测评
2、中心,打开QTP,new一个test, 在AutomationRecord and Run Settingweb选项卡中设置需要录制的地址:,1.QTP功能简述,测评中心,单击Recod 按钮,QTP会自动打开被测站点,在被测系统上进行操作,结束后点stop,QTP将自动生成脚本代码 :,保存脚本.点击run按钮,观察代码自动回放的结果,1.QTP功能简述,测评中心,1.2熟悉QTP工作环境,2.QTP工作原理,测评中心,一个重要的工具:object spy,1.QTP功能简述,测评中心,菜单简介,*File菜单:用来新建,打开,保存测试脚本,函数文件等 *FileSettings:设置当前脚
3、本运行环境的相关参数 *Automation:设置QTP录制与运行的相关参数 *Help:QTP自带参考文档 *Edit:脚本文本编辑功能扩展 *View:自定义工具视图模式 *insert:提供手工添加检查点,模块儿调用等功能 *debug:提供脚本调试功能 *resource:对象库,函数库,场景恢复文件管理入口 *tools:QTP对象识别等级定义及其他一些工具属性的设置,2.QTP工作原理,测评中心,1.2关键字驱动测试(Keyword-Driven testing) 看看刚才录制的那段代码: Keyword view Expert view,2.QTP工作原理,测评中心,当我们选择选
4、中keyword view 视图中某一个对象,点击object from repository时会出现对象库窗口,2.QTP工作原理,测评中心,两个重要概念:对象&对象库 *对象:在QTP”眼中”被测系统的构成元素即称之为对象。对象通过属性建立了与被测系统元素的一一对应关系。 *对象库:对象的有序集合。一次测试过程中涉及的被测系统对象的有序集合就构成了该次测试过程的对象库,2.QTP工作原理,测评中心,对象库是QTP录制与回放过程中连接脚本与被测系统的中间体。 录制过程 回放过程,2.QTP工作原理,测评中心,疑问:他们三者之间(脚本,对象,被测系统)是如何有效工作的?,我们的疑问就是上页图中
5、的四个“箭头”,而且不难发现,问题1与2,3与4是等价的,互为过程和逆过程。所以只需弄清楚两个问题: 1:对象库怎么跟被测系统对应 2:脚本怎么跟对象库对应,2.QTP工作原理,测评中心,先看问题1:对象库与被测系统的关系,来看看刚才脚本的对象库: 下面是“百度一下”按钮在对象库中的属性。,使用spy工具查看更多属性,2.QTP工作原理,测评中心,Class Name:表示这个对象的类型是”WebButton”value:这个对象的值(按钮的显示文字)内容,2.QTP工作原理,测评中心,再查看一下系统原文件,查找到”百度一下”这个按钮的部分:,对比系统页面原文件和QTP对象属性,会发现他们存在
6、对应关系: 对象库属性 html代码 calss = s_btn class =“s_btn” html tag =input name =“百度一下” value =“百度一下” ,2.QTP工作原理,测评中心,对象库中的对象获取了被测系统控件的一些特殊属性,并且通过这些特征属性与被测系统控件建立了对应关系。,再来看问题2:对象库与脚本代码间的关系,2.QTP工作原理,测评中心,先看脚本代码:两个视图之间是等价的,只是显示的方式不同。在keyword view下的脚本可以看出脚本行所映射到的对象。,再看下我们的对象库结构(结论很明确了):,2.QTP工作原理,测评中心,每一句代码都包含三个部
7、分: 获取对象,定义操作和绑定数据,获取对象的部分即在对象库中做一次寻径,定位到一个对象,2.QTP工作原理,测评中心,2.1关键字驱动测试(Keyword-Driven testing),总结一下: QTP获取被测系统控件的特殊属性,并通过这些属性建立相应的对象,通过创建脚本操作对象库中的对象从而映射到操作被测系统中对应的控件。,AQ? 1:那么多属性,QTP是如何定义何为特殊属性的? 2:是否会存在完全相同的两个对象?,Answer1:QTP对不同种类的控件(组件)都有默认设置的特殊属性。比如说对刚才百度页面的“百度一下”按钮,对这类WebButton控件,默认的特殊属性就是三个:type
8、,name和html tag。当然你也可以在:toolsweb event recording configration里进行自定义设置:,Answer2:不会。也许会有极为相似的,但仔细观察(spy一下)总会有区别的-即使是双胞胎也会有不同的,3.脚本优化,测评中心,3.1调试 我们来录制一段原始代码,如下: 并不是所有的系统录制的脚本都能直接回放成功。这与开发所使用的技术以及规范性有一定关系。所以我们必须对脚本进行调试。这也是自动化过程中最耗费资源的一项工作。,3.脚本优化,测评中心,回放脚本,报错:提示对象找不到”WebTable”对象。仔细查看脚本会发现,脚本中缺少对一级菜单的mous
9、eover动作,也没有对三级菜单的click操作。这些导致没有出现目标子页面,所以报对象找不到错误。,3.脚本优化,测评中心,查看发现对象库中并没有”数据分析”这个对象,可以手动添加。并对对象库无用对象进行整理,只留下必须的对象。,3.脚本优化,测评中心,对脚本也进行相应的整理,这次就可以回放成功:,回放成功后可以查看,执行报告,但是这份报告是没有实际意义的,因为并未能给我们提供想要的结果。,3.脚本优化,测评中心,*在运行与调试脚本的时候善用spy工具,维护好对象库,让对象命名带有语义,使得脚本具有可读性;设置断点,必要时添加调试信息输出。,*脚本的调试是一个反复的动作,当脚本发生修改,被测
10、系统发生变更后都需要进行脚本的调试,确保脚本的可用性。这个工作量是比较巨大的。 *特定系统的脚本的维护中,经验会发挥很大的作用。,3.脚本优化,测评中心,3.2参数化,保留业务逻辑部分,将绑定的数据进行参数化。扩大测试覆盖。,3.脚本优化,测评中心,适合参数化的数据: 经常变动的或具有不同业务逻辑类型的关键数据 此例中我们将登陆的用户,查询条件中的纳税人识别号,查询日期进行参数化。,3.脚本优化,测评中心,参数化的实现可以在keyword view 和Expert view中均可以实现,如下图为keyword view中的操作:,可以使用的参数的类型: DataTable,Environmen
11、t,RandomNumber,Parameter 本例中我们关注,datatable和parameter参数化的两种实现方法。,3.脚本优化,测评中心,DataTable是一张EXCEL表,QTP可以从DT读取和写入数据。对一次执行来说,QTP会读取DT中的一行。 语法: DataTable(“sheetname”,”columname”),首先我们设置DT中的参数,每列为一个参数。如下,建立了我们需要的6个参数列,3.脚本优化,测评中心,然后在keyword view中,找到要参数化的行,点击参数化的图标,弹出参数设置窗口,选择datatable类型,绑定参数列,即可。,切换到expert
12、view 可以看到代码的变化。 如果直接在expert view里修改代码为 DataTable(“用户名”,dtGlobalSheet)也能达到一样的目的。,3.脚本优化,测评中心,按照刚才的操作,我们将脚本参数化后如下:,给参数赋值:,3.脚本优化,测评中心,前面提到过,脚本保存的是业务逻辑部分,参数化将数据与脚本分离,单独存放。当数据有多种类型的时候,可以通过增加DT中的行来复用业务逻辑代码,循环执行,达到测试覆盖的扩大。,设置RUN属性,为在所有行上运行:,3.脚本优化,测评中心,运行完后,我们可以查看运行的结果: 思考:这是否是我们测试的目的? 不是。本例案例我们测试的目的是查询到本
13、纳税人在查询时间段内的购销配比是否是我们所预期的值。 我们还缺少一个检查点。,3.脚本优化,测评中心,3.3检查点,*检查点:即对测试所关注的事件或数据做出判断并给出检查的结果。这是测试的目的。,*QTP提供的丰富的自带检查点功能:标准检查点,文本检查点,数据库检查点等。但是自带的检查点适用条件比较固定,不能满足测试系统多变的要求。所以我们经常还要自定义检查点。,*本例中我们将介绍标准检查点,并自定义一个检查点。,3.脚本优化,测评中心,添加一个标准检查点: 选中脚本中一行,右键insert standerd checkpoint。 例如,我选择的点击查询的一行,会弹出如下对话框:,此对话框罗
14、列出“查询”这个按钮的多个属性及其值。我们可以更改属性的期望值,甚至将期望值参数化,从而达到检查和动态检查的目的。,3.脚本优化,测评中心,运行脚本,查看报告,可以看到检查结果是pass。如果更改期望值,再运行时检查结果将是failed。,接下来我们自定义一个检查点,用来检查查询结果表中购销配比数值是否是我们期望的。,首先我们用spy工具,查看一下查询结果表的对象结构:,3.脚本优化,测评中心,我们发现查询结果是一个WebTable对象,而且我们的对象库中并没有这个对象。所以我们可以手动来添加它。,注意:为是的脚本可读性好,将添加的对象改命为:查询结果,保存,3.脚本优化,测评中心,打开HEL
15、PQuick Test Professioner Help,搜索WebTable,进入webtable object页,我们可以看到WebTable对象可以使用的诸多方法。,3.脚本优化,测评中心,我们想要检查的是WebTable这个表格中某行某列的值,所以我们可以用方法getcelldata来获得,3.脚本优化,测评中心,添加代码如下:,执行:会弹出信息窗口显示购销配比比例为200.0,下面我们使用一个判断语句来检查一下这个购销比例是否是我们预期的。我们将预期值放到DT的“购销比例”列中。添加代码如下,3.脚本优化,测评中心,执行,查看报告结果: 成功时:,失败时:,3.脚本优化,测评中心,
16、3.4使用对象方法,上一节中我们已经使用了WebTable对象的getcelldata方法,来获取了表格中某个单元格的内容。 对于不同种类的对象QTP提供了很多方法。具体内容可以使用QTP帮助文档查看。,本例重点讲一下方法:GetPOroperty方法 在帮助文档中,方法说明如下:,3.脚本优化,测评中心,GetROProperty方法可以在运行态获取对象制定属性的值。 本例将用次方法改写之前添加的对“查询”按钮的标准检查点。代码如下:,通过此方法,我们可以通过获取系统当前的运行情况,来实现脚本代码的逻辑控制。 其他对象方法还有很多,这里不再赘述。需要时可查看帮助文档。,3.脚本优化,测评中心
17、,3.5描述性编程,问题:为什么对象库在QTP中不可或缺?,原因:对象库存放了QTP脚本执行时必须的对象的属性。没有这些属性,QTP无法定位到被测对象。,所以只要我们能够以其他方式提供这些必要的属性,对象库也并不是不可或缺的。 描述性编程即是这种思路的实现。,3.脚本优化,测评中心,本例将创建使用描述性编程改写之前的案例做“查询”操作的部分:,这句脚本能够运行,是因为背后有对象库的支持,如果我将对象库中的“查询”按钮删除,那么将会报错:,删除”查询”,3.脚本优化,测评中心,改写一下脚本如下名即可(因脚本较长,截图看不清使用了with):,注意书写的语法:,3.脚本优化,测评中心,在使用描述性
18、编程中的关键性问题在于怎么样确定使用哪些属性。 例如上例中,WebButton按钮那么多的属性,为何偏偏选中了calss name 和name两个呢?,我们先用spy工具查看对象,分析其诸多属性中哪些会是其特征属性,以此来确定使用哪些属性来“描述”它。描述性编程也就是这个意思。,3.脚本优化,测评中心,为何要用描述性编程?,描述性编程提供了一种将属性和属性值剥离的途径,这样就让我们参数化成为可能,从而增加脚本的灵活性。最终的目的是增加脚本的复用,控制脚本的量,减少维护工作量。,看一个示例:,3.脚本优化,测评中心,此代码段功能: 进入给定的菜单路径页面。只要给定一个路径,调用这段代码就可以,而
19、无需录制打开不同代码的脚本。,3.脚本优化,测评中心,通过上页描述性编程的例子,我们很容易引出下一节的内容: 自定义函数,3.6自定义函数,*对于经常被重复调用的代码段,我们希望每次只是调用它,而不是重复书写一遍。所以可以将这样的代码段封装为一个函数,以供调用。,*除此之外,我们也可以通过函数来实现一些扩展的功能。,3.脚本优化,测评中心,新建一个函数文件:,我们将刚才选择菜单页面的代码封装进去,函数有一个输入参数:dir,用来接收我们制定的页面路径:“稀土监控数据分析查询统计稀土产品购销配比情况查询”,3.脚本优化,测评中心,为了方便演示,我们还定义另外两个函数: 打开浏览器的函数opIE(
20、url,modle) url:代开的地址 Modle:打开模式,3.脚本优化,测评中心,另外一个函数登陆函数login(url,username,pwd) url:应用地址参数 Username:用户名 Pwd:密码,保存函数文件为:function_lib.vbs,3.脚本优化,测评中心,新建一个案例,设置好引用的函数库为function_lib.vbs. 只有添加了引用后,自定义函数文件中的函数才可以直接在案例脚本中使用。,3.脚本优化,测评中心,书写脚本代码如下:,运行结果:QTP自动关闭其他ie浏览器,打开新的浏览器到系统登录页,登录,并进入制定的菜单页。 这个功能是很多案例所必须的,所以省去了每个案例都自己录制时间,减少了代码量。,3.脚本优化,测评中心,对于这样的案例,我们同样也可以进行参数化。,除了如上所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度团队绩效总结汇报
- 2026年食物中毒样本采集与送检规范
- 2026年货运企业驾驶员安全行车手册
- 2026年医院预约诊疗服务流程再造实践
- 2026年小学综合实践课学生参与度评析
- 2026年硫酸厂防腐蚀材料选用与施工规范
- 2026年安防设备故障应急处理流程
- 2026年有限空间作业事故应急救援
- 2026年日语教师板书设计与视觉辅助运用
- 2026年医养结合机构服务指南与评价
- 2025年中国铁路兰州局集团有限公司招聘高校毕业生考试真题
- 2026年政法系统公开遴选公务员笔试试题及答案解析(政法类)
- 2026年铅酸电池行业分析报告及未来发展趋势报告
- 桥梁临边防护安全管理方案
- 小学二年级数学《隔位退位减:算理贯通下的差异化探究与实践》教案
- 2026年重庆联合产权交易所集团招工笔试参考题库含答案解析详解
- 2026年娄底市新化县事业单位引进高层次和急需紧缺人才30人备考题库及答案详解一套
- 质量工程师转正转正述职汇报
- 仿生学技术介绍
- 电子政务合同范本
- 江苏省百校联考2026届高三上学期12月联考试题 数学 含解析
评论
0/150
提交评论