QTP课程笔记QTP介绍知识点HPQuickTestProfessional是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。通过QTP可以测试标准的WindowsApplications、Web对象、ActiveX控件和VisualBasic应用程序。我们还可以获得其他的QTP加载项以便用于许多特殊的环境,例如Java、Oracle、SAP解决方案、.NETWindows以及WebForms、Siebel、PeopleSoft、Web服务和终端仿真应用程序。QTP通过录制在应用程序中执行的操作,可以方便地创建测试和业务组件。测试和业务组件是两种不同类型的文档,可用于测试您的应用程序或网站是否按预期工作。示例演示程序采用QTP自带的Flight程序,生成一张新的订单。练习学员按照老师的过程录制一次。QTP程序的结构知识点录制选项的含义:为了提高脚本的可移植性,建议两边都选最上面如果开始录制时没有弹出该窗口,可以利用菜单Automation/RecordandRunSetting来启动由QTP自己打开的程序:如果选中该选项,则第一次录制时QTP只会生成启动程序的脚本,而不会录制后续的动作。快捷方式的程序是否录制:通过快捷方式启动程序程序的动作也能够录制下来。指定要录制的程序:开始录制后自动启动指定的程序VCQTP工程projectTEST模块moduleAction函数functionSub/Function到TEST目录的Action1下面打开文件Script.mts,可以看到录制的代码QTP脚本的特点:1、脚本回放成功需要:代码(脚本)+对象(在对象库中有记录相关对象的信息)2、脚本语法:对象类型(“对象名称”).方法参数1,参数2,…由QTP打开程序,有几种方法:1、SystemUtil.Run'SystemUtil对象的Run方法SystemUtil.RunD:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\flight4a.exe参数示例:file:D:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\flight4a.exeparams:op:D:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\mdoe:openSystemUtil.RunD:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\flight4a.exe,,D:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\,open2、InvokeApplication'调用程序函数InvokeApplicationD:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\flight4a.exe3、WSH'通过wsh对象的Run(bat)或者exec(exe)方法DimoWSHSetoWSH=CreateObject(WScript.shell)oWSH.execD:\ProgramFiles\HP\QuickTestProfessional\samples\flight\app\flight4a.exeSetoWSH=nothingDimoWSHSetoWSH=CreateObject(WScript.shell)oWSH.runE:\WORK\Projects\3.batSetoWSH=nothing参照文章:为确保脚本移植性,可以引入环境变量,例如:SystemUtil.RunEnvironment.Value(ProductDir)&\samples\flight\app\flight4a.exeEnvironment.Value(ProductDir):QTP产品所安装的路径Environment.Value(TestDir):工程(TEST)所在的路径可使用下面的语句来检查:msgboxenvironment(ProductDir)msgboxenvironment(TestDir)示例以下结合err对象和onerrorresumenext语句做例子:OnErrorResumeNext'Onerrorgoto0DimbFlagbFlag=CBool(bFlag)bFlag=InvokeApplication(C:\win2000-calc11111.exe)msgboxbFlagIferr.number0Thenmsgboxerr.descriptionerr.clearEndIfQTP的对象识别原理知识点举例:找关羽!依据的是这个人的特征,而不是人名,人名是有重复的。1、录制原理QTP首先“观看”要录制的对象,然后将其作为测试对象进行存储,确定该对象符合的测试对象类,例如标准Windows对话框(Dialog)、Web按钮(WebButton)或VisualBasic滚动条对象(VbScrollBar)。然后,对于每个测试对象类,QTP都有一个始终要记住的强制属性的列表,在录制对象时,QTP始终记住这些默认的属性值,然后再检查“视图”页面上其余的对象、对话框或其他父对象,以检查该描述是否足以唯一标识该对象,如果不足以进行唯一标识,QTP将向该描述中逐渐添加辅助属性,直到经过编译成为唯一的描述为止,如果没有可用的辅助属性,或者那些可用的辅助属性仍不足够创建一个唯一的描述,QTP将添加一个特殊的顺序标识符(例如页面上或源代码中对象的位置)以创建唯一的描述。在回放过程中,QTP会搜索与录制时记住的测试对象的描述完全匹配的运行时对象,它需要找到与录制时用于创建唯一描述的强制属性和任何辅助属性完全匹配的对象,只要应用程序中的对象没有较大的改变,录制过程中记住的描述几乎总是足以使QTP唯一标识出该对象。对于大部分对象,这种方法是适用的,但应用程序中包含的某些对象可能在后续运行会话期间很难标识。但即使录制的描述不再准确,QTP也能通过其“智能标识”机制使用非常相似的排除过程来标识对象。即使测试对象属性的值有所改变,QTP的TestGuard技术机制也能通过使用“智能标识”标识对象从而维护测试或组件的可重用性。属性识别再到属性value的识别,就确定了对象。QTP能识别对象不是因为对象的名称,而是从对象的强制属性的取值来识别对象。而名称就算不一样都无所谓。菜单项:Tools/ObjectIdentification2、回放原理一、先根据脚本中的对象类型在对象库中查找是否存在该类型的对象。对象类型是指在对象类型库(ObjectIdentification)中存在的类型。二、根据脚本中对象的名称在对象库中查找是否存在该名称的对象。三、根据对象类型库中设定的对象识别机制定位对象:1、先根据强制属性匹配实际对象的属性值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,采用辅助属性辅助识别;(3)不匹配,报错;2、根据辅助属性匹配实际对象的属性值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,采用顺序标识符辅助识别;(3)不匹配,报错;3、根据顺序标识符匹配实际对象的顺序值:(1)唯一匹配,找到对象,退出识别机制;(2)多个匹配,尝试采用智能识别;(3)不匹配,报错;其中顺序标识符中有两种识别机制:index:控件数组的索引值。location:对象在GUI界面上的位置,遵循“先从上到下,再从左到右”的原则。4、QTP采用自身的一套智能识别机制识别(SmartIdentification)。示例利用win2000-calc.exe计算器录制一段脚本1+2=3修改对象库中各对象的Name,则脚本中的名称也一并变化,并且不管把名称修改成什么,回放结果都是1+2=3,并不因Name的不同而去结算别的值(改了名你还是你)。不重新录制,而是修改这段脚本,计算3+4=7。方法:利用对象库中的添加对象按钮把按钮3和4加进来,然后修改脚本。ObjectRepository:对象库,查看每个定义的对象的属性和值。Highlight:高亮显示识别的是哪个对象。ObjectSpy:对象探测器,利用它可以正确探测到对象的实际值。AddObjectstoLocal:添加对象库UpdatefromApplication:更新对象属性locateinrepository:定位指定的对象是对象库中的哪个对象不重新录制,修改脚本,计算5+6=11方法:利用ActiveScreen(ViewActiveScreen)实现,鼠标指向对象,右键执行“Add/ViewObject—Addtorepository”保存脚本,“Action1\SnapShots”目录下放着许多png文件。练习录制win2000-calc.exe计算器,重复老师的练习QTP脚本的调试知识点Tools/CheckSyntax:运行程序之前先检查语法调试功能:StepInto:F11,单步调试,按一次F11脚本执行一句。StepOver:F10,跳过(其实执行了,只是没有单步调试)。如果是普通语句,则按一次F10执行一句,如果遇到过程/函数,则按一次F10会把该过程/函数一次性执行完。StepOut:Shift+F11,从过程/函数体内跳出(其实也执行了,只是执行完跳出来)。StepOver是在遇到过程/函数时一次性快速把过程/函数执行完,StepOut则是在单步执行到过程/函数内部后,快速执行完并跳出来,进入了过程/函数体后再用StepOver是跳不出来的。运行功能:F5确定:开始运行RunfromStep:鼠标从哪一行开始闪,程序就从哪一行开始运行,会直接运行完。Debugfromstep:从光标处开始调试,要点F5、F11、F10、Shift+F11继续运行。RuntoStep:运行到光标处Breakpoint:F9,断点,运行到断点处会停止,按F5、F11、F10、Shift+F11继续运行。断点与RuntoSetp的相同点是运行到指定位置都会暂停,但断点的好处是可以设置多个暂停点。调试视图:View/DebugViewerwatch监视窗口:选择一个变量,右键执行“AddtoWatch”,就可以在watch窗口中只监视这个变量。Variables变量的查看窗口:在执行时动态的看到变量的值Command命令行窗口:可以动态的更改变量和语句,也可以临时加一些变量和语句示例示例1:录制计算器进行加法计算,先算一个整数相加,再算一个浮点数相加,然后演示运行功能。SystemUtil.RunC:\WINDOWS\system32\calc.exeWindow(计算器).WinButton(1).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(3).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).WinButton(C).ClickWindow(计算器).WinButton(4).ClickWindow(计算器).WinButton(.).ClickWindow(计算器).WinButton(5).ClickWindow(计算器).WinButton(+).ClickWindow(计算器).WinButton(8).ClickWindow(计算器).WinButton(.).ClickWindow(计算器).WinButton(8).ClickWindow(计算器).WinButton(=).ClickWindow(计算器).Close示