QTP基础教程幻灯片_第1页
QTP基础教程幻灯片_第2页
QTP基础教程幻灯片_第3页
QTP基础教程幻灯片_第4页
QTP基础教程幻灯片_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、QTP基础知识培训,目 录,QTP工具历史、简介 QTP自动化测试流程 QTP工具基础(重点讲解) QTP支持的脚本语言VBS 正则表达式 自动化常见问题(脚本编写、执行中断、测试结果常见错误),QTP工具历史、简介,历史 QuickTest Professional 1.0发行于1998年05月,取名为Astra QuickTest仅支持WEB,它是一种基于图标的功能测试工具,主要用于电子商务领域,可以记录用户动作来简化并加速测试过程,标价4000美元每个license; QTP至今已有16年,历经从QTP 1.0至最新版本HP UFT 12.02; 2012年12月发布新版本,更名为HP

2、UFT 11.5; 2014年03月发布新版本HP UFT 12; 2014年07月小幅更新,发布HP UFT 12.02,支持火狐到31版本 。 最新版安装程序共享路径:5hhc5品管部组内共享肖得军UFT12.02安装Software_HP_UFT_12.02_MLU_T6510-15086.zip 简介 QTP是QuickTest Professional的简称,是一种自动化测试工具。使用QTP的目的是用它来执行重复的手动测试,主要用于回归测试和测试同一软件的新版本; 在自动化领域,目前全球市场占有率最高的企业级自动化工具; 很贵,代价高昂;,QTP自动化测试流程,

3、如何对应用程序进行测试,要测试哪些功能、操作步骤、输入数据和期望的输出数据等,具体界面或者控件; 创建Test,录制脚本、编写脚本,脚本调试; 脚本扩展,增加或更改测试步骤,自定义测试业务流程,增加检查点,参数化,脚本调试等; 从脚本开始处执行,用实际数据代替参数值,检查点验证; 脚本执行完成,生成测试结果报告,分析定位。,从认识Add-in Manager开始 QTP对象识别原理 对象库管理者 对象库模式 共享函数库的加载 脚本编写 描述性编程 QTP环境变量 检查点(自动化的关键) QTP自动化测试结果 同步点 如何判断对象识别成功 QTP虚拟对象、保留对象 脚本结构(Solution、T

4、est、Action、Step间的关系),QTP工具基础,从认识Add-in Manager开始,QTP Add-in即为QTP插件。就是QTP识别不同控件对象类型的一套标准。 当我们在启动QTP时,QTP会首先弹出一个Addin-Manager窗口,这个窗口主要提供给自动化测试人员选择相应的插件。 1、插件的类型: Web ActiveX VB .Net WPF 2、如何选择插件: 首先确定被测控件对象类型,然后选择相应的插件 在必要时需要选择多个插件 3、选择插件注意事项: 不要盲目的根据被测程序的开发语言来确定插件的选择 要严格遵守插件的定义,必须要根据被测控件对象的类型来进行选择插件,

5、QTP对象识别原理,测试对象(TO) 作用是作为一种预期参考对象,与实际对象进行对比,静态的; 运行时对象(RO) 运行时对象即是被测应用程序中真实存在的控件对象,动态的; QTP对象识别原理: 预期测试对象的识别属性 实际运行时对象的识别属性 对比预期与实际是否一致 若是对比之后可唯一匹配,那么对象即识别成功;反之,则失败。 QTP测试对象识别属性的选取 在Tools Object Identification 中,首先确认需要查看的控件类型,取决于选择哪个插件;选择好了插件之后,在左边一栏及可以看到对应的QTP封装对象,这是QTP自己封装的测试对象,随意选择一个封装对象,即可在右边看到相应

6、的关键识别属性,这个其实就是描述对象的关键属性。一般情况下只要需要描述这些关键属性即可成功描述一个对象。,QTP对象识别原理,对象库OR,QTP可通过快捷键Ctrl+R 打开QTP对象库,可在其中进行添加、删除、复制对象、修改对象属性、重命名对象、导出对象库文件(*.tsr)等操作。,QTP对象库简称OR,也就是Object Repository,就是一个存放QTP封装对象的地方。,添加对象至对象库,如何添加对象到对象库(OR) 在QTP中添加对象到对象库的方式一共有三种: 录制过程中自动添加对象; 手动添加对象到对象库 Object Spy抓取直接添加 (QTP 11 新功能) 手动添加测试

