1. QTP的基本功能


1.1 QTP测试过程

QTP的基本功能包含两大部分:一部分是提供给初级用户的关键字视图,另一部分是提供给熟悉VBScript脚本编写的专家视图。在实际的测试中可以结合使用。

使用QTP进行自动化测试一般包括5个步骤:

1) 录制测试脚本: 利用QTP对象识别、鼠标和键盘监控机制来录制测试脚本。

2) 编辑测试脚本: 包括调整测试步骤、编辑测试逻辑、插入检查点、添加测试输出信息、添加注释等。

3) 调试测试脚本: 利用"Check Syntax"功能检查测试脚本的语法错误,利用调试功能检查脚本逻辑。

4) 运行测试脚本: 可运行单个"Action",也可批量运行测试脚本。

5) 分析测试结果: 使用QTP的测试结果查看工具查看测试结果。


1.2 关键字视图

对于录制下来的脚本,需要进一步修改和调整,这些工作可在关键字视图(Keyword View)中进行,也可在专家视图(Expert View)中进行。

对于新手,关键字视图会更容易理解和使用。如下图所示,可以看出这个测试的所有测试步骤:

1) 打开浏览器,访问"http://www.baidu.com"。

2) 在搜索框中输入“软件测试”。

3) 点击“百度一下”按钮。

182642700.jpg

虽然QTP能为每一个步骤自动生成文档,但是未必能满足需求,因此还需要为测试步骤添加必要的注释。首先在关键字视图的表格列头中单击鼠标右键,选择"Comment",即多出一列名为"Commnet"的列,在这一列中可以为每一个测试步骤添加注释,如下所示:

182835199.jpg

如果想在某个测试步骤完成后,输出相应的测试信息到测试报告中,可以单击鼠标右键,选择"Insert Step >  Report",在界面中的"Status"下拉框中,选择写入测试报告的状态(可以是Done、Passed、Failed、Warning这4种状态的一种),在"Name"中输入信息摘要,在"Details"中输入详细的测试步骤信息,如下所示:

182352710.jpg

如果想检查搜索框的内容是否被正确输入,可在关键字视图中通过QTP的检查点插入功能来实现。首先定位到设置输入框内容的测试步骤,然后点击鼠标右键,选择菜单"Insert Standard Checkpoint",在界面中选择需要检查的属性,如"Value"属性,设置为“软件测试”。单击"OK"按钮后,则在在关键字视图中看到新添加的检查点步骤,如下所示:

183532225.jpg


1.3 专家视图

在QTP中,选择"View > Expert View",可以看到如下的专家视图,"Expert View"是一个强大的VBScript编辑器,在这里可以直接编写测试脚本的代码,适合熟悉VBScript语言的自化测试工程师使用。

184118786.jpg

QTP提供的脚本编辑器支持“语法感知”功能,例如在代码中输入“Browser("百度一下,你就知道")”后加点,则自动显示一个下拉列表,从中可选取属于“Browser("百度一下,你就知道")”测试对象所包含的所有属性和方法,如下所示:

184438585.jpg


2. 编辑测试脚本


2.1 识别对象

基于GUI的自动化测试主要是围绕着界面的控件元素来进行的,QTP针对不同语言开发的控件,采取不同的对象识别技术。在QTP中,选择菜单“Tools > Object Identification”,在界面中可看到各种标准Windows控件对应的对象识别方法,可以单击"Add/Remove"按钮,选择更多的控件属性来唯一识别控件,如下所示:

203831794.jpg

QTP提供"Object Spy"工具可用于观察运行时测试对象的属性和方法。选择菜单"Tools > Object Spy",在界面中单击左上角的手型按钮,移动到测试对象上,单击鼠标左键选择测试对象,会自动获取到该测试对象的所有属性和方法,如下所示:

204216395.jpg


2.2 对象库管理

另外一种观察和了解测试程序的界面控件元素以及它们的层次关系的方法是通过对象库"Object Repository",在QTP中,选择菜单"Resources > Object Repository",而后在对象库管理界面中选择菜单"Object >  Add Ojbect to Local",然后选择测试程序界面中的某个控件,单击"OK"按钮,可以把测试对象添加到对象库中,如下所示:

204631103.jpg


2.3 访问对象库的测试对象

把界面控件作为测试对象添加到对象库中之后,就可以把它们作为测试资源来访问,例如,在关键字视图中可从对象库中选择需要的测试对象,在下拉列表中选择"Object from repository",在界面中选择对象库中的测试对象,如下所示:

