QuickTest Professional6.0
应用指南
目 录
2.2 QuickTest Professional6.0应用程序的界面... 7
9.3.3拷贝LogOut中的过程到ActionTest 65
9.4.3在ActionTest中调用LogOut的过程... 68
1 前言
本文档介绍了使用QuickTest Professional6.0测试应用程序的基本操作步骤,通过学习本文档,你将知道如何使用QuickTest Professional6.0创建、运行自动化测试,以及如何分析测试结果。
文档共包括9个章节,在演示QuickTest的功能时,以DTMS(http://192.168.6.199)做为例子。下面简要介绍一下各章节的内容。
QuickTest简介
介绍了使用QuickTest进行测试的过程,以及QuickTest Professional6.0的应用程序界面。
录制
介绍了如何使用QuickTest录制下对被测试软件的操作。
运行、分析测试
教你如何运行测试脚本,分析测试结果。
创建检查点
教你如何在测试脚本中添加检查点,来验证被测程序是否按照预期的方式运行。
参数化测试
告诉你如何参数化一个测试,即使用不同的数据对同一功能进行测试。
创建输出值
教你如何在测试运行过程中从应用程序的界面上截取数值,来配合输入数据参数化和检测点参数化的使用。
使用正则表达式
教你如何使用正则表达式创建、运行一个测试。
组织测试
提供给你一些组织测试脚本的方法。
结束
告诉你本指南中未包括的内容,以及在哪里可以获得这些内容和关于QuickTest的更多信息。
2 QuickTest简介
QuickTest是一个功能测试自动化工具,主要应用在回归测试中。QuickTest针对的是GUI应用程序,包括传统的Windows应用程序,以及现在越来越流行的Web应用。
本章包括两部分内容:
● 使用QuickTest进行测试的过程
● QuickTest Professional6.0应用程序的界面
● 关于例子程序
2.1使用QuickTest进行测试的过程
使用QuickTest进行测试的过程包括6个主要步骤:
● 准备录制
打开你要对其进行测试的应用程序,并检查QuickTest中的各项设置是否适合当前的要求。
● 进行录制
打开QuickTest的录制功能,按测试用例中的描述,操作被测试应用程序。
● 编辑测试脚本
通过加入检测点、参数化测试,以及添加分支、循环等控制语句,来增强测试脚本的功能,使将来的回归测试真正能够自动化。
● 调试脚本
调试脚本,检查脚本是否存在错误。
● 在回归测试中运行测试
在对应用程序的回归测试中,通过QuickTest回放对应用程序的操作,检验软件正确性,实现测试的自动化进行。
● 分析结果,报告问题
查看QuickTest记录的运行结果,记录问题,报告测试结果。
2.2 QuickTest Professional6.0应用程序的界面
在学习创建测试之前,让我们先来熟悉一下QuickTest的主界面。下图是录制了一个操作后QuickTest的界面。
测试工具条
Active Screen窗口
文件工具条
Debug工具条
菜单栏
状态栏
Data Table窗口
测试脚本管理窗口
Action工具条
图2-1 QuickTest界面
下面简单解释一下各个界面元素的功能:
●标题栏,显示了当前打开的测试脚本的名称。
●菜单栏,包含了QuickTest的所有菜单命令项。
●文件工具条,包含了以下工具条按钮:
显示Active Screen
窗 口
显示Debug Viewer 显示Test Setting
新 建 保 存 窗 口 窗 口
打 印
打 开 显示Test Setting窗口
显示Data Table窗口
图2-2文件工具条
●测试工具条,包含了在创建、管理测试脚本时要使用到的工具条按钮,
开始录制 添加Action 插入检测点
停止录制 插入一个Transaction的结束点
Low-Level录制
运行脚本 插入一个Transaction的开始点
分割Action
图2-3测试工具条
●Debug工具条,包含了在调试测试脚本时要使用到的工具条按钮,
单步执行控制
停止
插入/取消断点
取消所有断点
图2-4 Debug工具条
●Action工具条,用于查看各个Action的信息。
●测试脚本管理窗口,提供了两个可切换的窗口,分别通过图形化方式和VBScript脚本方式来管理测试脚本。
●Data Table窗口,用于参数化你的测试。
●状态栏,显示测试过程中的状态。
上面简要介绍了QuickTest的主窗口,你可能对一些窗口元素到底是干什么的感到很困惑,别着急,这是正常的,在我们下面介绍QuickTest具体的功能时,你会真正了解它们的作用。但在现在,你也应该尽可能的去熟悉这些界面元素,记住它们大概的功能,最好是花一些时间通过实际的操作来探索一下它们的功能,这对你能够顺利学习下面的内容是有帮助的。
2.3关于例子程序
在本应用指南中,我们使用我们测试中心的DTMS(缺陷跟踪管理系统)来作为演示QuickTest各个功能的例子程序。我们建了一个虚拟项目,叫做QuickTest练习1.0,用户名为QuickTest,密码为QTP,用户名和密码均不区分大小写。
我们使用微软的IE做为浏览器,为了使QuickTest能够更加准确的运行,需要对IE 进行一下设置,步骤如下:
1 选择IE的[ 工具 | Internet选项 ]菜单命令,在弹出的窗口中,选择“内容”标签页。
2在“个人信息”部分,用鼠标左键单击“自动完成”按钮。弹出如下的对话框:
图2-5自动完成设置对话框
3 使“Web地址”、“表单”、“表单上的用户名和密码”处于未选中的状态,然后用鼠标左键单击“清除表单”和“清除密码”按钮。
好了,对IE的设置完成了。
3 录制
录制是自动化测试的第一步,我们就从这里开始介绍QuickTest。
本章包括三部分内容:
● 录制前的准备工作
● 录制测试过程
● 简单分析录制的测试脚本
3.1录制前的准备工作
首先,你已经按照2.3节中的内容对IE进行了设置。
其次,在你正式开始录制一个测试之前,应该关闭所有已经打开的IE窗口。这是为了能够正常的进行录制,这一点要特别注意。
最后,应该关闭所有与测试不相关的程序窗口。
3.2录制测试过程
在这一节里,我们将使用QuickTest录制一个向DTMS中添加错误这样的一个操作过程。
3.2.1 启动QuickTest
启动QuickTest,在随后显示的“Add- in Manager”窗口中,选中“Web”复选框,点击“OK”按钮。
在“欢迎”窗口中,点击“Blank Test”项,开始一个新的测试。
3.2.2 开始录制
在QuickTest中,选择“Test > Record”菜单命令,这时会显示下面这样一个窗口:
图3-1录制、运行设置对话框Web页面
在Web标签页,选择“Open the following browser when a record or run session begins.”单选按钮,在下面的“Type”中,选择“Microsoft Internet Explorer”为浏览器的类型,在“Address”中添入http://192.168.6.199(DTMS的地址)。这样,在录制的时候,QuickTest会自动打开IE并连接到DTMS。
选中“Close the browser when the test is closed”复选框,这样在关闭该测试脚本的时候,会同时关闭与其相关的Web页面。
现在我们在切换到“Windows Application” 标签页,如下图所示:
图3-2 录制、运行设置对话框Windows Application页面
如果选择“Record and run test on any application”单选按钮,则在录制过程中,QuickTest会记录你对所有的Windows程序所做的操作。如果选择“Record and run on these application(opened when a session begins)”单选按钮,则在录制过程中,QuickTest只会记录对那些添加到下面“Application details”列表框中的应用程序的操作(你可以通过“Add”、“Edit”、“Delete”按钮来编辑这个列表)。
我们选择第二个单选按钮。因为我们只是对DTMS进行操作,不涉及到Windows程序,所以保持列表为空。
点击“确定”按钮,开始录制了,你的IE被打开,并连接到了DTMS上。
3.2.3 进行操作
以QuickTest为用户名登陆DTMS,密码为QTP。
确保进入DTMS后,处于错误管理的状态下。
在“项目列表”中选择“QuickTest练习 1.0 ” ,用鼠标左键点击“添加错误”按钮。
在该页面中,“所属模块”处选择“录制”,“错误级别”处选择“严重”,在“错误名称”处输入“Test002”,然后点击“增加”按钮,再点击接着出现的窗口中的“确定”按钮。
最后,点击“查找错误”按钮,选中“新建”复选框,再点击“查询”按钮,查看错误的添加情况。
3.2.4 停止录制
好了,我们就操作这么多。现在我们停止录制。
在QuickTest中,选择“Test > Stop”菜单命令,录制就此停止。
3.2.5 保存脚本
在QuickTest中,选择“File > Save”菜单命令,保存录制的测试。在保存时,要确保保存对话框中的“Save Active Screen files”复选框被选中,如下图所示:
图3-3 保存测试脚本
选择合适的路径,添入文件名,我们取名为DTMSTest01。点击“保存”按钮进行保存。
3.3分析录制的测试脚本
在录制过程中,QuickTest会在测试脚本管理窗口(也叫Tree View窗口)中产生对每一个操作的相应记录。录制结束后,QuickTest也就记录下了测试过程中的所有操作。测试脚本管理窗口显示的内容如下图所示:
图3-4测试脚本管理窗口
对Web页面中界面元素的每一次操作,QuickTest都在测试脚本管理窗口中以一个图标来标记,并记录下了该界面元素的详细描述信息。
用鼠标左键单击测试脚本管理窗口下面的“Expert View”,会显示与图形方式相对应的VBScript脚本。
对照你的操作过程,仔细的研究一下各个图标、各行脚本的含义。
好了,本章的内容到此结束了。
4 运行、分析测试
当你运行录制好的测试脚本时,QuickTest会打开被测试程序,执行你在测试中录制的每一个操作。测试运行结束后,QuickTest显示本次运行的结果。
本章包括两部分内容:
● 运行测试
● 分析结果
4.1运行测试
本节,我们在QuickTest中运行DTMSTest01这个测试脚本。
4.1.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开DTMSTest01。
4.1.2 运行测试前的设置
用鼠标左键点击“Tools > Options…”菜单命令,在弹出的窗口中,切换到“Run”标签页,如下图所示:
图4-1设置对话框
注意“Save step screen capture to test results”这一项,它是用来设置需要在测试结果中保存哪些图象信息的。一般情况下我们选择“on error”或“on error and warning”,即在回放测试过程中出现问题时,保存图象信息。我们前面录制的对DTMS的测试在回放时不会出现什么问题,为了更多的展示QuickTest的功能,我们在这里暂且选择“select always”。
用鼠标左键点击“确定”按钮,关闭窗口。
4.1.3 启动
用鼠标左键点击“Test > Run”菜单命令,弹出如下窗口:
图4-2 保存测试结果对话框
这是在询问你要将本次的测试运行结果保存到何处。选择“New Run results folder”单选按钮,设定好存放路径。
用鼠标左键点击“确定”按钮。
这时,你会看到QuickTest按照你在脚本中录制的操作,一步一步的运行测试,操作过程与你手工操作时完全一样。看到这种情景,你的心中是不是很激动!
4.2分析结果
在测试执行完成后,会显示测试结果窗口,如下图所示:
图4-3 测试结果窗口
窗口分左右两部分:
窗口左半部分是一个树状视图,以树叶的形式列出了测试执行过程中的每一个操作步骤。
窗口右半部分给出了本次测试执行过程的概要信息。
4.2.1 查看每一个步骤的执行结果
展开树状视图各个节点,可以查看到每个步骤的实际执行情况,如下图所示:
图4-4 测试结果窗口
我们按照图中的数字编号解释一下各部分的内容:
编号1区域:这部分在树状视图展开后,显示了测试执行过程中的每一个操作步骤。选择某一个步骤,会在2、3区域显示相应的信息。
编号2区域:对应你当前选中的步骤,显示了该操作执行时的详细信息。
编号3区域:对应你当前选中的步骤,显示了该操作执行时应用程序的屏幕截图。
4.2.2 关闭测试结果窗口
用鼠标左键单击测试结果窗口中的“File > Exit”菜单命令,退出测试结果窗口。
好了,本章的内容到此结束了。
5 创建检查点
通过前面几章的学习,我们已经掌握了如何录制测试、运行测试,以及查看测试结果,但我们只是实现了测试执行的自动化,并没有实现测试验证自动化,所以这还不是真正的测试自动化。在这一章。我们要学习如何在测试脚本中设置检测点(checkpoint)。设置检测点,就是为了实现测试验证自动化这个目的。
本章包括六部分内容:
● QuickTest支持的检测点类型
● Object检测点
● Page检测点
● Text检测点
● Table检测点
● 再次运行我们的测试脚本
5.1 QuickTest支持的检测点类型
QuickTest可以设置如下类型的检测点:
表5-1 QuickTest支持的检测点类型
检测点类型 | 描述 | 应用举例 |
Page 检测点 | 检查Web页面的属性。 | 检查Web页面中是否包含“死”连接,或者检查连接一个Web页面所需要的时间。 |
Text / Text 区域检测点 | 检查在窗口或Web页面的指定位置是否显示了内容正确的文本。 | 检查在一个对话框中的指定位置,是否显示了内容正确的文本。 Text 检测点用于检测基于Web的应用,Text 区域检测点用于检测传统的Windows应用。 |
Standard检测点 | 也叫做Object检测点,用于检测标准界面元素的状态。 | 检查一个编辑框的值是否正确,或者是检查一个复选框是否被选中。 |
Image 检测点 | 检查界面上图片的正确性。 | 检查Web页面上图片的正确性。 |
Table 检测点 | 检查表格中内容的正确性。 | 检查表格中的内容是否正确。 |
Database 检测点 | 检测Windows应用或Web应用访问数据库时,数据内容的正确性。 | 检查数据库查询的正确性。 |
XML 检测点 | 检查XML文档内容的正确性 | XML 检测点有两种——XML文件检测点和XML 应用检测点。XML文件检测点用于检查一个XML文件;XML 应用检测点用于检查一个Web页面的XML文档。 |
Bitmap 检测点 | 检查从Web页面或Windows窗口中捕获的某一部分区域。 | 检查一个Windows窗口(或这个窗口的某一部分)显示的正确性。 |
你可以在录制测试的过程中,或录制结束后,向测试脚本中添加检测点。我们下面就做几个向DTMSTest01测试脚本中添加检测点的练习。
5.2 Object检测点
Object检测点,也叫做Standard检测点。这一节,我们在DTMSTest01测试脚本中添加一个Object检测点,用来检验登陆DTMS时,填入的用户名是否正确。
5.2.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开DTMSTest01。
5.2.2 另存为一个测试脚本
用鼠标左键点击“File > Save As”菜单命令,将DTMSTest01另存成一个名为CheckPointTest的测试脚本。
5.2.3 选择检测点的位置
在QuickTest的Tree View窗口中,选择“txtpassword” SetSecure “3ea4d5ealffb 29 ” 这一项,如下图所示:
图5-1设置放置检测点的位置
我们就要在这一步的前面放置一个检测点,来检查实际运行过程中,用户名填写的是否正确。
5.2.4 加入Object检测点
在Active Screen窗口,将鼠标定位在填写用户名的编辑框中,点击鼠标右键,在弹出的上下文菜单中选择“Insert Checkpoint…”菜单命令,弹出如下的窗口:
图5-2 Object选取
确保当前的焦点定位在“WebEdit: txtusername”上,点击“OK”按钮,弹出如下的窗口:
图5-3检测点设置对话框
在这一步,我们设置需要检查用户名编辑框的哪些内容。我们只将“disabled”、“readonly”、“value”这三项前面的复选框选中。点击“OK”按钮,则检测点添加到脚本中,Tree View窗口显示如下:
图5-4 加入检测点之后的Tree View窗口
5.2.5 保存设置
选择“ File > Save”菜单命令,保存我们上面的操作。
添加一个Object检测点的操作到此就全部结束了。
5.3 Page检测点
这一节,我们在CheckPointTest测试脚本中再添加一个Page检测点。Page检测点只能应用于Web页面中,用来检查一个Web页面所拥有的链接和图片的数量是否正确。
5.3.1 选定检测点添加位置
我们为登陆页面设置一个Page检测点。
在QuickTest的Tree View窗口中,选择“缺陷跟踪管理系统”这一项,如下图所示:
图5-5 选择要设置Page检测点的页面
5.3.2 加入Page检测点
在Active Screen窗口中,点击鼠标右键,在弹出的上下文菜单中选择“Insert Checkpoint…”菜单命令,弹出如下的窗口:
图5-6 Web页面选取
选中“Page:缺陷跟踪管理系统”这一项,点击“OK”按钮,弹出如下的窗口:
图5-7 检测点设置对话框
在测试运行时,QuickTest会检查页面中的连接和图片数量与对话框中设置的值是否一致。
保持默认值,点击“OK”按钮,则检测点添加到脚本中,Tree View窗口显示如下:
图5-8 加入检测点之后的Tree View窗口
5.3.3 保存设置
选择“ File > Save”菜单命令,保存我们上面的操作。
添加一个Page检测点的操作到此就全部结束了。
5.4 Text检测点
在这一节,我们向测试脚本中添加一个Text检测点,来检查添加一个缺陷后,缺陷数量是否增加。
5.4.1 选定检测点添加位置
在QuickTest的Tree View窗口中,选择“Sync”这一项,如下图所示:
图5-9 选择要设置Text检测点的页面
5.4.2 加入Text检测点
在Active Screen窗口中,用鼠标选中错误数量(这里是26),点击鼠标右键,在弹出的上下文菜单中选择“Insert Text Checkpoint…”菜单命令,如下图所示:
图5-10 选中要设置检测点的文本
弹出如下的窗口:
图5-11 Text检测点设置窗口
在测试运行时,QuickTest会检查页面中该位置的文本与对话框中设置的值是否一致。
选中“After current step”单选按钮,其它项保持默认值,点击“OK”按钮,则检测点添加到脚本中,Tree View窗口显示如下:
图5-12 加入检测点之后的Tree View窗口
5.4.3 保存设置
选择“ File > Save”菜单命令,保存我们上面的操作。
添加一个Text检测点的操作到此就全部结束了。
注意:如果你现在直接运行脚本,则测试运行结束后,QuickTest会报告在该文本检测点处发生错误。这是因为你在运行测试的时候,又向DTMS中添加了一个新的缺陷,所以数量就对应不上了。要使该检测点能够正常的工作,需要你在运行测试前手工的删除你在录制时添加的那个缺陷。
5.5 Table检测点
在这一节,我们向测试脚本中添加一个Table检测点,来检查添加一个缺陷后,错误列表中的内容是否正确。
5.5.1 选定检测点添加位置
在QuickTest的Tree View窗口中,选择“Sync”这一项,如下图所示:
图5-13 选择要设置Table检测点的页面
5.5.2 加入Table检测点
在Active Screen窗口中,将鼠标定位到错误数量中,点击鼠标右键,在弹出的上下文菜单中选择“Insert Checkpoint…”菜单命令,如下图所示:
图5-14 选中要设置检测点的表格
弹出如下的窗口:
图5-15 Table选取
选中“WebTable:错误编号”这一项,点击“OK”按钮,弹出如下的窗口:
图5-16 Table检测点设置窗口
对话框上部的表格列出了要对表格中的哪些项目进行检查,默认情况下是检查表格中的每一项内容,你可以通过在选定项目上双击鼠标左键来选中/取消选择。我们只检查新添加的缺陷是否出现在列表中,所以只选中该条目。最后的设置结果如下图所示:
图5-17 Table检测点设置结果
点击“OK”按钮,则检测点添加到脚本中,Tree View窗口显示如下:
图5-18 加入检测点之后的Tree View窗口
5.5.3 保存设置
选择“ File > Save”菜单命令,保存我们上面的操作。
添加一个Table检测点的操作到此就全部结束了。
注意:和前面添加Text检测点时的原因一样,你在运行测试前,应该手工删除在录制时添加的那个缺陷。
5.6再次运行我们的测试脚本
好了,检测点我们就添加这么多。在这一节,我们运行CheckPointTest测试脚本,看插入检测点后,运行结果是怎样的。
5.6.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开CheckPointTest。
5.6.2 运行测试前的设置
用鼠标左键点击“Tools > Options…”菜单命令,在弹出的窗口中,切换到“Run”标签页,如下图所示:
图5-19 设置对话框
在“Save step screen capture to test results”这一项,选择“on error”,表示在回放测试过程中出现错误时,保存图象信息。
用鼠标左键点击“确定”按钮,关闭窗口。
5.6.3 启动测试
用鼠标左键点击“Test > Run”菜单命令,弹出如下窗口:
图5-20 保存测试结果对话框
这是在询问你要将本次的测试运行结果保存到何处。选择“New Run results folder”单选按钮,设定好存放路径。
用鼠标左键点击“确定”按钮。
这时,QuickTest按照你在脚本中录制的操作,一步一步的运行测试,操作过程与你手工操作时完全一样。
5.6.4 分析结果
在测试执行完成后,会显示测试结果窗口,如果所有的检测点都通过了验证,运行结果为Passed,如果有一个或多个检测点没有通过验证,则运行结果会显示为Failed。如下图所示:
图5-21 测试结果窗口
下面我们来看一看各个检测点的检验结果。
5.6.5 P age检测点
在树状视图中,选中“Checkpoint:“缺陷跟踪管理系统””,会显示对该检测点处的实际检测结果,如下图所示:
图5-22 Page检测点测试结果窗口
5.6.6 Object检测点
在树状视图中,选中“Checkpoint:“txtusername””,会显示对该检测点处的实际检测结果,如下图所示:
图5-23 Object检测点测试结果窗口
5.6.7 Table检测点
在树状视图中,选中“Checkpoint:“错误编号””,会显示对该检测点处的实际检测结果,如下图所示:
图5-24 Table检测点测试结果窗口
5.6.8 Text检测点
在树状视图中,选中“Checkpoint:“26””,会显示对该检测点处的实际检测结果,如下图所示:
图5-25 Text检测点测试结果窗口
如果你现在重新运行一遍测试脚本,检测点就不会全部通过了,你最好亲自试验一下,看看那时的情景是怎样的,想一想这些检测点为什么不能通过。
5.6.9 关闭测试结果窗口
用鼠标左键单击测试结果窗口中的“File > Exit”菜单命令,退出测试结果窗口。
好了,本部分的内容到此结束了。
6 参数化测试
在你测试应用程序时,你可能想检查对应用程序使用不同输入数据进行同一操作时,程序是否能正常的工作。在这种情况下,你可以将这个操作重复录制多次,每次填入不同的数据,这种方法虽然能够解决问题,但实现起来太笨拙了。QuickTest提供了一个更好的方法来解决这个问题——参数化测试脚本。参数化测试脚本包括数据输入的参数化和检测点的参数化。
本章包括三部分内容:
● 数据输入的参数化
● 检测点的参数化
● 运行、分析测试脚本
6.1数据输入的参数化
在前面的测试脚本中,我们录制了一个添加错误的操作,其中有一个步骤是填写错误名称。在这一节里,我们就对这个错误名称的输入进行参数化处理。
6.1.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开CheckPointTest。
6.1.2 另存为一个测试脚本
用鼠标左键点击“File > Save As”菜单命令,将CheckPointTest另存成一个名为ParameterTest的测试脚本。
6.1.3 选择进行参数化的位置
在QuickTest的Tree View窗口中,选择“title2” Set “Test02”这一项,如下图所示:
图6-1 选择进行参数化的位置
6.1.4 对错误名称的输入进行参数化处理
在Active Screen窗口,将鼠标定位在填写错误名称编辑框中,点击鼠标右键,在弹出的上下文菜单中选择“Insert Method…”菜单命令,弹出如下的窗口:
图6-2 Object选取
确保当前的焦点定位在“WebEdit: title 2 ” 上,点击“OK”按钮,弹出如下的窗口:
图6-3 添加Method向导
点击“Next”按钮,弹出如下的窗口:
图6-4 添加Method向导
在函数列表框中选择“Set”,该函数用于设置编辑框中的值。点击“Next”按钮,弹出如下的窗口:
图6-5 添加Method向导
选中“Parameter”单选按钮。在“Parameter name”编辑框中填入“ErrorNameParamTable”,作为参数化列表中错误名称这一列的列名,设置结果如下:
图6-6 添加Method向导
点击“Next”按钮,你会在QuickTest下方的Data Table窗口中看到出现了一个名为ErrorNameParamTable的列,同时弹出如下的窗口:
图6-7 添加Method向导
点击“Next”按钮,弹出如下的窗口:
图6-8 添加Method向导
点击“Finish”按钮,完成对错误名称输入参数化的处理。
6.1.5 向Data Table中添加数据
架子搭好了,现在我们添加用于参数化的数据。在Data Table窗口中的ErrorNameParamTable这一列,依次添入test002、test003、test004,填写结果如下:
图6-9 添加用于参数化的数据
6.1.6 保存操作
选择“ File > Save”菜单命令,保存我们的操作。对错误名称的输入参数化处理完成了。
6.2检测点的参数化
我们上面对数据输入进行了参数化处理,要想使测试能够正确的运行,需要对我们设置的检测点也进行参数化处理。在这一节,我们对脚本中的Text检测点进行参数化处理。
6.2.1 选择进行参数化的位置
在QuickTest的Tree View窗口中,选择Checkpoint“31”这一项,如下图所示:
图6-10 选择进行参数化的位置
6.2.2 对检测点进行参数化处理
在Tree View窗口中,将鼠标定位在Checkpoint“31”这一项,点击鼠标右键,在弹出的上下文菜单中选择“Checkpoint Properties…”菜单命令,弹出如下的窗口:
图6-11 Text检测点属性设置
选中“Parameter”单选按钮。在“Parameter name”编辑框中填入“CheckpointParamTable”,作为参数化列表中错误名称这一列的列名,设置结果如下:
图6-12 参数化Text检测点
点击“OK”按钮,完成参数化Text检测点的操作。
6.2.3 向Data Table中添加数据
和数据输入参数化一样,现在我们添加参数化Text检测点的数据。在Data Table窗口中的CheckpointParamTable这一列,依次添入31、32、33(你在实际操作时,应该按照你录制时的情况选择对应的数据),填写结果如下:
图6-13 添加用于参数化的数据
6.2.4 保存操作
选择“ File > Save”菜单命令,保存我们的操作。对Text检测点的参数化处理完成了。
6.3 运行、分析测试脚本
好了,现在我们开始运行经过我们参数化后的测试脚本。用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,QuickTest开始一步一步的运行测试。
在测试执行完成后,显示测试结果窗口,如下图所示:
图6-14 测试运行结果窗口
你会看到,测试共循环执行了三次,12个检测点都通过了验证,运行结果均为Passed。
就上面的测试脚本,在每一轮测试执行过程中,会有4个检测点对测试过程进行检测,它们是:Object检测点、Page检测点、Text检测点、Table检测点。我们现在考虑一下测试执行过程中这些检测点是否都正常发挥了作用。
由于Object检测点和Page检测点在每一轮测试中检测的内容都一样,所以这两个检测点没什么问题。
Text检测点也没什么问题,它的期望值已经被我们参数化了,完全能够适应输入数据变化所带来的结果的变化。
但是,Table检测点就存在问题了,该检测点只会在三轮测试中的第一轮真正发挥作用,在第二和第三轮虽然结果也是Passed,但检测的仍然是第一轮测试的值,而非第二和第三轮的值,所以该检测点在第二和第三轮的测试中没有发挥作用。由于我们这里只是演示QuickTest的功能,就不再费力气解决这个问题了,但如果是在实际的测试工作中,这样的问题一定要避免。
好,本部分的内容到此结束了。
7 输出数值
QuickTest提供的输出数值功能主要用于在测试运行过程中从应用程序的界面上截取数值。下面我们对ParameterTest中添加错误后的错误数量进行输出数值的操作。
7.1 创建输出值
7.1.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开ParameterTest。
7.1.2 另存为一个测试脚本
用鼠标左键点击“File > Save As”菜单命令,将ParameterTest另存成一个名为OutputTest的测试脚本。
7.1.3 选择要创建输出值的文本
在QuickTest的Tree View窗口中,选择“Sync”这一项,如下图所示:
图7-1 选定位置
在Active Screen窗口,选中错误数量,点击鼠标右键,在弹出的上下文菜单中选择“Insert Text Output…”菜单命令,如下所示:
图7-2 选择要创建输出值的文本
弹出如下的对话框:
图7-3 创建输出值
7.1.4 创建输出值列表
在“Data Table column name”编辑框中填入“OutputValueParamTable”,作为该输出值在Data Table中的列名。其它均采用默认设置。设置结果如下:
图7-4 创建输出值
点击“OK”按钮,完成对错误数量进行输出数值的操作。这时,你会发现在Data Table窗口中出现了一项名为OutputValueParamTable的列,如下图所示:
图7-5创建输出值列
与参数化输入和参数化检测点不同的是,在这里我们不需要填入数据,因为在测试运行的过程中,QuickTest是从应用程序的界面中获取数据,将其填入这一列。
7.2 运行测试脚本
用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行。
在测试执行完成后,显示测试结果窗口,如下图所示:
图7-6 测试运行结果窗口
在Tree View窗口中选择“Run-Time Data”项,在右侧会显示Data Table中各列的值,如下图所示:
图7-7测试运行结果窗口
我们看OutputValueParamTable这一列,也就是我们输出错误数量值的这一列,出现了三条记录——31、32、33(你的结果可能不是这三个数字,这是由你录制时的情况决定的),这是QuickTest在测试运行过程中从界面上截取后,填入到列表中的。
7.3创建输出值的用处
在本章所做的演示中,我们只是创建了输出值,但并没有使用它去做什么。那么在实际的测试工作中,创建输出值这个功能对于我们来说有什么用处呢?它主要是配合输入数据参数化和检测点参数化来使用的。
如果你想对某一个输入操作进行参数化处理,而需要输入的数据可以从该输入操作之前的某一步骤中的界面元素中获得,这个时候,你就可以为该界面元素创建输出值,然后在需要进行参数化输入的地方选中这个输出值。
如果你想对某一个检测点进行参数化处理,而检测点的期望值可以从该检测点之前的某一步骤中的界面元素中获得,这个时候,你就可以为该界面元素创建输出值,然后在需要进行参数化检测点的地方选中这个输出值。
当创建输出值配合输入数据参数化和检测点参数化使用时,有一点需要注意,就是创建输出值的位置一定要在输入数据参数化或检测点参数化之前。
好了,关于创建输出值的内容就说到这里了。
8 使用正则表达式
正则表达式,也叫做通配符,我们在计算机上搜索一个文件,或者编写一条SQL语句时,经常会用到正则表达式。
在QuickTest中也可以使用正则表达式,用法与我们上面提到的正则表达式类似。通过在QuickTest测试脚本中加入正则表达式,可以使我们的测试脚本更灵活,适应性更好。
本章包括二部分内容:
● QuickTest正则表达式的语法
● 在QuickTest中使用正则表达式
8.1QuickTest正则表达式的语法
一个正则表达式就是一个文本字符串,其中除了常规字符外,还包含了一些通配字符,比如“*”、“^”、“[]”、“?”、“+”等等。
关于QuickTest中正则表达式的详细语法说明,请参见QuickTest的Books Online中“User’s Guide > Creating Tests > Using Regular Expressions > Regular Expression syntax”部分,在此就不详细描述了。
8.2 在QuickTest中使用正则表达式
8.2.1 打开测试脚本
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开CheckPointTest。
8.2.2 另存为一个测试脚本
用鼠标左键点击“File > Save As”菜单命令,将CheckPointTest另存成一个名为RegExpressionTest的测试脚本。
8.2.3 使用正则表达式
在QuickTest的树状视图中,选中我们设置的那个Table检测点,也就是名为“Checkpoint:“错误编号”的节点,如下图所示:
图8-1选中Table检测点
点击鼠标右键,在弹出的上下文菜单中选择“Checkpoint properties…”菜单命令,弹出如下的对话框:
图8-2 Table检测点设置
选中窗口上方列表中最下面一行中的第五列,如下图所示:
图8-3 Table检测点设置
点击“OK”按钮退出。这样,在检查新添加的记录时,会对添加时间进行检查。
我们运行一下经过这个改动后的测试脚本。用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,QuickTest开始一步一步的运行测试。
测试运行结束后,你会发现Table检测点运行失败,而发生错误的值就是这个添加错误时间。由于每次添加错误时间都是不同的,所以使用一个固定值进行检测当然不能通过。怎么来解决这个问题呢——使用正则表达式。
在QuickTest的树状视图中选中Table检测点,点击鼠标右键,在弹出的上下文菜单中选择“Checkpoint properties…”菜单命令,在弹出的Table检测点设置对话框中,选中窗口上方列表中最下面一行中的第五列,如下图所示:
图8-4 Table检测点设置
点击 按钮,弹出如下的对话框:
图8-5 Constant Value Options对话框
在“Value”编辑框中填入 200[0-9]-[0-9][0-9]?-[0-9][0-9]? [0-9][0-9]?:[0-9][0-9]?:[0-9][0-9]?,以取代原来的值(关于正则表达式的详细语法说明,请参见QuickTest的Books Online中“User’s Guide > Creating Tests > Using Regular Expressions > Regular Expression syntax”部分)。
选中“Regular expression”复选框,表示要使用这个正则表达式,这时会弹出如下的对话框:
图8-6 提示对话框
这是在询问你,是否要在正则表达式中的通配符前加“/”符号,使该通配符做为一个普通的字符。在这里没有这个需要,点击“否”按钮,退出该对话框。
点击“OK”按钮, 退出Constant Value Options对话框,再点击“OK”按钮,完成正则表达式的设置。
现在我们再运行一下测试脚本。用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行。
测试运行结束后,Table检测点检测通过。虽然我们每一次添加错误的时间不同,但由于我们对错误添加时间使用了正则表达式,所以只要是能与正则表达式匹配的值,就可以通过检测,这样,大大增加了测试脚本的灵活性。
好了,关于在测试脚本中使用正则表达式的内容就说到这里了。
9 组织测试脚本
我们前面创建的测试,都只包含一个过程(Action),其默认的名字是Action1。
QuickTest中的过程是一段完成指定功能的脚本,一个测试中至少要包含一个过程。过程在QuickTest中的地位和作用,与函数在C语言中的地位和作用可以说是一样的。
将一个测试分解为若干个功能相对独立的过程,能大大提高我们测试的效率。所以,仔细考虑,设计具有良好组织结构的测试脚本,对于提高我们自动化测试的质量大有益处。
在这一章,我们就来介绍一下QuickTest提供的几种组织测试脚本的方法。
本章包括二部分内容:
● 分割过程
● 添加过程
● 拷贝过程
● 调用过程
在QuickTest中,用鼠标左键点击“File > Open”菜单命令,打开DTMSTest01。用鼠标左键点击“File > Save As”菜单命令,将DTMSTest01另存成一个名为ActionTest的测试脚本。我们这一章中所做的演示,都在ActionTest的基础上进行。
9.1 分割过程
仔细分析ActionTest这个测试脚本,你会发现它是由两个相对对立的操作过程组成的,一个过程是登陆DTMS,另一个过程是添加缺陷。我们现在就将登陆DTMS和添加缺陷这两个步骤分解成为两个过程,登陆DTMS作为父过程,添加缺陷作为子过程。
打开ActionTest测试脚本,在QuickTest 的Tree View窗口中,选中“tjcw”Click这一项,如下图所示:
图9-1选择分割点
用鼠标左键点击“Step > Split Action…”菜单命令,弹出如下的对话框:
图9-2 分割过程对话框
在“The actions are”区域中,选中“Nested”单选按钮,使添加缺陷作为登陆DTMS的子过程;在“1st action”区域中的Name编辑框中添入“Log in”,作为登陆DTMS过程的名字;在“2nd action”区域中的Name编辑框中添入“Add bug”,作为添加缺陷过程的名字;最后的设置结果如下:
图9-3 设置分割过程对话框
点击“OK”按钮,这样,添加缺陷就作为一个独立的过程从原来的整个测试中分离出来了。选择“ File > Save”菜单命令,保存我们的操作。
还记得第六章参数化测试吗?我们对输入的缺陷名称进行了参数化处理,但测试运行时,每次添加一个不同的缺陷名称,都要重新登陆DTMS,而这个操作是完全没有必要的。现在我们就可以解决这个问题了,由于添加缺陷作为了一个独立的过程,我们可以只对这个过程进行参数化,使其运行多次,而登陆DTMS的操作只运行一次。我们下面就来实现这个操作。
在QuickTest 的Tree View窗口中,选中“title2”Set“test002”这一项,如下图所示:
图9-4 选择进行参数化输入的位置
点击鼠标右键,在弹出的上下文菜单中选择“Method Arguments…”,弹出如下的对话框:
图9-5 Method Arguments对话框
选中“Parameter”单选按钮,然后点击 按钮,弹出如下的对话框:
图9-6 Data Table Paramter Options对话框
在“Name”组合框中添入“BugName”,选中“Current action sheet (local)”单选框,点击“OK”按钮,Method Arguments对话框显示如下:
图9-7 完成设置的Method Arguments对话框
点击“确定”按钮,完成对缺陷名称输入的参数化处理。
在QuickTest的Data Table中Add bug页的BugName这一列,在前两行分别添入“test002”和“test003”,作为用于缺陷名称参数化的数据。
对一个过程进行参数化设置后,QuickTest默认情况下只会执行一次,要想使过程真正的被参数化处理,就需要改变这个默认设置。在QuickTest 的Tree View窗口中,选中Add bug这一项,点击鼠标右键,如下图所示:
图9-8 设置过程的属性
在弹出的上下文菜单中选择“Action Properties”菜单命令,弹出如下的对话框:
图9-10 过程属性设置对话框
切换到“Run”标签页,选中“Run from row”单选按钮,这时可能会弹出一个对话框,点击“OK”按钮即可。过程属性设置对话框变成如下的状态:
图9-11 完成设置的过程属性设置对话框
单选按钮后面的编辑框中分别显示了1和2,这表示将Data Table中前两个数据作为参数化输入的数据。用鼠标左键点击“确定”按钮。
好了,需要做的设置都完成了,现在我们运行一下这个测试脚本。用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行。在测试运行的过程中,你会发现只登陆了一次,而添加了两次缺陷,这正是我们想要实现的。
测试执行完成后,显示测试结果窗口,和我们看到的执行过程一样,登陆执行一次,添加缺陷执行了两次,如下图所示:
图9-12 测试运行结果
这就是如何将一个测试过程分解为多个子过程的方法。通过上面的例子我们可以看到,将添加缺陷这一系列的操作作为一个独立的过程后,测试脚本变的更加容易使用了,组织结构也更清晰了。
选择“ File > Save”菜单命令,保存我们的操作。
9.2 添加过程
在这一节里,我们向ActionTest脚本中添加一个过程,这个过程包含的操作很简单,就是点击“退出”按钮退出DTMS,转到DTMS的登陆界面。
9.2.1 选择添加过程的位置
在QuickTest中,用鼠标左键选择“Insert > New Action”菜单命令,弹出如下的对话框:
图9-13添加一个过程
在“Name”编辑框中添入“Log out”,作为新添加的过程的名字。在“Location”部分,选中“At the end of the test”单选按钮,这表示要将该过程添加到现有所有过程之后(如果是选中“After the current step”单选按钮,则表示将该过程添加到Tree View窗口中具有当前焦点的步骤之后)。点击“OK”按钮。
这时,你会看到在QuickTest的Tree View窗口中出现了一个名为Log out的新的节点。我们现在向这个过程中添加具体的操作。
9.2.2 为新添加的过程录制操作
首先,改变一下录制运行的设置,用鼠标左键选择“Test > Record and Run Settings…”菜单命令,弹出如下的对话框:
图9-14 录制运行设置对话框
在“Web”标签页,选择“Record and run test on any open Web browser”单选按钮,点击确定按钮。为何要改变这个设置呢?因为我们要为新添加的过程所录制的操作,不需要重新启动IE,而是直接在某一个Web页面上进行操作。
使DTMS处于ActionTest脚本运行结束后的状态,然后,用鼠标在Tree View窗口中选中名为“Log out”的节点,选择“Test > Record”菜单命令,录制开始。在DTMS中,点击“退出”按钮,在弹出的确认对话框中点击“确定”按钮。好了,只做这么多的操作。在QuickTest中选择“Test > Stop”菜单命令,停止录制。
这时,你在Tree View窗口会看到,Log out过程已经拥有内容了。
现在再把录制运行的设置改回去,用鼠标左键选择“Test > Record and Run Settings…”菜单命令,在弹出对话框的Web标签页中,选择“Open the following browser when a record or run session begins”单选按钮,点击“确定”按钮完成设置。
好了,添加一个新过程的操作全部完成了。选择“ File > Save”菜单命令,保存我们的操作。现在我们运行一下这个测试脚本。
9.2.3 运行测试脚本
用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行。你会看到,Log out这个过程在最后被执行到了。在测试执行完成后,IE停留在了DTMS的登陆页面上。
好了,关于如何向测试脚本中添加一个过程的方法就说到这里了。
9.3 拷贝过程
在这一节里,我们先录制一个新的测试脚本,然后再将该脚本中的过程拷贝到ActionTest脚本中来。
9.3.1 录制一个新的测试脚本
我们要录制的新的测试脚本,与我们在上一节录制的Log out过程中包含的操作是一样的。
打开IE,登陆到DTMS,并使DTMS处于ActionTest脚本运行结束后的状态。启动QuickTest,选择“File > New”菜单命令,开始一个新的测试。选择“Test > Record”菜单命令,弹出录制运行设置对话框,在“Web”标签页,选择“Record and run test on any open Web browser”单选按钮,点击确定按钮。录制开始。在DTMS中,点击“退出”按钮,在弹出的确认对话框中点击“确定”按钮。在QuickTest中选择“Test > Stop”菜单命令,停止录制。
好,我们的测试脚本录制好了。在QuickTest中,选择“File > Save”菜单命令,保存录制的测试。在保存时,要确保保存对话框中的“Save Active Screen files”复选框被选中,如下图所示:
图9-15 保存测试脚本
选择合适的路径,添入文件名,我们取名为LogOut。点击“保存”按钮进行保存。
9.3.2 编辑ActionTest测试脚本
在QuickTest中打开ActionTest测试脚本,在Tree View窗口中选中“Log out”这一项,如下图所示:
图9-16 选择要删除的过程
点击键盘上的“Delete”键,将其删除,因为我们要从另一个脚本中拷贝这个过程。
9.3.3 拷贝LogOut中的过程到ActionTest
在QuickTest中,选择“Insert > Copy of Action...”菜单命令,弹出如下的对话框:
图9-17 拷贝过程对话框
默认情况下,“From Test”组合框中选中的是当前的测试脚本,我们这次是要从其他的测试脚本中拷贝过程,所以,点击组合框右侧的 按钮,选中我们在前面录制的那个LogOut脚本,此时对话框变为:
图9-18 拷贝过程对话框
因为在LogOut脚本中只有一个过程,所以在“Select an action”列表框中只显示了Action1这一项,如果LogOut包含多个过程的话,列表框中会显示多项供你选择。我们选中Action1这一项,在“Location”部分,选中“At the end of the test”单选按钮,这表示要将该过程拷贝到现有所有过程之后(如果是选中“After the current step”单选按钮,则表示将该过程拷贝到Tree View窗口中具有当前焦点的步骤之后)。点击“OK”按钮。则LogOut中的过程Action1就被拷贝到ActionTest脚本中来了,如下图所示:
图9-19 Action1被拷贝到ActionTest脚本中
过程Action1拷贝到ActionTest后,就完全属于ActionTest了,你可以对其进行任何的修改。对于ActionTest和LogOut中的Action1,修改其中的任何一个,都不会影响到另外一个。
拷贝一个过程的操作全部完成了,选择“ File > Save”菜单命令,保存我们的操作。现在我们运行一下这个测试脚本。
用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行,其运行情况与9.2节中的情形是完全一样的。
9.4 调用过程
在这一节,我们不采用拷贝过程的方式,而是从ActionTest脚本中调用LogOut中的过程。
9.4.1 修改LogOut测试脚本
一个过程如果要想被其它的脚本调用,就必须将该过程设置为可复用的。这一步,我们将LogOut中的Action1过程设置为可复用的。
启动QuickTest,打开LogOut测试脚本。在Tree View窗口中选中“Action1”这一项,点击鼠标右键,如下图所示:
图9-20 修改过程的属性
在弹出的上下文菜单中选择“Action Properties...”菜单命令,弹出如下的对话框:
图9-21 过程属性对话框
选中“Reusable action”复选框,点击“确定”按钮,这时会弹出一个提示对话框,点击“OK”按钮。这样,LogOut中的Action1就变为一个可复用的过程了。
选择“ File > Save”菜单命令,保存我们的操作。
9.4.2 编辑ActionTest测试脚本
在QuickTest中打开ActionTest测试脚本,在Tree View窗口中选中“Copy of Action 1 ” 这一项,如下图所示:
图9-22 选择要删除的过程
点击键盘上的“Delete”键,将其删除,因为我们要从LogOut脚本中调用这个过程。
9.4.3 在ActionTest中调用LogOut的过程
在QuickTest中,选择“Insert > Call to Action...”菜单命令,弹出如下的对话框:
图9-23 调用过程对话框
默认情况下,“From Test”组合框中选中的是当前的测试脚本。点击组合框右侧的 按钮,选中我们在前面修改的那个LogOut脚本,此时对话框变为:
图9-24 调用过程对话框
在“Select an action”列表框中,我们选中Action1这一项;在“Location”部分,选中“At the end of the test”单选按钮,这表示要将该过程调用放置到现有所有过程之后(如果是选中“After the current step”单选按钮,则表示将该过程调用放置到Tree View窗口中具有当前焦点的步骤之后);对于“Parameter data”部分,如果选中“Stored with original action(read-only)”单选按钮,则调用该过程的脚本,共享该过程Data Table中的参数列表,如果选中“Use a local editable copy”单选按钮,则调用该过程的脚本,拥有自己的参数列表,我们LogOut中的过程Action1没有进行参数化,所以这个选项对于我们是无所谓的。
点击“OK”按钮。则ActionTest脚本的Tree View窗口中出现了新的一项,如下图所示:
图9-25 对Action1的调用被加入到ActionTest脚本中
ActionTest只拥有对LogOut中Action1过程的使用权,在ActionTest中是不能对Action1进行修改的。如果要想改变Action1的某些操作,只能在脚本LogOut中进行修改,修改的内容会影响到所有对其进行调用的脚本。
调用一个过程的操作全部完成了,选择“ File > Save”菜单命令,保存我们的操作。现在我们运行一下这个测试脚本。
用鼠标左键点击“Test > Run”菜单命令,保持默认设置,用鼠标左键点击“OK”按钮,测试开始运行,在测试运行到最后时,LogOut中的过程Action1被调用。
10 结束
通过以上各个章节的学习,你已经对QuickTest的使用有了基本的掌握。在本指南中,有两项内容没有涉及,一是如何调试测试脚本,二是如何通过编程控制脚本。关于这两部分的内容,以及关于QuickTest更详尽的信息,请参见QuickTest的联机文档(安装QuickTest后,其位置在:开始 > 程序 > QuickTest > Documentation > Books Online)。
到这里,这个应用指南的内容要结束了,但对于你应用QuickTest去进行自动化测试,可以说才刚刚开始。