QTP笔记
2014-04-22 15:53
295 查看
QTP笔记 (转)
2011-04-21 09:19:51| 分类: 测试工具QTP学习|举报|字号 订阅
QTP笔记 收藏
参考:小强老师零基础学习软件测试系列视频教程之QTP学习指南
《自动化软件测试》
《QTP自动化测试实践》
QTP help,samples, GeneralHelp.chm,
VBScript56.CHM
慢慢学习VBScript(V1.0).pdf
File
menu
? Processguidance management,View > process guidance, automation > process guidance list 过程指南,默认安装会包括以下几个过程指南:
(1)Keyword-Driven
Testing:介绍和指引QTP用户熟悉关键字驱动(Keyword-Driven)的测试方法和测试过程。Table-driven
testing实现KDT主要依赖自动化框架,通过框架仅需测试人员开发表格和关键字,框架通过解释表格数据和关键字执行脚本。
(2)Application
Areas:介绍和指引QTP用户熟悉应用程序区域(Application
Areas)的概念和使用方法。
(3)Business
Components:介绍和指引QTP用户熟悉业务组件(Business
Components)的概念和使用方法。
? File
> Settings,也可以在运行过程中设置和获取测试选项,如
settting(“DefaultTimeOut”) QTP用于查找对象的最大时间
Setting.Item通过Item属性获取和设置脚本的全局信息,如
With setting
If Not .Exists(“ItemNumber”) then
.Add “ItemNumber”, 1
Else
.Item(“ItemNumber”) = .Item(“ItemNumber”) + 1
End if
End with
Item属性在整个测试项目的各次运行之间有效,即下一次脚本运行能保持上一次运行的值,而环境变量是固定值,仅在测试脚本运行中可以读取和更改。
? File
> Settings > Local system monitor: QTP Help > LocalSystemMonitorDemo.exe。勾上“Enable local system monitoring ..”,加上需要监控的本机系统性能指标,运行结束后可以在results的system
monitor页面看到结果。
Edit,
View, Automation, Debug menu
? 录制方式:n normal
recording: 通过识别UI对象
n Analog
recording: 记录操作路径,以鼠标轨迹为基础,脚本不能修改
n Low
level recording: 以对象坐标为基础,录制对象为window, winobject
? Tools>Check
Syntax (Ctrl+F7), View > Information, View > Debug Viewer
? Complete
word 或ctrl + 空格将自动匹配关键字或函数,
F3 Record, F4 Stop, F5 Run, F9 Insert/Remove breakpoint, F10 step over, F11 Step into, shift + F11 step out
? QTP
help > MaintenanceMode.exe: Automation > Maintenance Run Mode 当程序界面上的对象改变,导致运行原来录制的脚本时出现对象找不到的情况,这时就可以用maintenance run mode,当出现错误时会出现maintenance
run wizard帮助定位和更新对象。
? Automation>Update
Run Mode: When you run a test in Update Run Mode, QuickTest runs the test to update the test object descriptions, the Active Screen images and values, and/or the expected checkpoint values. After you save the test, the updated data is used for subsequent runs.
After using Update Run Mode to update the test, you may want to use the Update from Local Repository option in the Object Repository Manager to merge the objects from the local repository back to a shared object repository.
Insert
menu:
? 事务 transaction,在以下情况使用:n LR只调用QTP
start和end transaction之间的代码段
n 统计某操作所需的时间
? 验证点:
n 文字类型验证点可使用正则表达式自定义搜索条件 .
* ^ []
验证点类型 | 概述 | 用法示例 |
标准验证点 | 检查对象属性值 | 检查某个单选按钮是否被选中 |
Standard-图像验证点Image | 检查图像属性值 | 检查图片源文件名是否正确 |
Standard-表格验证点Table | 检查表格中的信息 | 检查表格控件中某个单元格的值是否正确 |
Standard-页面验证点Page | 检查网页的特性 | 检查网页加载所需的时间,以及网页上Link或图片Images的数量, broken links |
文本、文本区域验证点 | 检查文本字符串是否显示在网页的适当位置。区别是文本区域检查点不支持web页面文字的检查,仅检查标准windows, vb, activex以及插件支持的控件的文本检查 | 检查预期的文本字符串是否显示在网页或对话框内 |
位图验证点 | 将网页或应用程序的某个区域捕获为位图并对其进行检查 | 检查网页或网页的某个部分是否按照预期显示 |
Accessibility checkpoint | 网页可访问性检查,网页是否满足W3C网页内容可访问性指南的要求,section 508标准 | 如’alt’属性设置检查,”FrameTitles”的检查等 |
数据库验证点 | 检查应用程序或网站所访问的数据库内容 | 检查数据库查询的记录集是否正确,数据记录是否被正确的添加到指定的表 |
Checkpoints and Output Values Per Add-In > Supported Checkpoints
? Insert
n Call
to new action: reusable action则该action可以被调用
n Call
copy of action: 将其他脚本的action复制到本脚本
n Call
existing action: 调用外部reusable action
n output
value可以将值输出到data table,下次使用
n Report向测试报告输出信息:
Reporter.ReportEnvent EnventStatus, ReportStepName,Details
EnventStatus: 0 or micPass, 1 or micFail,
2 or micDone, 3 or micWarning
Example: Reporter.ReportEnvent 0, “Step0”,”测试成功”
n Function
Definition Generator: 创建自定义函数或sub,并且可以把该函数注册到标准控件的某一方法中.
See help RegisterUserFunc statement
n Step
Generator: use utility objects, test objects, functions
Resources
menu: object repository
? RecoveryScenarios处理不可预见的事件,可预见的事件在代码中实现
n Resources
> Recovery scenario manager中添加事件定义和处理,并保存成一个文件.qrs
n File
> Settings>Recovery将上面的文件添加到scenarios
? the
Object Repository(OR) window
for the local object repository, and the Object Repository Manager for shared object repositories.
? 关联Associate
Repositories:QTP为某个Action生成相应的测试文件和目录。OR也与Action绑定,因此新的Action不能直接使用前一个Action的OR,解决办法是录制新的OR或者使用关联。关联的OR不能修改,界面显示是灰的。
? 要编写高质量的脚本,除了参考VBScript
coding conventions,还需要对对象库进行管理。可以修改对象名字,使他更易读;为了减少代码行长度,可以添加注释,适当分割对象,或者在对象库中调整层次关系,是底层控件上移。
Tools
menu
? Objectidentification:选择哪些属性来区别出一个唯一的控件
? Object
Spy可用于观察运行时对象的属性和方法。可以在界面上不断地改变测试对象,观察对象的属性和方法,通过这种方式了解控件行为,以及判断哪些属性可放到脚本中用于判断测试结果。
? Tools
> Web event recording configuration:
n Basic: 标准对象上的click等最基本事件
n Medium:
Basic + HTML的<Div><Span>等标签对象和事件
n High:
Medium + double click等高级事件
n Custom
settings
? Data
Driver将自动检测可能需要参数化的部分
? 虚拟对象Virtual
object: 若程序中包括那些行为类似标准对象的对象,但不被QTP识别,则可将控件所在区域定义为虚拟对象,并可映射到某些标准对象button,
check box, object, list, table, radio button,QTP在测试过程中会对虚拟对象模拟执行用户操作。
? View
Options > Auto-expand VBScript syntax启动VBS语法识别,When
a function library window or expert view is active
? PathFinder.Locate(“xxxx.xxx”)查找某文件所在的目录全路径。在Tools
> Options >Folders添加查找路径。
? Tools
> Options>Active screen设置录制过程中保存的对象级别,越高级后期编辑脚本越容易,但是录制过程更慢,需要更多的存储空间,默认是partial
1)none
2)minimum捕获和存储录制的对象及其父对象属性
3)partial 捕获和存储第一个步骤所执行的应用程序窗口以及该窗口下属的对象属性
4)complete捕获和存储所有信息,包括每个步骤中所有激活的窗口和对话框,web页面等
Keyword
view, 参数化
? Datatable: 脚本目录下的default.xls, file>settings>Run对应global
sheet属性,action call properties对应action
sheet属性。
DataTable.AddSheet (SheetName)
DataTable.GetSheetCount
DataTable.DeleteSheet sheetId: sheetID可以是名字,也可以是ID,ID从1开始
DataTable.GetCurrentRow 当前使用数据表中正在使用的行号
DataTable.GetRowCount 当前使用数据表的总行数
DataTable.Value(ParameterID[,SheetID]) 对sheetID当前行的ParmaterID列(列名或ID,从1开始)取值或赋值
? Test/Action
parameter:把action/test在properties中添加参数,转换成可重用的测试步骤
? Random
Number:RandomNumber(ParameterNameOrStartNumber[,EndNumber])
? Environment对象(File
> Settings > Environments):设置和读取环境变量。环境变量分built-in and user-defined,user-defined
variable可以export/load。通常在以下情况使用环境变量:1)希望访问QTP的系统数据,如测试的名字,操作系统名字;2)希望存储数据,以备不同的action或函数使用。
Environment.value(“OS”)
Filename=Environment.ExternalFileName
If Filename=”” then
Environment.LoadFromFile(“xxx.xml”)
End if
描述性编程
应对动态出现或变化的界面元素。用描述性编程写的脚本运行时,QTP使用脚本中的描述来查找对象,不是查对象库,而是与程序运行时QTP为其创建的临时测试对象版本进行匹配。? 直接描述:如Dialog(“Login”).WinEdit(“attached
text:=Agent Name:”).Set “mercury”
? 用Description对象
Set MyDesc = Description.Create()
MyDesc(“attached text”).value = “Agent Name:”
Dialog(“Login”).WinEdit(MyDesc).Set “Mercury”
? 具有后续强迫性:一旦父对象开始使用描述性编程,则后续子对象都要使用描述性编程的方式出现
? 也可以用多个属性和值来标识控件,中间用“,”隔开。
? 描述控件属性的值被当成正则表达式处理,因此如果要包含“* ?”等字符,要在字符前加上“\”,或者设置MyDesc(“Regular
Expression”).value = false
? 简化代码:如果描述的语句很长,可以将其赋予一个新变量,后续使用该新变量,或者用with语句。
? 在childobjects对象中使用description对象,有选择性的获取子对象
MyDesc(“text”).value = “button.*”
Set MyChildObject = swfWindow(“Form1”).childobjects(MyDesc)
ChildCount=MyChildObject.count
For counter = 1 to ChildCount – 1
MyChildObject(counter).click
Next
? 对控件动态属性的判断也可以使用GetROProperty,如
If xxxx.GetROProperty(“Enabled”) = true then xxx
QTP>Tools
? QTP> Tools > Test Batch Runner批量运行测试脚本。必须选择Options > Run > Allow other HP products to run tests and components
? QTP
> Tools > Silent Test Runner可以在不打开QTP的时候运行测试,模拟LR的调用过程,统计事务执行时间。
? 在LR中运行QTP脚本:
1)每台机器只能同时运行一个GUI Vuser
2)确保LR运行QTP脚本之前QTP已经关闭
3)确保启动一个QTP脚本之前,前一个QTP脚本已经关闭
常用语法,Utility
object, Utility statements:
GeneralHelp.chm > QuickTest Professional Object Model Reference? Utility
Object > Utility statements
n Print 非模式窗口。而MsgBox(prompt[,buttons][,title]) 模式窗口,会暂停执行直到关闭.
n Wait
10 等待10秒,暂停执行
n ExecuteFile
“xxx.vbs” 执行指定的vbs脚本文件,且一旦被执行,脚本文件中的函数可以直接使用
? Utility
Object
n 用Extern
object加载DLL,可以用它来调用windows API函数
n 用DotNetFactory对象访问.Net类库
Set var_createinstance = DotNetFactory.CreateInstance(“system.environment”)
Msgbox var_createinstance.CurrentDirectory
n 用XMLUtil对象检查XML文档
Set doc=XMLUtil.CreateXML() ‘创建XMLData对象 (<
supplemental objects)
Doc.LoadFile “Test.xml”
Ans=doc.validate(“d:\...\quickTest Prefessional\dat\objectRepository.xsd”) ‘用validate指定某个schema文件,检查加载的xml是否满足schema格式要求
If ans then
Msgbox “xml文件匹配指定的schema”
Else
errNo=doc.GetValidationErrorsNumber
for i=1 to errNo
errStr=doc.GetValidationError(i)
msgbox errStr
next
end if
? Standard
windows
n SystemUtil
object
used to control applications and processes during a run session。
SystemUtil.Run file, [params], [dir], [op], [mode]打开程序或文件
SystemUtil.BlockInput, UnBlockInput屏蔽/取消屏蔽鼠标和键盘输入
CloseDescendentProcesses, CloseProcessByHwnd, CloseProcessById,
CloseProcessByName, CloseProcessByWndTitle 关闭进程
n SystemUtil.Run
“logman”, “start perf_log”, SystemUtil.Run “logman”, “stop perf_log”
相当于打开perfmon工具,运行和停止perf_log性能日志
n Desktop: CaptureBitmap CaptureBitmapCaptureBitmap截屏,ChildObjects,
RunAnalog运行analog recording
n 常用方法和属性:exist判断控件是否存在,checkproperty(name,
value)检查控件属性, GetROProperty(name)获取控件当前属性,
WaitProperty(name,value,[timeout])等待控件的某一属性达到某值,直到超时
Object | Method,property |
Static | Check |
WinCalender | SetDate, SetTime |
WinCheckBox | Set |
WinComboBox | Select, GetItemsCount, GetItem(i) begin with 0 |
Window | Activate, Maximize,Restore, GetROProperty(“text”) |
WinEdit | Set, SetSecure, GetROProperty(“text”) |
WinEditor | Set, SetSecure, Type |
WinList | Select |
WinListView | Select, ExtendSelect |
WinMenu | Select "File;Open... Ctrl+O", Select "<Item 1>;<Item 2>", begin with 1 ItemPath =xxx.Menu("Menu").BuildMenuPath("View","Toolbars","Formatting") Or ItemPath = xxx.BuildMenuPath(3,2,2) Window("Some Window").WinMenu("Menu").Select ItemPath |
WinRadioButton | Set |
WinScrollbar | Set, NextLine, NextPage, PrevLine, PrevPage, GetROProperty(“maxscrollpos”) |
WinSpin | Next, Prev, Set |
WinStatusBar | GetContent, GetItemsCount, GetItem(i) begin with 0 |
WinTab | Select name or index(begin with 0), GetSelection |
WinToolbar | Press name or index(begin with 1) |
WinTreeView | Select, ExpandAll, Expand, Collapse |
OCX控件,可以插入到web页面或其他应用程序使用的组件或对象。同windows标准控件类似,有Exist,
click, type, CheckProperty, GetROProperty。
n 可以用object属性获取内部属性和方法,可以在debug
view或expert view窗口查看
n 用AcxUtil.FireEnvent执行方法
Set SaveBtn = Browser("Homepage").Page("Welcome").AcxButton("Save").Object
AcxUtil.FireEvent SaveBtn, “Click”
? VB
object:用object获取内部属性和方法
? Web对象
n QTP只支持录制IE
Browser,运行时则支持多种浏览器,如果机器上有安装多种,则可以在Automation > Record and run settings中设置用哪种浏览器
n QTP不支持录制多Tab页的浏览行为,因此要关闭IE选项>高级>Enabled
Tabbed Browsing
Page | Sync 等待页面加载完成, .object.links.length, .object.images.length |
Image | .object.src图片来源,.object.width/height |
Link | .CheckProperty(“url”,”http://....”), .object.href, click, FireEvent “click” |
WebButton | Click |
WebCheckBox | Set, object.value |
WebEdit | Set, object.value |
WebFile | Set “xxx.xxx” |
WebList | Select, .object.value, GetROProperty(“selection”) |
WebRadioGroup | Select, GetROProperty(“all items/items count/selected item index/value”) |
WebTable | RowCount, ColumnCount, GetCellData(row,col), ChildItem(intRow,intCol,”link”,0).click |
WebXML | Set obj=xxxx.GetData; obj.SaveFile “xxx.xml”, object.innertext |
presentation foundation)控件,windows forms控件和web
forms控件
n NET
WPF: object, AutomationElement返回和访问AutomationElemen暴露的标准属性,AutomationPattern返回Control
Pattern的特定实例,SupportedPatterns判断某个控件是否支持某个模式
n NET
Windows Forms: 用工具.Net windows forms spy或者object获取内部属性和方法
n NET
Web Forms: object
? Web
service插件:可以让QTP分析指定的WSDL是否满足WS-I标准。需要使用第三方工具Interoperability
testing tools (http://ws-i.org),在tools
> options中加上工具目录,然后用tools > validate wsdl验证。
? QTP
Automation Object Model自动化对象模型,通过它自动控制QTP的各项操作,如启动和运行测试。
n 使用场景:1)初始化脚本,自动启动QTP,设置环境变量和选项;2)维护测试;3)从其他程序中调用QTP
n QuickTest.Application:
1) Test:测试项目和脚本,File
> Settings > Properties > Generate scripts
2) Addins.Addin插件管理
3) Options选项设置对话框,
Tools > Options > General > Generate scripts
? Build
the Automation Framework
n group
tests
n use
function library
n output
the result
n define
the driver
? Mercury.DeviceReplay对象用于模拟鼠标单击和移动,还有键盘输入等操作
http://blog.csdn.net/Testing_is_believing/archive/2008/06/02/2504745.aspx
Set DeviceReplay=createobject("Mercury.devicereplay")
DeviceReplay.SendString(“xxx”)
DeviceReplay.MouseMove 200,200
DeviceReplay.MouseClick 200,200,left_mouse_button
Const Vk_shift=42, vk_tab=15
DeviceReplay.KeyDown(vk_shift)
devicereplay.presskey VK_tab
VBScript语法:
工具VBSEdit, QTP help/VBScript56.CHMl VBScript是VB的安全子集,设计目的是在多平台上运行并能使用ActiveX接口,适合windows管理,网页脚本编程和开发测试脚本。
l Option
Explicit显示声明变量, 常量定义const, 变量只有一种数据类型Variant,可以包含各种不同的信息,这取决于信息如何被应用。可以用VarType获取变量子类型。
l Dim
A, AA(10),B(), ReDim B(10),ReDim
Preserve B(20), 数组大小0~UBound(array)
l 变量作用域:过程级和script级(过程之外声明)
l 注释REM或者’
l Sub
{subname}({arguments})
{statements}
End Sub
Call subname(xxx,xxx) 或 subname
xxx,xxx
Function {function_name}({arguments})
{statements}
Function_name=xxx
End Function
Exit Do
Exit For
Exit Function
Exit Property
Exit Sub
l On
error resume next遇到错误或异常是继续执行下面的语句
l 参考VBScript56.CHM,
vbscript
1)User’s guide > VBScript Fundamentals
> VBScript Features:
operators(&字符串连接),
strings函数:
len, left, mid, right, InStr, InStrRev从结尾算起,LTrim, Rtrim, Trim, LCase, UCase, strComp, Split, Join
Conversions: Asc,
Chr, CStr, CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng
Variants判断函数:IsArray,
IsDate, IsNull, IsObject, VarType, TypeName
Math:Int,Fix, Int((upperbound - lowerbound + 1) * [code]Rnd+ lowerbound),[/code]
Randomize初始化随机数生成器
Input/Output: InputBox,
Msgbox
Control flow:
Do...Loop
For...Next
For Each...Next
If...Then...Else
Select Case
While...Wend
With
2)User’s guide > VBScript Fundamentals
> VBScript coding conventions:Naming conventions for objects,
variables, and procedures;Commenting conventions;Text
formatting and indenting guidelines
3)reference>constants>VarType constants
4)reference>constants>String
constants: vbCr=chr(13)回车carriage return,vbLf=chr(10)换行line
feed, vbCrLf=chr(13) & chr(10)回车换行
5) reference>Miscellaneous>character set
6)正则表达式:user’s
guide>introduction to regular expressions
reference > objects and collections > Regular Expression(RegExp) object:
属性 Pattern(模式,要搜索的字符串格式),
IgnoreCase(是否区分大小写), Global(True全部匹配,False仅匹配第一个)
方法 Test,
Replace, Execute
Test用于对指定的字符串执行一个正则表达式搜索,并返回一个布尔值,表示是否找到匹配的模式。Replace替换找到的字符串。Execute执行搜索,返回Matches
l VBScript56.CHM,
script run-time > FileSystemObject object: 文件系统操作。
GetFolder指定文件夹,Files显示文件,GetFile指定文件,Attributes文件属性,CreateTextFile创建文件,Write/WriteLine/WriteBlackLine写文件,FileExists判断文件是否存在。CreateFolder创建文件夹,DeleteFolder删除文件夹,CopyFolder复制文件夹,MoveFolder移动文件夹
相关文章推荐
- Qt入门-文件读写
- qt源代码的编译
- 使用QTextEdit实现状态信息显示框
- Qt中的treeWidget使用
- QT4之屏幕gif爬虫
- Qt 获得终端执行结果
- Qt 让QLabel自适应text的大小,并且自动换行
- qt中获得指定磁盘的空间大小
- 如何在每一个单词上显示QToolTip
- QT国际化,中英文等多语言界面显示的方法
- 基于Qt的二维码生成器
- Qt5 中关于信号槽的改动
- 一个简单的Qt socket 程序
- Qt 学习之路--Qt 模块简介
- QT 学习之路--自定义信号槽
- Qt 学习之路--信号槽
- QT学习之路2--hello world
- QT 学习之路 -序
- qt正则表达式小例子.
- 基于Qt-socketio客户端与Nodejs服务器通讯