QTP的基本功能介绍
HP QuickTest Professional 支持功能测试和回归测试自动化,用于每个主要软件应用程序和环境。此解决方案使用关键字驱动的测试概念,简化了测试创建和维护过程。它使测试人员能够使用专业的捕获技术直接从应用程序屏幕中捕获流程来构建测试案例。测试专家还可通过集成的脚本和调试环境完全访问内在测试和对象属性
QTP框架结构
以Test为测试运行单位,每个Test包含若干类型Action。以Action为最小单位映射对象库,多个Action之间可以共享统一
对象库,Action内的Step可以包含用户录制操作或者函数库内对Function的调用。
一、QTP自动化测试的基本过程
录制测试脚本
编辑测试脚本
调试测试脚本
运行测试脚本
分析测试结果
录制测试脚本
1.插件加载设置管理
启动QTP,将显示下图所示插件管理界面
根据所测试应用程序控件类型选择需要加载的插件,例如,QTP自带的样例应用程序“Flight”是标准的windows程序,里面的部分控件是ActiveX控件,因此,在测试时选择加载ActiveX控件
2.录制和测试运行设置
选择了要加载的插件后,点击OK按钮,进入QTP的主界面,如下图所示,包括测试视图(关键字视图和专家试图),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”则可录制和运行添加到列表中的应用程序。单击
按钮,添加要录制程序的可执行文件的路径。
例如,我们要录制“Flight”样例程序,我们就选择样例程序路径“C:\Program
Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe”
3.录制第一个自动化测试脚本
设置成仅录制”Flight“程序后,选择菜单”Automation|Record“,或工具栏上的
或按快捷键F3,QTP将自动启动指定目录
下的”Flight“程序,如下图,输入 用户名和密码“MERCURY”,点击OK
按钮,录制“Flight”程序的登录过程
按“stop”扭或F4建停止录制,将得到如图录制结果
关键字视图:
专家视图:
在键字视图中,可看到录制的测试的操作步骤,每个测试步骤及界面操作都在“Active
Screen”界面显示出来。
这样就完成了一个最基本的测试用例的编写,对于录制的测试脚本,需要进一步的修改整理,这些工作可在关键字视图进行,也可在专家视图中进行。
编辑测试脚本
1.在关键字视图中编辑测试脚本
(1).在关键字视图为测试步骤添加注释
方法是:在关键字视图的列头单击鼠标右键,选择“comment”,则会多出一列,名为“comment”,在这一列中可以为每个测试步骤添加注释。
(2).在关键字视图添加测试信息的输出
如果想在某个测试步骤完成后,输入相应的测试信息到测试报告中,则可在该测试步骤单击右键,选择“InsertStep|Report”,出现如图所示界面。
如在激活“login”界面前报告“开始登陆”
在界面的“Status”下拉框中,选择测试
报告的状态(可以是Done、Passed、Failed、Warning这四种状体中的一种)
在“name”中输入信息摘要,在“Details”中输入详细信息
添加报告后如图:
(3).插入检查点
可检查类型包括下图中所有Checkpoint中子菜单项,包括文字,位图,XML,数据库(数据表)等检查点。每个检查点的执行结果都会在Automation-Result中存在相应的记录,有些检查点需要在录制状态下才能够使用。也可通过在测试步骤上单击鼠标右键选择菜单”Insert
Standard Checkpoint“
例如我们检查OK按钮的属性,插入一个标准检查点。首先,定位到ok提交的步骤,单击右键,选择菜单”
Insert Standard Checkpoint“,出现如右图界面。在界面中选择需要检查的属性,例如,选择“Enableed”属性,设置为ture,选择“Text”属性,设置“OK”。
单击“OK”按钮后,则可以在关键字视图看到新添加的检查点步骤,如下图
(4).在关键字视图中插入新的测试步骤
例如在输入密码前,我们需先点击“help”按钮查看帮助,这时我们就需要加入点击“help”按钮的测试步骤。
首先定位到输入用户名的步骤,然后单击鼠标右键,选择“Insert Step|Step
Generator”,则出现左图界面,“Category”包括“Test Object”、“Utility
Object”和“Function”,分别代表如下
含义:
Test Object:测试对象,即被测程序的界面上的控件元素。
Utility Object:工具对象,是QTP内建的各种编写测试脚本,辅助建立测试逻辑的工具类对象
Function:各种函数,包括库函数、内建函数,本地脚本函数。
在这里,我们选择“Test Object”,然后单击“Object”下拉框旁边的图标按钮
出现选择对象界面,如左图,在界面中选择“help”对象,然后单击“OK”返回到“Step
Generator”界面后,在“operation”的下拉框选择“Click”,并把“Insert another
Step”选项勾选上。
(如果在“Select Object for Step”界面的对象 列表中没有“help”对象,可以单击界面中的手型按钮,然后移动到Flight程序的“Login”界面,从中选择对象“help”按钮,则出现下图界面,单击“OK”按钮,把“help”按钮添加到测试
对象列表中)
单击“Insert”按钮,返回关键字视图,可看到新的测试步骤已经添加,如图
2.在专家视图中编辑测试脚本
“Expert View”是一个强大的VBscript的脚本编辑器,在这里,可以直接编写测试脚本的代码,适合熟悉VBscript语言,有较好编程技巧的自动化测试工程师使用。
QTP提供的脚本编辑器支持“语法感知”功能,例如,在代码中输入“Dialog(”Login“)后加点,则自动显示一个下拉列表,从中可选取”Login“测试对象所包含的所有属性和方法,如图
调试测试脚本
1.语法检查
选择菜单”Tools|Check Syntax“,或通过工具栏选择 按钮,或按快捷键”CTRL+F7“对测试脚本进行语法检查,如语法检查通过,则在”information“界面显示提示信息,如下图
如果语法检查发现问题,则会在”information“界面列出详细的信息,如下图
2.使用断点
语法检查通过后,可以直接运行代码,也可以设置断点对脚本进行调试。可以通过快捷键”F9“,或单击代码所在行的边框,或按工具栏的
按钮设置断点。
然后,按F5键或 按钮运行,运行过程将在断点处停住,如图。这时候,可以进行单步调试,可以选择“Debug|Step
Over”,或快捷键“F10”运行到下一行代码,也可以选择“Debug|Step into”,或快捷键“F11”进入代码行中所调用的函数
然后,按F5键或run 按钮运行,运行过程将在断点处停住,如图。这时候,可以进行单步调试,可以选择“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脚本开发
1.关键字驱动测试
2.数据驱动测试
3.QTP描述性编程
关键字驱动测试
1.什么是关键字驱动测试方法
关键字驱动测试方法(Keyword-driven testing),也叫表格驱动测试方法。关键字驱动测试把测试脚本的编程工作分离出去,让那些没有编程技巧的人也能开发自动化测试脚本。
实现关键字驱动测试主要依赖自动化框架。通过自动化框架,仅需要测试人员开发表格和关键字,框架通过解释表格数据和关键字来执行测试脚本,驱动被测的应用程序。这可以在QTP的关键字视图中清晰的体现出来,例如,对windows计算器进行测试的一个测试用例可用如图所示测试表格来完成。
2.编辑对象库
使用QTP的关键字驱动框架进行自动化测试的第一步是收集测试对象的信息,存储到对象库中(Object
Repository)。
添加测试对象的方法是选择菜单“Resources|Object Repository”,打开“Object
Repository-All Object Repositories”对话框,如左下图。
以计算器程序为例,选菜单“Oboject|Add Object to local”跳到打开的计算器应用程序界面,点击鼠标出现下图对话框,点击OK按扭,添加对象到对象库中.
添加后的对象库如图,这样就可以在关键字视图中编辑测试步骤时,从下拉列表中选择测试对象
3.选择测试对象
编辑好对象库后,就可以在关键字视图的Item列选择需要的测试对象,如左图。
如果测试对象不在下拉列表中,则可以选择下拉列表中的“Object FromRepository”,从对象库中选择,如下图所示。
4.选择对象相应的操作
从对象库中选取了测试对象后,则可以在“Operation”列选择其相应的操作,例如,按钮的单击可选择“click”,如图所示
5.设置测试逻辑
在关键字视图中,同样支持测试逻辑的设置,例如条件判断,循环等。
下面介绍一个For循环的测试逻辑。该测试逻辑实现循环点击计算器的“=”按钮多次的效果。
(1).在关键字视图,单击鼠标右键,选择菜单“Insert Step|Loop
statement|For…Next”,添加一个循环的测试步骤,如图
(2).在“Value”列中,显示了For循环语句“For Iterator=1
To 1 Step 1”,该语句仅循环1次,因此,需要修改其中“To”后面的值为“3”,让循环体内的语句执行3次,如图
(3).然后,在该语句的后面添加一个测试步骤,在Item列中选择测试对象为“=”按钮,在Operation列中,选择测试对象的操作为“Click”,如图所示
这样就完成了一个循环测试逻辑的设置,在专家试图中可以看到对应的脚本代码如右图
数据驱动测试
自动化测试对录制和编辑好的脚本进行回放,这种线性的自动化测试方式缺点是测试覆盖面比较低。测试回放的只是录制时做出的界面操作,以及输入的测试数据,或者是脚本编辑时指定的界面操作和测试的数据。
如何让测试脚本执行时,不仅仅限于测试录制或编辑时的测试数据呢?数据驱动测试是解决这个问题的最佳方案。数据驱动测试把测试脚本中的测试数据取出来,存到外部文件或数据库中,在测试过程中,从文件动态读入测试数据。
数据驱动测试的一般步骤
1.参数化测试步骤的数据
2.编辑数据表格
3.设置迭代次数
在QTP中,可以使用多种方式来对测试脚本进行参数化,包括数据表参数化(Data
Table Parameters)、环境变量参数化(Environment Variable Parameters)、随机数参数化(Random
Number Parameters)等。
参数化测试步骤的数据
下面以QTP自带的“Flight”程序为例,介绍如何对测试脚本进行参数化。
录制的脚本如图所示,以“目的地”的测试步骤的参数化过程为例,介绍在关键字视图中对测试脚本进行参数化。
(1).数据表参数化
首先,选择“Fly to:”所在的测试步骤行,单击“Value”列所在的单元格,如下图所示。
单击单元格旁边的“<#>”按钮,或按快捷键“CTRL+F11”,则出现如右图界面
在这个界面中,选择“Parameters”,在旁边的下拉框中选择“Data
Table”,在“name”中输入参数名,在“Location in Data Table”中可以选择“Global
sheet”,也可以选择“Current Action sheet”,区别是参数存储的位置不同
通过菜单“View|Data Table”就可以看见如图所示数据表,可以看到,在flyto列有一个默认数据“London”,这是参数化前录制脚本中的常量。
把其他几个数据也参数化后,如图所示
编辑数据表格
通过直接编辑表格添加更多的测试数据,如图,QTP运行时,就会从如图所示的数据表格中提取数据来对测试过程中的各项输入进行参数化
参数化检查点
测试脚本的最后一个步骤是检查定票记录中的航班终点是否正确,同样需要进行适当地参数化,方法是单击检查点所在测试步骤的“Value”列中的单元格,如图
单击旁边的 "对号"按钮,出现如右图所示界面。在“Configure
value”中选择“Parameter”后,单击“OK”按钮接收默认的设置,也可单击旁边的编辑按钮,在有图所示的界面中,进行参数化的详细设置。我们可以选择建一个新的参数,也可以选择“flyto”,因为检查点所指的航班终点得到的预期值应该与航班终点的输入数据一致,单击OK按钮完成参数化
设置数据表格的迭代方式
把测试步骤和检查点的参数化工作都完成后,运行这个测试脚本前,还要做一些必要的设置,选择菜单“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”,然后单击旁边的“+”按钮,在下图定义环境变量的名和输入的值。
重复上面步骤,定义“Password”环境变量,得到如下图结果。
定义好环境变量并设置好其值之后,就可以在测试步骤中使用该环境变量。
在关键字视图中,定位到“AgentName”测试步骤的“Value”列,如下图,
单击旁边的“<#>”,出现下图所示界面。在界面中,选择”Parameter”,并在下拉框中选择“Environment”,在“Name”中选择“AgentName”。重复这个步骤,设置“输入登录密码”。
设置完后,结果如图,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 = "服务器时间.*" 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 = "服务器时间.*“ ‘为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”菜单,或
按钮打开“File|Quality Center Connection”对话框,如图。
在“File|Quality Center Connection”对话框中,在Server
URL中输入QC地址,点击“Connect”按钮
连接到QC后,出现左图所示用户登录对话框。与通过IE登录QC一样,填入用户名,密码点击“Authenticate认证后,选择域,工程就可以了。登录后如右图所示,点击“Close”按钮,关闭对话框
3、QTP脚本保存到QC
连接到QC后,在保存脚本时,会出现“Quality Centera”按钮,如左图。点击该按钮,会跳到QC中的测试计划目录中,如右图,选择好目录,修改好命名,保存即可。
4、QC中运行测试脚本
(1)、在测试计划中运行测试脚本
在测试计划中,选择要运行的测试脚本,然后选择测试脚本页面,就可以看到与QTP中一样的专家视图和关键字视图的脚本,如图。点击
按钮,就会启动QTP,并运行脚本,但运行结束后不会保存结果到QC中。其实在测试计划中一般都调试脚本。
(2)、在测试实验室运行QTP脚本
在测试实验室中,可以运行一个测试脚本,也可以批量运行一个测试集中的多个脚本。
建立一个包含8个测试脚本的测试集后(建立测试集的方法参考QC的培训文档),如图。可以选侧一个测试脚本,然后点击运行按钮,运行单个测试项,也可以直接点击运行测试集按钮,运行测试集中的所有测试脚本。
点击运行测试集后会出现如图对话框,在该对话框中配置运行主机,配置后,点击运行全部,测试脚本就会依次被执行。
运行完后测试结果记录到QC,如图,可以点击 "LAUNCH REPORT"查看测试报告。
NCP Service项目自动化测试
以NCP Service项目为例,演示QTP应用于WEB程序的自动化测试 |