深圳市京华科讯科技有限公司QTP基础知识培训深圳市京华科讯科技有限公司目录QTP工具历史、简介QTP自动化测试流程QTP工具基础(重点讲解)QTP支持的脚本语言VBS正则表达式自动化常见问题(脚本编写、执行中断、测试结果常见错误)深圳市京华科讯科技有限公司QTP工具历史、简介历史QuickTestProfessional1.0发行于1998年05月,取名为AstraQuickTest仅支持WEB,它是一种基于图标的功能测试工具,主要用于电子商务领域,可以记录用户动作来简化并加速测试过程,标价4000美元每个license;QTP至今已有16年,历经从QTP1.0至最新版本HPUFT12.02;2012年12月发布新版本,更名为HPUFT11.5;2014年03月发布新版本HPUFT12;2014年07月小幅更新,发布HPUFT12.02,支持火狐到31版本。最新版安装程序共享路径:\\192.168.1.15\hhc\5品管部\组内共享\肖得军\UFT12.02安装\Software_HP_UFT_12.02_MLU_T6510-15086.zip简介QTP是QuickTestProfessional的简称,是一种自动化测试工具。使用QTP的目的是用它来执行重复的手动测试,主要用于回归测试和测试同一软件的新版本;在自动化领域,目前全球市场占有率最高的企业级自动化工具;很贵,代价高昂;深圳市京华科讯科技有限公司QTP自动化测试流程制定测试计划创建测试脚本增强测试脚本执行测试脚本测试结果分析深圳市京华科讯科技有限公司从认识Add-inManager开始QTP对象识别原理对象库管理者对象库模式共享函数库的加载脚本编写描述性编程QTP环境变量检查点(自动化的关键)QTP自动化测试结果同步点如何判断对象识别成功QTP虚拟对象、保留对象脚本结构(Solution、Test、Action、Step间的关系)QTP工具基础深圳市京华科讯科技有限公司从认识Add-inManager开始QTPAdd-in即为QTP插件。就是QTP识别不同控件对象类型的一套标准。当我们在启动QTP时,QTP会首先弹出一个Addin-Manager窗口,这个窗口主要提供给自动化测试人员选择相应的插件。1、插件的类型:•Web•ActiveX•VB•.Net•WPF•…2、如何选择插件:•首先确定被测控件对象类型,然后选择相应的插件•在必要时需要选择多个插件3、选择插件注意事项:•不要盲目的根据被测程序的开发语言来确定插件的选择•要严格遵守插件的定义,必须要根据被测控件对象的类型来进行选择插件深圳市京华科讯科技有限公司QTP对象识别原理测试对象(TO)作用是作为一种预期参考对象,与实际对象进行对比,静态的;运行时对象(RO)运行时对象即是被测应用程序中真实存在的控件对象,动态的;QTP对象识别原理:•预期测试对象的识别属性•实际运行时对象的识别属性•对比预期与实际是否一致•若是对比之后可唯一匹配,那么对象即识别成功;反之,则失败。QTP测试对象识别属性的选取在ToolsObjectIdentification中,首先确认需要查看的控件类型,取决于选择哪个插件;选择好了插件之后,在左边一栏及可以看到对应的QTP封装对象,这是QTP自己封装的测试对象,随意选择一个封装对象,即可在右边看到相应的关键识别属性,这个其实就是描述对象的关键属性。一般情况下只要需要描述这些关键属性即可成功描述一个对象。深圳市京华科讯科技有限公司QTP对象识别原理深圳市京华科讯科技有限公司对象库ORQTP可通过快捷键Ctrl+R打开QTP对象库,可在其中进行添加、删除、复制对象、修改对象属性、重命名对象、导出对象库文件(*.tsr)等操作。QTP对象库简称OR,也就是ObjectRepository,就是一个存放QTP封装对象的地方。深圳市京华科讯科技有限公司添加对象至对象库如何添加对象到对象库(OR)在QTP中添加对象到对象库的方式一共有三种:•录制过程中自动添加对象;•手动添加对象到对象库•ObjectSpy抓取直接添加(QTP11新功能)手动添加测试对象步骤:•启动QTP之后,点击Ctrl+R打开本地对象库;•此时如果需要手工添加测试对象到对象库,只需点击界面上的“AddObjects”,鼠标变更为手型;•点击任何你想要添加的测试对象即可直接添加到对象库中;深圳市京华科讯科技有限公司获取对象属性测试对象TO,对象库中的对象,QTP提供了两个运行时获取或者修改TO对象属性的常用方法:GetTOProperty:运行时获取测试对象的属性值;SetTOProperty:运行时动态设置测试对象的属性值;运行时对象RO方法:GetROProperty:获取运行封装对象的属性值,而非对象库中的属性值;SetROProperty:QTP中不存在此函数;深圳市京华科讯科技有限公司对象库模式•本地模式:本地模式就是QTP默认的本地Action模式;优点:可直接更新对象,当改变对象名之后当前脚本可以自动更新对象名;缺点:脚本多则很容易出现很多的重复对象,维护比较麻烦,容易出现混乱;•共享模式:共享模式是一种可以共享给所有脚本的的模式;优点:适合团队开发,在大量测试脚本中不容易出现重复对象,维护对象属性比较容易;缺点:是修改对象名后不能对所有使用该对象的脚本进行自动更新;•共享模式实现:方法1、动态加载;深圳市京华科讯科技有限公司对象库模式方法2:在要关联对象库Action上右键:深圳市京华科讯科技有限公司对象库模式方法3:通过菜单Resources-AssociateRepositories...深圳市京华科讯科技有限公司对象库管理者对象库管理者:QTP中名为ObjectRepositoryManager入口:Rescources–ObjectRepositoryManager常用功能:•维护共享对象库(添加、删除、修改、复制、粘贴、重命名对象等)•导出导入tsr格式对象库文件•导出导入xml格式对象库文件•合并对象库(此功能用的很多)对象库管理者是比较好用的功能,其很多功能都是在对象库中无法实现的,其常常与共享对象库结合使用:当一个脚本加载了一个*.tsr作为共享对象库时,对象库管理者是可以和QTP脚本编辑器可同时进行编辑,对象库就不可以和QTP脚本同时进行编辑,当打开对象库后,如果需要编辑脚本,必须先关闭对象库才行。深圳市京华科讯科技有限公司对象库管理者刚打开的共享对象库文件不可编辑的,只有“EnableEditing”后才可编辑。“使能编辑”按钮深圳市京华科讯科技有限公司共享函数库共享函数库是QTP提供的一种用于共享脚本代码的方式,QTP提供两种加载方式:•静态加载•动态加载函数库静态加载步骤(见下页图):•在Test上右键,选择Settings–Resources(Tab);•点击“+”,选择函数库文件;•点击ok函数库动态加载:•ExecuteFile“FilePath”•LoadFunctionLibrary“FilePath”•上述2种方法比较注:此处可以加载txt、vbs、qfl等格式的函数库文件;深圳市京华科讯科技有限公司共享函数库静态加载函数库的方法深圳市京华科讯科技有限公司脚本编写录制脚本:录制是一种非常高效的方式,快速简单易学。手工编写脚本:可能在一些情况下,脚本是无法录制的;并且如果真正需要把自动化做起来的话,手工编写脚本必不可少。手工编写QTP脚本流程:•添加对象库•写入测试对象•写入测试行为•写入测试数据写入测试对象或者公共函数的三种方式:•F7步骤生成器•自动完成(CompletedWord)•直接从Availablekeywords视图中拖拽出来深圳市京华科讯科技有限公司脚本编写2种视图介绍•KeyworView(View-KeywordView,如下图)深圳市京华科讯科技有限公司脚本编写2种视图介绍•ExpertView(View-ExpertView,如下图)深圳市京华科讯科技有限公司描述性编程描述性编程:其实和对象库一样是用于识别对象的一种方式;所谓描述性编程就是利用脚本来把测试对象的属性描述下来,而非利用简易的对象库;描述性编程的两种写法:1、字符串直接描述法2、对象封装描述法深圳市京华科讯科技有限公司描述性编程对描述性编程的认识误区:许多刚接触自动化测试的新手们,会一直认为描述性编程好,高深,比对象库高级,其实这是一种极为错误的想法。描述性编程只是一种识别对象的一种方式,它并不是一种编程,它只是一种早期的自动化测试脚本原型,它有着天生的致命弱点,就是对象没有真正的与脚本分离,维护起来非常的麻烦。因此Mercury在开发QTP时为了解决这个问题而特地开发出对象库这个功能,这样做的目的也是为了能够让脚本与对象分离,使的维护测试对象更加的方便。当然为什么QTP还把描述性编程留着,是因为在某些特殊情况下还是需要描述性编程的。例如:在处理一些动态对象或者处理webTable对象等,但这也是一些少数的情况并非在所有情况下都去使用描述性编程,希望沉迷于描述性编程的测试新手们在看到这篇文章时能够快速把思维转变回来,也不要去误导别人。深圳市京华科讯科技有限公司环境变量在QTP自动化测试过程中,经常会需要一些预先的配置信息文件来用于不同的测试环境下,可能就需要用到环境变量。QTP中存在着两种类型的环境变量:•内置环境变量•自定义环境变量内置环境变量:QTP内部已经事先封装好;直接进入到Settings–Environment中选择Built-in,即可查询到所有的内置环境变量;例:MsgboxEnvironment.Value(“TestName”)自定义内部环境变量:是一种可以在QTP内部进行自定义的环境变量;进入到Settings–Environment,选择User-defined选项,点击旁边的”+”,即可定义Name和Value;例:MsgboxEnvironment.Value(“izhaojun”)自定义外部环境变量:直接从外部xml格式文件中读取的环境变量;进入Settings–Environment,选中Loadvariablesandvaluesfromexternalfile复选框,选择xml文件路径即可;深圳市京华科讯科技有限公司环境变量深圳市京华科讯科技有限公司检查点一个自动化测试中如果没有检查点,那这个自动化测试是没有多大意义的。自动执行脚本,我们要通过检查点的验证结果来查看每个测试点是否达成了预期的结果;因此验证点是自动化测试过程中的关键。QTP中检查点有如下2种方式:•Checkpoint•CheckpropertyCheckpoint:是QTP默认的检查点方式;主要是用于验证对象。只需要在QTP中直接添加检查点即可。Checkproperty:主要是用于被测对象的某个属性进行检查,在一些地方可以替代checkpoint;深圳市京华科讯科技有限公司添加检查点检查点的种类;检查点只能在录制过程中添加;一个检查点,一个对象,存在于对象库中,可对其删除、编辑等操作;开始录制:F6添加标准检查点:F12深圳市京华科讯科技有限公司添加检查点(Checkpoint)深圳市京华科讯科技有限公司测试结果QTP提供了一个在脚本执行完毕后的运行结果,TestResults;测试结果的主体文件是通过一个xml文件来储存的,通过RunResultsViewer来查看;测试结果报告中主要包含三种图标:•大叉代表Fail•感叹号代表Warning•打勾说明SuccessQTP中执行检查点Checkpoint或者使用Checkproperty时,QTP执行脚本时,验证完毕之后自动将验证结果写入到测试结果中。验证成功打一个绿色钩,如果失败即会把预期结果与实际结果进行比对。自定义测试结果报告写入•Reporter对象•4种状态:micPass,micFail,micWarning