7、对象步骤: 启动QTP之后,点击Ctrl + R打开本地对象库; 此时如果需要手工添加测试对象到对象库,只需点击界面上的“Add Objects”,鼠标变更为手型; 点击任何你想要添加的测试对象即可直接添加到对象库中;,获取对象属性,测试对象TO,对象库中的对象,QTP提供了两个运行时获取或者修改TO对象属性的常用方法: GetTOProperty:运行时获取测试对象的属性值; SetTOProperty:运行时动态设置测试对象的属性值; 运行时对象RO方法: GetROProperty:获取运行封装对象的属性值,而非对象库中的属性值; SetROProperty:QTP中不存在此函数;,对象

8、库模式,本地模式: 本地模式就是QTP默认的本地Action模式; 优点:可直接更新对象,当改变对象名之后当前脚本可以自动更新对象名; 缺点:脚本多则很容易出现很多的重复对象,维护比较麻烦,容易出现混乱; 共享模式: 共享模式是一种可以共享给所有脚本的的模式; 优点:适合团队开发,在大量测试脚本中不容易出现重复对象,维护对象属性比较容易; 缺点:是修改对象名后不能对所有使用该对象的脚本进行自动更新; 共享模式实现: 方法1、动态加载;,对象库模式,方法2:在要关联对象库Action上右键:,对象库模式,方法3:通过菜单Resources-Associate Repositories.,对象库管

9、理者,对象库管理者:QTP中名为ObjectRepository Manager 入口: RescourcesObjectRepository Manager 常用功能: 维护共享对象库(添加、删除、修改、复制、粘贴、重命名对象等) 导出导入tsr格式对象库文件 导出导入xml格式对象库文件 合并对象库(此功能用的很多) 对象库管理者是比较好用的功能,其很多功能都是在对象库中无法实现的,其常常与共享对象库结合使用: 当一个脚本加载了一个*.tsr作为共享对象库时,对象库管理者是可以和QTP脚本编辑器可同时进行编辑,对象库就不可以和QTP脚本同时进行编辑,当打开对象库后,如果需要编辑脚本,必须先

10、关闭对象库才行。,对象库管理者,刚打开的共享对象库文件不可编辑的,只有“Enable Editing”后才可编辑。,“使能编辑”按钮,共享函数库,共享函数库是QTP提供的一种用于共享脚本代码的方式,QTP提供两种加载方式: 静态加载 动态加载 函数库静态加载步骤(见下页图): 在Test上右键,选择SettingsResources (Tab); 点击“”,选择函数库文件; 点击ok 函数库动态加载: ExecuteFile “FilePath” LoadFunctionLibrary “FilePath” 上述2种方法比较 注:此处可以加载txt、vbs、qfl等格式的函数库文件;,共享函数

11、库,静态加载函数库的方法,脚本编写,录制脚本:录制是一种非常高效的方式,快速简单易学。 手工编写脚本:可能在一些情况下,脚本是无法录制的;并且如果真正需要把自动化做起来的话,手工编写脚本必不可少。 手工编写QTP脚本流程: 添加对象库 写入测试对象 写入测试行为 写入测试数据 写入测试对象或者公共函数的三种方式: F7 步骤生成器 自动完成(Completed Word) 直接从Available keywords视图中拖拽出来,脚本编写,2种视图介绍 Keywor View(View-Keyword View,如下图),脚本编写,2种视图介绍 Expert View( View- Exper

12、t View,如下图),描述性编程,描述性编程:其实和对象库一样是用于识别对象的一种方式;所谓描述性编程就是利用脚本来把测试对象的属性描述下来,而非利用简易的对象库; 描述性编程的两种写法: 1、字符串直接描述法 2、对象封装描述法,描述性编程,对描述性编程的认识误区: 许多刚接触自动化测试的新手们,会一直认为描述性编程好,高深,比对象库高级,其实这是一种极为错误的想法。 描述性编程只是一种识别对象的一种方式,它并不是一种编程,它只是一种早期的自动化测试脚本原型,它有着天生的致命弱点,就是对象没有真正的与脚本分离,维护起来非常的麻烦。 因此Mercury在开发QTP时为了解决这个问题而特地开发

