QTP的基本功能介绍
• QTP的基本功能介绍
HP QuickTest Professional 支持功能測试和回归測试自己主动化,用于每一个主要软件应用程序和环境。此解决方式使用keyword驱动的測试概念,简化了測试创建和维护过程。它使測试人员可以使用专业的捕获技术直接从应用程序屏幕中捕获流程来构建測试案例。測试专家还可通过集成的脚本和调试环境全然訪问内在測试和对象属性
• QTP框架结构
以Test为測试执行单位,每一个Test包括若干类型Action。以Action为最
小单位映射对象库,多个Action之间能够共享统一
对象库,Action内的Step能够包括用户录制操作或者
函数库内对Function的调用。
QTP自己主动化測试的基本过程
• 录制測试脚本
• 编辑測试脚本
• 调试測试脚本
• 执行測试脚本
• 分析測试结果
录制測试脚本
1.插件载入设置管理
启动QTP,将显示下图所看到的插件管理界面
依据所測试应用程序控件类型选择须要载入的插件,比如,QTP自带的例子应用程序“Flight”是标准的windows程序,里面的部分控件是ActiveX控件,因此,在測试时选择载入ActiveX控件
2.录制和測试执行设置
选择了要载入的插件后,点击OKbutton,进入QTP的主界面,例如以下图所看到的,包含測试视图(keyword视图和专家试图),Data Table/Information界面、Active Screen界面。
选择菜单“Automation|Record and Run Settings”出现录制和执行设置界面
指定须要录制的应用程序,录制执行设置界面例如以下图,在选择windows应用程序的录制和执行界面中,能够选择两种录制方式,一种是”Record and run test on any open Windows-bassed”,这样的方式能够录制不论什么在系统中出现的程序;第二种是 ”Record and run only on” 这样的方式录制有针对的应用程序,避免录一些无关紧要的多余的界面,该种方式有3种设置的使用方法。
(1).选择“Application opened by QuickTest”选项,则仅录制和执行由QTP调用的程序
(2).选择“Application opened via the deskpot”选项,则仅录制開始菜单,桌面快捷方式启动的程序
(3).选择“Application specified below”则可录制和执行加入到列表中的应用程序。单击 button,加入要录制程序的可执行文件的路径。
比如,我们要录制“Flight”例子程序,我们就选择例子程序路径“C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe”
3.录制第一个自己主动化測试脚本
设置成仅录制”Flight“程序后,选择菜单”Automation|Record“,或工具栏上的 或按快捷键F3,QTP将自己主动启动指定文件夹
下的”Flight“程序,例如以下图,输入 username和password“MERCURY”,点击OK
button,录制“Flight”程序的登录过程
按“stop”扭或F4建停止录制,将得到如图录制结果
keyword视图:
专家视图:
在键字视图中,可看到录制的測试的操作步骤,每一个測试步骤及界面操作都在“Active Screen”界面显示出来。
这样就完毕了一个最主要的測试用例的编写,对于录制的測试脚本,须要进一步的改动整理,这些工作可在keyword视图进行,也可在专家视图中进行。
编辑測试脚本
1.在keyword视图中编辑測试脚本
(1).在keyword视图为測试步骤加入凝视
方法是:在keyword视图的列头单击鼠标右键,选择“comment”,则会多出一列,名为“comment”,在这一列中能够为每一个測试步骤加入凝视。
2).在keyword视图加入測试信息的输出
假设想在某个測试步骤完毕后,输入对应的測试信息到測试报告中,则可在该測试步骤单击右键,选择“Insert Step|Report”,出现如图所看到的界面。
如在激活“login”界面前报告“開始登陆”
在界面的“Status”下拉框中,选择測试
报告的状态(能够是Done、Passed、
Failed、Warning这四种状体中的一种)
在“name”中输入信息摘要,在“Details”
中输入具体信息
加入报告后如图:
(3).插入检查点
可检查类型包含下图中全部Checkpoint中子菜单项,包含文字,位图,XML,数据库(数据表)等检查点。每一个检查点的运行结果都会在Automation-Result中存在对应的记录,有些检查点须要在录制状态下才可以使用。
也可通过在測试步骤上单击鼠标右键选择菜单”Insert Standard Checkpoint“
比如我们检查OKbutton的属性,插入一个标准检查点。
首先,定位到ok提交的步骤,单击右键,
选择菜单” Insert Standard
Checkpoint“,出现如右图界面。
在界面中选择须要检查的属性,比如,选择
“Enableed”属性,设置为ture,选择“Text”
属性,设置“OK”。
单击“OK”button后,则能够在keyword视图看到
新加入的检查点步骤,例如以下图
(4).在keyword视图中插入新的測试步骤
比如在输入password前,我们需先点击“help”button查看帮助,这时我们就须要增加点击“help”button的測试步骤。
首先定位到输入username的步骤,然后单击鼠标右键,选择“Insert Step|Step Generator”,则出现左图界面,“Category”包含“Test Object”、“Utility Object”和“Function”,分别代表例如以下
含义:
Test Object:測试对象,即被測程序的界
面上的控件元素。
Utility Object:工具对象,是QTP内建的
各种编写測试脚本,辅助建立測试逻辑的工
具类对象
Function:各种函数,包含库函数、内建
函数,本地脚本函数。
在这里,我们选择“Test Object”,然后单
击“Object”下拉框旁边的图标button
出现选择对象界面,如左图,在界面中选择“help”对象,然后单击“OK”返回到“Step Generator”界面后,在“operation”的下拉框选择“Click”,并把“Insert another Step”选项勾选上。
(假设在“Select Object for Step”界面的对象 列表中没有“help”对象,能够单击界面中的手
型button,然后移动到Flight程序的“Login”界
面,从中选择对象“help”button,则出现下图界
面,单击“OK”button,把“help”button加入到測试
对象列表中)
单击“Insert”button,返回keyword视图,可看到新的測试步骤已经加入,如图
2.在专家视图中编辑測试脚本
“Expert View”是一个强大的VBscript的脚本编辑器,在这里,能够直接编写測试脚本的代码,适合熟悉VBscript语言,有较好编程技巧的自己主动化測试project师使用。
QTP提供的脚本编辑器支持“语法感知”功能,比如,在代码中输入“Dialog(”Login“)后加点,则自己主动显示一个下拉列表,从中可选取”Login“測试对象所包括的全部属性和方法,如图
调试測试脚本
1.语法检查
选择菜单”Tools|Check Syntax“,或通过工具栏选择 button,或按快捷键”CTRL+F7“对測试脚本进行语法检查,如语法检查通过,则在”information“界面显示提示信息,例如以下图
假设语法检查发现问题,则会在”information“界面列出具体的信息,例如以下图
2.使用断点
语法检查通过后,能够直接执行代码,也能够设置断点对脚本进行调试。能够通过快捷键”F9“,或单击代码所在行的边框,或按工具栏的 button设置断点。
然后,按F5键或 button执行,执行过程将在断点处停住,如图。这时候,能够进行单步调试,能够选择“Debug|Step Over”,或快捷键“F10”执行到下一行代码,也能够选择“Debug|Step into”,或快捷键“F11”进入代码行中所调用的函数
然后,按F5键或run button执行,执行过程将在断点处停住,如图。这时候,能够进行单步调试,能够选择“Debug|Step Over”,或快捷键“F10”执行到下一行代码,也能够选择“Debug|Step into”,或快捷键“F11”进入代码行中所调用的函数。
调试查看器的使用
在调试过程中,可选择菜单”view|Debug Viewer“显示调试查看器,如图
就能够看到測试对象属性或变量的值
执行測试脚本
1.执行整个測试,在进行语法检查和调试都无误后,能够按F5键执行整个測试脚本。在执行測试之前,能够对执行做必要的设置,选择菜单”Tools|Options“,出现下图界面。
“Run mode”执行模式可选normal
或fast
“View results when run
session end” 在执行结束后自
动打开測试结果界面
“Allow other Mercury produncts
To run test”同意其它Mercury的
工具调用QTP
“save still image captures to
results”保存精巧图像到结果中
2.执行部分測试
假设多个Action,则能够定位到须要执行的Action,然后,选择菜单“Automtion|Run Current Action”,来执行当前的的Action,有利于定位当前Action的问题
还有还有一种仅仅执行部分測试的方式,方法是选择某个測试步骤,单击右键,选择菜单“Run From Step”,能够从当前測试開始执行測试,也能够选择“Run to step”,从開始执行到当前所选的測试步骤
3.批量执行測试
能够使用QTP自带的工具“Test Batch Runner”
来批量执行測试脚本。需在
“Tools|Options”中,确保
“Allow other Mercury
products to run Test”选项
被勾选上。
通过開始菜单打开
“Test Batch Runner”工具,如图,选择
“Batch|Add”来加入要执行的測试脚本,
选择“Batch|Run”来批量执行列表中全部
的測试脚本
分析測试结果
1.选择測试结果的存放位置
在QTP中,执行測试脚本,会出现下图对话框。
假设选择”New run results folder“,能够为本次測试选择一个文件夹用于存储測试结果文件;假设选择”Temporary run results folder“,则QTP将执行測试结果放在默认文件夹中,而且覆盖上次该文件夹中的測试结果
2.查看概要測试结果
測试脚本执行结束后,可在下图所看到的界面中查看概要的是结果信息,包含測试的名称,測试開始和结束时间,执行的迭代次数。通过的状态等。
3.查看检查点的结果
在測试结果的左边窗体中,用树形结构展示了全部測试步骤,假设选择节点Cheeckpoint ”OK“,则能够看到下图的结果。
QTP脚本开发
• keyword驱动測试
• 数据驱动測试
• QTP描写叙述性编程
keyword驱动測试
1.什么是keyword驱动測试方法
keyword驱动測试方法(Keyword-driven testing),也叫表格驱动測试方法。keyword驱动測试把測试脚本的编程工作分离出去,让那些没有编程技巧的人也能开发自己主动化測试脚本。
实现keyword驱动測试主要依赖自己主动化框架。通过自己主动化框架,仅须要測试人员开发表格和keyword,框架通过解释表格数据和keyword来运行測试脚本,驱动被測的应用程序。这能够在QTP的keyword视图中清晰的体现出来,比如,对windows计算器进行測试的一个測试用例可用如图所看到的測试表格来完毕。
2.编辑对象库
使用QTP的keyword驱动框架进行自己主动化測试的第一步是收集測试对象的信息,存储到对象库中(Object Repository)。
加入測试对象的方法是选择菜单“Resources|Object Repository”,打开“Object Repository-All Object Repositories”对话框,如左下图。
以计算器程序为例,选菜单“Oboject|Add Object to local”跳到
打开的计算器应用程序
界面,点击鼠标出现下
图对话框,点击OK按扭
加入对象到对象库中
加入后的对象库如图,这样就能够在keyword视图中编辑測试步骤时,从下拉列表中选择測试对象
3.选择測试对象
编辑好对象库后,就能够在keyword视图的Item列选择须要的測试对象,如左图。
假设測试对象不在下拉列表中,则可
以选择下拉列表中的“Object From
Repository”,从对象库中选择,
例如以下图所看到的。
4.选择对象对应的操作
从对象库中选取了測试对象后,则能够在“Operation”列选择其对应的操作,比如,button的单击可选择“click”,如图所看到的
5.设置測试逻辑
在keyword视图中,相同支持測试逻辑的设置,比如条件推断,循环等。
以下介绍一个For循环的測试逻辑。该測试逻辑实现循环点击计算器的“=”button多次的效果。
(1).在keyword视图,单击鼠标右键,选择菜单“Insert Step|Loop statement|For…Next”,加入一个循环的測试步骤,如图
(2).在“Value”列中,显示了For循环语句“For Iterator=1 To 1 Step 1”,该语句仅循环1次,因此,须要改动当中“To”后面的值为“3”,让循环体内的语句运行3次,如图
(3).然后,在该语句的后面加入一个測试步骤,在Item列中选择測试对象为“=”button,在Operation列中,选择測试对象的操作为“Click”,如图所看到的
这样就完毕了一个循环測试
逻辑的设置,在专家试图中能够
看到相应的脚本代码如右图
数据驱动測试
自己主动化測试对录制和编辑好的脚本进行回放,这样的线性的自己主动化測试方式缺点是測试覆盖面比較低。測试回放的仅仅是录制时做出的界面操作,以及输入的測试数据,或者是脚本编辑时指定的界面操作和測试的数据。
怎样让測试脚本运行时,不只限于測试录制或编辑时的測试数据呢?数据驱动測试是解决问题的最佳方案。数据驱动測试把測试脚本中的測试数据取出来,存到外部文件或数据库中,在測试过程中,从文件动态读入測试数据。
数据驱动測试的一般步骤
1.參数化測试步骤的数据
2.编辑数据表格
3.设置迭代次数
在QTP中,能够使用多种方式来对測试脚本进行參数化,包含数据表參数化(Data Table Parameters)、环境变量參数化(Environment Variable Parameters)、随机数參数化(Random Number Parameters)等。
以下以QTP自带的“Flight”程序为例,介绍怎样对測试脚本进行參数化。
录制的脚本如图所看到的,以“目的地”的測试步骤的參数化过程为例,介绍在keyword视图中对測试脚本进行參数化。
(1).数据表參数化
首先,选择“Fly to:”所在的測试步骤行,单击“Value”列所在的单元格,例如以下图所看到的。
单击单元格旁边的“<#>”button,或按快捷键
“CTRL+F11”,则出现如右图界面
在这个界面中,选择“Parameters”,在旁边
的下拉框中选择“Data Table”,在“name”中输
入參数名,在“Location in Data Table”中
能够选择“Global sheet”,也能够选择
“Current Action sheet”,差别是參数存储的
位置不同
通过菜单“View|Data Table”就能够看见如图所看到的数据表,能够看到,在flyto列有一个默认数据“London”,这是參数化前录制脚本中的常量。
把其它几个数据也參数化后,如图所看到的
编辑数据表格
通过直接编辑表格加入很多其它的測试数据,如图,QTP执行时,就会从如图所看到的的数据表格中提取数据来对測试过程中的各项输入进行參数化
參数化检查点
測试脚本的最后一个步骤是检查定票记录中的航班终点是否正确,相同须要进行适当地參数化,方法是单击检查点所在測试步骤的“Value”列中的单元格,如图
单击旁边的 "对号"button,出现如右图所看到的界面。在“Configure value”中选择“Parameter”后,单击“OK”button接收默认的设置,也可单击旁边的编辑button,在有图所看到的的界面中,进行參数化的具体设置。我们能够选择建一个新的參
数,也能够选择“flyto”,由于检查点所指
的航班终点得到的预期值应该与航班终
点的输入数据一致,单击OKbutton完毕參
数化
设置数据表格的迭代方式
把測试步骤和检查点的參数化工作都完毕后,执行这个測试脚本前,还要做一些必要的设置,选择菜单“File|Settings”,出现如图測试设置界面
“Run one iterator only”是指仅执行一次,也就是说,即使Data Table中有多条数据,也仅执行一次;“Run on all rows”则是Data Table中全部数据都执行一次;选择“Run from row…to…row…”则可进一步设置測试数据执行的范围。
选择“Run on all row”,执行后得到如图所看到的測试结果
(2).使用随机数进行參数化
对于选择航班这个測试步骤的參数化有所不同,由于航班数据表会尾随所选的起点和终点发生变化,因此要通过随机数来做特殊处理,例如以下代码所看到的。
先通过訪问GetItemsCount属性,获取航班列表的行数,然后使用RandomNumber 随机取当中一项,最后通过Select方法选择航班
3).使用环境变量的參数化
以下以“Flight”的登录界面的“Agent Name”和“Password”为例介绍用环境变量參数化。
首先,选择菜单“File|Settings”,出现如图界面。在这个界面中,切换
到“Environment”页,在“Variable
type”中选择“User-Defined”,然
后单击旁边的“+”button,在下图定
义环境变量的名和输入的值。
反复上面步骤,定义“Password”环境变量,得到例如以下图结果。
定义好环境变量并设置好其值之后,就能够在測试步骤中使用该环境变量。
在keyword视图中,定位到“AgentName”測试步骤的“Value”列,例如以下图,
单击旁边的“<#>”,出现下图所看到的界面。在界面中,选择”Parameter”,并在下拉框中选择“Environment”,在“Name”中选择“AgentName”。反复这个步骤,设置“输入登录password”。
设置完后,结果如图,QTP在执行測试脚本时,就会读取測试步骤绑定的环境变量值,来执行对应的数据输入动作。
QTP描写叙述性编程
測试过程中,有些界面元素是动态出现或动态变化的,在录制时,并没有被加到測试库中,怎样让这些在測试中动态出现的界面元素得到控制呢?QTP提供了描写叙述性编程的方式来解决这些问题。
用描写叙述性编程编写的脚本在执行时,QTP会使用測试脚本中给出的对象描写叙述来查找对象,查找的位置不是对象库,而是与測试程序执行时QTP为其创建的暂时測试对象版本号进行匹配。
在QTP中,有两种描写叙述性编程的开发方式:一种是“直接描写叙述”的方式,还有一种是使用“Description对象”的方式。以下我们就以NCP servers登录后的时间显示表为例来说明,如图。
1.直接描写叙述方式
对于前面的NCP servers时间显示表,測试用例是要測试它的时间是否正确,它是随时间不断变化的,能够通过描写叙述性编程来解决,比如以下的脚本:
Browser("深圳市元征软件有限责任公司").Page("深圳市元征软件有限责任公司").WebEdit("userName").Set "xiaoyu"
Browser("深圳市元征软件有限责任公司").Page("深圳市元征软件有限责任公司").WebEdit("password").SetSecure "4bda8fb406a2bf5fa628b028325fcebe031d"
wait 8
Browser("深圳市元征软件有限责任公司").Page("深圳市元征软件有限责任公司").Image("dl").Click
'通过正則表達式匹配web表
text1 = "server时间.*"
str = Browser("深圳市元征软件有限责任公司").Page("用户管理 | 诊断服务增值业务服务管理后台").WebTable("name:=WebTable","Text:=" & text1).GetCellData (1,2)
Msgbox str
直接描写叙述的语法格式例如以下:
TestObject(“PropertyName1:=PropertyValue1”,“…”,“PropertyNameN:=PropertyValueN”)
TestObject:測试对象的类型名,比如为WinButton,WebTable等
PropertyName:測试对象属性名
PropertyValue:測试对象属性值
2.使用Description对象
要使用Description对象,首先,用类似以下的代码:
Set MyDescription = Description.Create()
text1 = "server时间.*“
‘为Description加入描写叙述属性
MyDescription(”name”).value = “WebTable”
MyDescription(”Text”).value = text1
str = Browser("深圳市元征软件有限责任公司").Page("用户管理 | 诊断服务增值业务服务管理后台").WebTable(MyDescription).GetCellData (1,2)
在这里,測试对象的属性描写叙述都包装在了Description对象中,用Description对象实例来代表一个測试对象的属性描写叙述
QTP与QC的整合
通过QTP连接到QC后,能够将測试脚本保存到QC的測试需求中,然后就能够通过QC依据測试用例需求来执行QTP脚本并自己主动记录測试结果。方法例如以下:
1、安装“QuickTest Add-in for Quality Center”插件, QTP的安装界面如图,选择“Quality Center载入项”就能够安装QC的插件
2、QTP连接到QC
能够通过“File|Quality Center Connection”菜单,或 button打开“File|Quality Center Connection”对话框,如图。
在“File|Quality Center Connection”对话框中,在Server URL中输入QC地址,点击“Connect”button
连接到QC后,出现左图所看到的用户登录对话框。与通过IE登录QC一样,填入username,password点击“Authenticate认证后,选择域,project就能够了。
登录后如右图所看到的,点击“Close”button,关闭对话框
3、QTP脚本保存到QC
连接到QC后,在保存脚本时,会出现“Quality Centera”button,如左图。点击该button,会跳到QC中的測试计划文件夹中,如右图,选择好文件夹,改动好命名,保存就可以。
4、QC中执行測试脚本
(1)、在測试计划中执行測试脚本
在測试计划中,选择要执行的測试脚本,然后选择測试脚本页面,就能够看到与QTP中一样的专家视图和keyword视图的脚本,如图。点击 button,就会启动QTP,并执行脚本,但执行结束后不会保存结果到QC中。事实上在測试计划中一般都调试脚本。
(2)、在測试实验室执行QTP脚本
在測试实验室中,能够执行一个測试脚本,也能够批量执行一个測试集中的多个脚本。
建立一个包括8个測试脚本的測试集后(建立測试集的方法參考QC的培训文档),如图。能够选側一个測试脚本,然后点击执行button,执行单个測试项,也能够直接点击执行測试集button,执行測试集中的全部測试脚本。
点击执行測试集后会出现如图对话框,在该对话框中配置执行主机,配置后,点击执行所有,測试脚本就会依次被执行。
执行完后測试结果记录到QC,如图,能够点击 "LAUNCH REPORT"查看測试报告。
NCP Service项目自己主动化測试
以NCP Service项目为例,演示QTP应用于WEB程序的自己主动化測试