205405813.jpg

而在专家视图中,同样可以访问到对象库的测试对象,以及它们的属性和方法,如下所示:

205617123.jpg


2.4 添加Action

在QTP中,Action相当于测试脚本的文件,可使用Action来划分和组织测试流程,如果想在当前Action的某个测试步骤之后添加新的Action,则可选择菜单"Insert > Call to New Action",在界面中的"Name"输入Action的名称,在"Description"中输入对该Action的描述,在"Location"中选择"Afeter the current step",然后单击"OK"按钮,则可看到新的Action已经成功被添加,如下所示:

205247474.jpg

由于QTP为每一个Action生成相应的测试文件和目录,而对象库作为资源,也是与Action绑定的,因此新添加的Action不能直接使用前一个Action中的测试对象。

解决的方法有两种,一种是通过录制新的测试脚本来产生新的测试对象库,另一种是通过关联前一个Action所导出的对象库文件来使用其测试对象。选择菜单"Resources > Associate Repositories",在界面中单击"+"按钮,选择前一个Action导出的对象库文件,然后将左边的"Available Actions"中的"Action2"移动到右边的"Associated Actions",如下所示:

210029202.jpg


2.5 创建自定义函数

在测试脚本中,除了访问和调用测试库的测试对象、QTP内建的函数外,还可以自定义函数库,把一些可重用的VB脚本封装到函数库中,然后在测试脚本中调用。选择菜单"Insert > Function Definition Generator",在界面中的"Function definition"中的"Name"输入框输入函数名称,在"Type"中选择"Function",在"Scope"中选择"Public",在"Description"中输入函数的描述信息,单击"OK"按钮,则会在当前Action的测试代码中,添加对应的函数框架代码,如下所示:

211054365.jpg


3. 运行测试脚本


3.1 语法检查

选择菜单"Tools > Check Syntax",对测试脚本进行语法检查,如果语法检查通过,则在"Infomation"界面提示如下信息:

191733185.jpg


3.2 使用断点

语法检查通过后,可直接运行测试脚本,也可设置断点对脚本进行调试,如下所示:

192017587.jpg

按F5键运行测试脚本,运行过程中将在断点所在的代码停住,这时候可以选择菜单"Debug > Step Over"或者按快捷键"F10"跳到下一行代码,也可以选择"Debug > Step Into"或者按快捷键"F11"进入代码行中所调用的函数。


3.3 调试查看器

在调试过程中,可选择菜单"View > Debug Viewer",在界面中输入测试对象属性或变量,查看其值,如下所示:

193022108.jpg


3.4 运行测试

对测试脚本进行语法检查和调试无误后,可以按F5键运行整个测试脚本,在运行测试之前,可以对运行做必要的设置,以便满足测试的要求,选择菜单"Tools > Options",在界面中的"Run"页中的"Run mode",可选择运行模式为"Normal"或"Fast",如果选择"Fast",则QTP以尽可能快的速度运行测试脚本中的每一个测试步骤,如果选择"Normal",则可以进一步设置测试运行过程中每一个步骤直接的停顿时间,如下所示:

193454284.jpg

如果有多个Action,则可以定位到需要运行的Action,然后选择菜单"Automation > Run Current Action"来仅仅运行当前的Action,还有另外一种方式,选中某个测试步骤,单击鼠标右键,选择菜单"Run From Step",可以从当前选中的测试步骤开始运行,也可以选择"Run To Step",开始测试并运行到当前所选的测试步骤。


3.5 分析结果

自动化测试的最后一个步骤就是运行测试并查看结果,在QTP中,按F5键运行测试脚本,出现一个对话框,在这里可以选择测试运行结果存储的位置,如果选择"New Run results folder",可以为本次测试选择一个目录用于存储测试结果文件,如果选择"Temporary run results folder",则QTP将运行测试结果存放到默认目录中,并覆盖上一次该目录中的测试结果,如下所示:

205055259.jpg

测试脚本运行结束后,可以查看概要的测试结果信息,包括测试名称、测试开始和结束的时间、测试脚本运行的迭代次数、测试通过的状态等,如下所示:

205339224.jpg

如果设置了运行时保存截屏的选项,则可以在测试结果的"Screen Recorder"中,查看测试步骤对应的界面截屏。屏幕截屏的设置方法是选择菜单"Tools > Options > Run > Screen Capture",在界面中,把"Save still image captures to results"勾选上,并且在下拉框中选择"Always",如下所示:

210027143.jpg