13、出对象库这个功能,这样做的目的也是为了能够让脚本与对象分离,使的维护测试对象更加的方便。 当然为什么QTP还把描述性编程留着,是因为在某些特殊情况下还是需要描述性编程的。例如:在处理一些动态对象或者处理webTable对象等,但这也是一些少数的情况并非在所有情况下都去使用描述性编程,希望沉迷于描述性编程的测试新手们在看到这篇文章时能够快速把思维转变回来,也不要去误导别人。,环境变量,在QTP自动化测试过程中,经常会需要一些预先的配置信息文件来用于不同的测试环境下,可能就需要用到环境变量。QTP中存在着两种类型的环境变量: 内置环境变量 自定义环境变量 内置环境变量:QTP内部已经事先封装好;直

14、接进入到SettingsEnvironment中选择Built-in,即可查询到所有的内置环境变量; 例: Msgbox Environment.Value(“TestName”) 自定义内部环境变量:是一种可以在QTP内部进行自定义的环境变量;进入到SettingsEnvironment,选择User-defined选项,点击旁边的”+”,即可定义Name 和 Value; 例:Msgbox Environment.Value(“izhaojun”) 自定义外部环境变量:直接从外部xml格式文件中读取的环境变量;进入SettingsEnvironment,选中Load variables a

15、nd values from external file复选框,选择xml文件路径即可;,环境变量,检查点,一个自动化测试中如果没有检查点,那这个自动化测试是没有多大意义的。自动执行脚本,我们要通过检查点的验证结果来查看每个测试点是否达成了预期的结果;因此验证点是自动化测试过程中的关键。 QTP中检查点有如下2种方式: Checkpoint Checkproperty Checkpoint:是QTP默认的检查点方式;主要是用于验证对象。只需要在QTP中直接添加检查点即可。 Checkproperty:主要是用于被测对象的某个属性进行检查,在一些地方可以替代checkpoint;,添加检查点,检

16、查点的种类; 检查点只能在录制过程中添加; 一个检查点,一个对象,存在于对象库中,可对其删除、编辑等操作; 开始录制:F6 添加标准检查点:F12,添加检查点(Checkpoint),测试结果,QTP提供了一个在脚本执行完毕后的运行结果,Test Results ;测试结果的主体文件是通过一个xml文件来储存的,通过Run Results Viewer来查看; 测试结果报告中主要包含三种图标: 大叉代表Fail 感叹号代表Warning 打勾说明Success QTP中执行检查点Checkpoint或者使用Checkproperty时,QTP执行脚本时,验证完毕之后自动将验证结果写入到测试结果

17、中。验证成功打一个绿色钩,如果失败即会把预期结果与实际结果进行比对。 自定义测试结果报告写入 Reporter对象 4种状态:micPass , micFail , micWarning , micDone,同步点,当应用程序在执行一个步骤之后,需要一定时间的响应,而此时脚本并没有准备,而是直接执行下一行脚本,那么此时QTP可能会抛出错误; 同步点:其作用就是插入一段等待时间后再执行下一步操作; QTP中常用同步点方式: Wait WaitProperty Wait用法 : 例:Wait 3 WaitProperty用法: 推荐使用WaitProperty的方式,因为Wait方式太死板,需要写

18、入具体等待时间; WaitProperty是自动化测试中应用比较多的,等待测试对象的某个属性变更为某个值时执行下一步操作。,如何判定对象识别成功,测试对象对于自动化测试来说是非常重要的,如何判定对象库中的对象一定匹配被测试应用程序上的某个对象呢。 对象库手工高亮 利用脚本动态高亮 对象库手工高亮:这个比较容易,只需要在对象库中选中需要判定的对象,然后点击对象高亮按钮即可; 脚本动态高亮:对于一些无法使用对象库直接进行高亮的情况下比较实用; QTP可以随意抓取到你想要的对象,但是你能否把QTP自身这个窗口给抓取下来高亮显示呢。,虚拟对象,当被测程序一些控件对象本身无法被QTP识别时,可以使用虚拟对象来进行识别; 不推荐使用虚拟对象,一方面它是与坐标绑定不稳定,另一方面移植起来比较麻烦,需要另外拷贝一些文件在QTP安装目录。 何时使用虚拟对象:对象无法识别为正确的类 如何使用虚拟对象:Tools Visual Object -New Visual Object进入之后点击下一步选择对

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论