第一章QTP简介
1.1自动化测试的好处
如果你执行过人工测试,你一定了解人工测试的缺点,人工测试非常浪费时间而且需要投入大量的人力。使用人工测试的结果,往往是在应用程序交付前,无法对应用程序的所有功能都作完整的测试。
使用QuickTest可以加速整个测试的过程,并且建置完新版本的应用程序或网站后,可以重复使用测试脚本进行测试。
以QuickTest执行测试,就与人工测试一样。QuickTest会仿真鼠标的动作与键盘的输入,不过QuickTest比人工测试快了很多。
自动化测试的好处
快速
QuickTest执行测试比人工测试速度快多了。
可靠
QuickTest每一次的测试都可以正确的执行相同的动作,可以避免人工测试的错误。
可重复
QuickTest可以重复执行相同的测试。
可程序化
QuickTest可以以程序的方式,撰写复杂的测试脚本,以带出隐藏在应用程序中的信息。
广泛性
QuickTest可以建立广泛的测试脚本,涵盖应用程序的所有功能。
可再使用
QuickTest可以重复使用测试脚本,即使应用程序的使用接口已经改变。
1.2QuickTest工作流程
1.录制测试脚本前的准备
在测试前需要确认你的应用程序及QuickTest是否符合测试需求?
确认你已经知道如何对应用程序进行测试,如要测试哪些功能、操作步骤、预期结果等。
同时也要检查一下QuickTest的设定,如TestSettings以及Options对话窗口,以确保QuickTest会正确的录制并储存信息。确认QuickTest以何种模式储存信息。
2.录制测试脚本
操作应用程序或浏览网站时,QuickTest会在KeywordView中以表格的方式显示录制的操作步骤。每一个操作步骤都是使用者在录制时的操作,如在网站上点击了链接,或则在文本框中输入的信息。
3.加强测试脚本
在测试脚本中加入检查点,可以检查网页的链接、对象属性、或者字符串,以验证应用程序的功能是否正确。
将录制的固定值以参数取代,使用多组的数据测试程序。使用逻辑或者条件判断式,可以进行更复杂的测试。
4.对测试脚本进行调试
修改过测试脚本后,需要对测试脚本作调试,以确保测试脚本能正常并且流畅的执行。
5.在新版应用程序或者网站上执行测试脚本
通过执行测试脚本,QuickTest会在新本的网站或者应用程序上执行测试,检查应用程序的功能是否正确。
6.分析测试结果
分析测试结果,找出问题所在。
7.测试报告
如果你安装了TestDirector(QualityCenter),则你可以将发现的问题回报到TestDirector(QualityCenter)数据库中。TestDirector(QualityCenter)是Mercury测试管理工具。
1.3QTP程序界面
在学习创建测试之前,先了解一下QuickTest的主界面。下图是录制了一个操作后QuickTest的界面。
在QTP界面包含标题栏、菜单栏、文件工具条等几个界面元素,下面简单解释各界面元素的功能:
n标题栏,显示了当前打开的测试脚本的名称。
n菜单栏,包含了QuickTest的所有菜单命令项。
n文件工具条,在工具条上包含了以下几个按钮:
n测试工具条,包含了在创建、管理测试脚本是要使用的按钮,如下图:
n调试工具条,包含在调试测试脚本时要使用的工具条,如下图:
n测试脚本管理窗口,提供了两个可切换的窗口,分别通过图形化方式和VBScript脚本方式来管理测试脚本。
nDataTable窗口,用于参数化你的测试。
n状态栏,显示测试过程中的状态。
在上面上面简要介绍了QuickTest的主窗口,你可能对一些窗口元素到底是干什么的感到很困惑,在我们下面介绍QuickTest具体的功能时,会真正了解它们的作用。但在现在,应该尽可能的去熟悉这些界面元素,记住它们大概的功能,最好是花一些时间通过实际的操作来探索一下它们的功能,这对你能够顺利学习下面的内容是有帮助的。
1.4MercuryTours示范网站
MercuryTours示范网站是一个提供机票预订服务的网站,在本课程中,我们使用MI公司提供的MercuryTours示范网站作为演示QuickTest各个功能的例子程序。
1.在开始使用MercuryTours示范网站(http://newtours.mercuryinteractive.com)之前,首先要在MercuryTours网站上注册一个使用者账号。
2.MercuryTours示范网站使用
要登录并使用MercuryTours示范网站必须使用注册账号。
在使用网站时,从[FlightFinder]网页开始,按照画面上的指示预订机票。在BookaFlight网页,无需填写真实的旅客信息,信用卡卡号等标示为红色的字段中添加虚拟数据就可以了。
3.结束订票动作
完成订票动作后,在[FlightConfirmation]网页上点选[LOGOUT]按钮或是选择[SIGN-OFF]按钮。
4.关闭浏览器
现在知道如何使用MercuryTours示范网站,就可以开始使用QuickTest录制测试脚本了。
第二章录制/执行测试脚本
当浏览网站或使用应用程序时,QuickTest会纪录你的操作步骤,并产生测试脚本。当停止录制后,会看到QuickTest在KeywordView中以表格的方式显示测试脚本的操作步骤。
2.1录制前的准备
在录制脚本前,首先要确认以下几项:
n已经在MercuryTours示范网站上注册了一个新的使用者账号。
n在正式开始录制一个测试之前,关闭所有已经打开的IE窗口。这是为了能够正常的进行录制,这一点要特别注意。
n关闭所有与测试不相关的程序窗口。
2.2录制测试脚本
2.2.1录制测试脚本
在这一节中我们使用QuickTest录制一个测试脚本,在MercuryTours范例网站上预定一张从纽约(NewYork)到旧金山(SanFrancisco)的机票。
1.执行QuickTest并开启一个全新的测试脚本
n开启QuickTest,在“Add-inManager”窗口中选择“Web”选项,点击“OK”关闭“Add-inManager”窗口,进入QuickTestProfessional主窗口。
n如果QuickTestProfessional已经启动,检查“Help>AboutQuickTestProfessional”查看目前加载了那些add-ins。如果没有加载“Web”,那么必须关闭并重新启动QuickTestProfessional,然后在“Add-inManager”窗口中选择“Web”。
n如果在执行QuickTestProfessional时没有开启“Add-inManager”则点击“Tool>Options”,在“General”标签页勾选“DisplayAdd-inManageronStartup”,在下次执行QuickTestProfessional时就会看到“Add-inManager”窗口了
2.开始录制测试脚本
选中“Test>Record”或者点选工具栏上的“Record”按钮。打开“RecordandRunSettings”对话窗口:
在“Web”标签页选择“Openthefollowingbrowserwhenarecordorrunsessionbegins”
在“Type”下拉列表中选择“MicrosoftInternetExplorer”为浏览器的类型;在“Address”中添加“http://newtours.mercuryinteractive.com/(网站地址)”这样,在录制的时候,QuickTest会自动打开IE浏览器并连接到MercuryTours范例网站上。
现在我们在切换到“WindowsApplication”标签页,如下图所示:
如果选择“RecordandruntestonanyopenWindows-basedapplication”单选按钮,则在录制过程中,QuickTest会记录你对所有的Windows程序所做的操作。如果选择“Recordandrunontheseapplication(openedwhenasessionbegins)”单选按钮,则在录制过程中,QuickTest只会记录对那些添加到下面“Applicationdetails”列表框中的应用程序的操作(你可以通过“Add”、“Edit”、“Delete”按钮来编辑这个列表)。
我们选择第二个单选按钮。因为我们只是对MercuryTours范例网站进行操作,不涉及到Windows程序,所以保持列表为空。
点击“确定”按钮,开始录制了,将自动打开IE浏览器并连接到MercuryTours范例网站上。
3.登录MercuryTours网站
在用户名和密码输入注册时使用的账号和密码,点击“Sign-in”,进入“FlightFinder”网页。
4.输入订票数据
输入以下订票数据:
DepartingFrom:NewYork
On:May14
ArrivingIn:SanFrancisco
Returning:May28
ServiceClass:Businessclass
其他字段保留默认值,点击“CONTINUE”按钮打开“SelectFlight”页面。
5.选择飞机航班
可以保存默认值,点击“CONTINUE”按钮打开“BookaFlight”页面。
6.输入必填字段(红色字段)
输入用户名和信用卡号码(信用卡可以输入虚构的号码,如8888-8888)。
点击网页下方的“SECUREPURCHASE”按钮,打开“FlightConfirmation”网页。
7.完成定制流程
查看订票数据,并选择“BACKTOHOME”回到MercuryTours网站首页。
8.停止录制
在QuickTest工具列上点击“Stop”按钮,停止录制。
到这里已经完成了预定从“纽约-旧金山”机票的动作,并且QuickTest已经录制了从按下“Record”按钮后到“Stop”按钮之间的所有操作。
9.保存脚本
选择“File>Save”或者电机工具栏上的“Save”按钮,开启“Save”对话窗口。选择的路径,填写文件名,我们取名为Flight。点击“保存”按钮进行保存。
通过以上九个步骤,我们录制了一个完整的测试脚本—预定从纽约到旧金山的机票。
2.2.2分析录制的测试脚本
在录制过程中,QuickTest会在测试脚本管理窗口(也叫TreeView窗口)中产生对每一个操作的相应记录。并在KeywordView中以类似Excel工作表的方式显示所录制的测试脚本。当录制结束后,QuickTest也就记录下了测试过程中的所有操作。测试脚本管理窗口显示的内容如下图所示:
在KeywordView中的每一个字段都有其意义:
nItem:以阶层式的图标表示这个操作步骤所作用的组件(测试对象、工具对象、函数呼叫或脚本)。
nOperation:要在这个作用到的组件上执行的动作,如点击、选择等。
nValue:执行动作的参数,例如当鼠标点击一张图片时是用左键还是右键。
nAssignment:使用到的变量。
nComment:你在测试脚本中加入的批注。
nDocumentation:自动产生用来描述此操作步骤的英文说明。
脚本中的每一个步骤在KeywordView中都会以一列来显示,其中用来表示此组件类别的图标以及步骤的详细数据。
下面我们针对一些常见的操作步骤作详细说明:
2.3执行测试脚本
当运行录制好的测试脚本时,QuickTest会打开被测试程序,执行你在测试中录制的每一个操作。测试运行结束后,QuickTest显示本次运行的结果。接下来,我们执行在上一节中录制的Flight测试脚本。
1.打开录制的Flight测试脚本。
2.设置运行选项。点击“Tool>Options”打开设置选项对话框,选择“Run”标签页,如下图:
如果要将所有画面储存在测试结果中,在“Savestepscreencapturetoresults”选项中选择“Always”选项。一般情况下我们选择“Onerror”或“Onerrorandwarning”表示在回放测试过程中出现问题时,才保存图象信息。在这里我们为了更多的展示QuickTest的功能,所以选择使用“Always”选项。
3.在工具条上点击“Run”按钮,打开“Run”对话框:
询问要将本次的测试运行结果保存到何处。选择“NewRunresultsfolder”单选按钮,设定好存放路径(在这使用预设的测试结果名称)。
4.点击“OK”按钮开始执行测试。
可以看到QuickTest按照你在脚本中录制的操作,一步一步的运行测试,操作过程与你手工操作时完全一样。同时可以在QuickTest的KeywordView中会出现一个黄色的箭头,指示目前正在执行的测试步骤。
2.3.2执行脚本出现错误
如果在执行测试的时候出现错误,会显示一个错误信息对话框?
2.4分析测试结果
在测试执行完成后,QuickTest会自动显示测试结果窗口,如下图所示:
在这个测试结果窗口中分二个部分显示测试执行的结果
n左边显示Testresultstree,以阶层图标的方式显示测试脚本所执行的步骤。可以选择“+”检查每一个步骤,所有的执行步骤都会以图示的方式显示。可以设定QuickTest以不同的资料执行每个测试或某个动作,每执行一次反复称为一个迭代,每一次迭代都会被编号(在上面的例子中只执行了一次迭代)。
n右边则是显示测试结果的详细信息。在第一个表格中显示哪些迭代是已经通过的,哪些是失败的。第二个表格是显示测试脚本的检查点,哪些是通过的,哪些是失败的,以及有几个警告信息。
在上面的测试中,所有的测试都是通过的,在脚本中也没有添加检查点(有关检查点的内容我们将在以后的课程中学习)。接下来我们查看QuickTest执行测试脚本的详细结果,以及选择某个测试步骤时出现的详细信息。
在树视图中展开“FlightIteration1(Row1)>Action1Summary>WelcomeMercuryTours>FindaFlight:Mercury>”,选择“"fromPost":Select"NewYork"”。
在这个测试结果窗口中显示三个部分,分别是:
n左边是Testresultstree:展开树视图后,显示了测试执行过程中的每一个操作步骤。选择某一个测试步骤,会在右边区域显示相应的信息。
n右上方是Testresultsdetail:对应当前选中的测试步骤,显示被选取测试步骤执行时的详细信息。
n右下方是ActiveScreen:对应当前选中的测试步骤,显示该操作执行时应用程序的屏幕截图。
当选中testresultstree上的网页图示,会在“ActiveScreen”中看到执行时的画面。当选中testresultstree上的测试步骤(在某个对象上执行某个动作),除了显示当前时的画面外,对象还会被粉色的框框框住。在上面的例子中,在“ActiveScreen”中点击被框住的“DepartingFrom”下拉菜单,会显示其他的选项。
第三章建立检查点
通过上一章的学习,我们已经掌握了如何录制、执行测试脚本以及查看测试结果。但是我们只是实现了测试执行的自动化,没有实现测试验证的自动化,所以这并不是真正的自动化测试。在这一章我们学习如何在测试脚本中设置检查点,以验证执行结果的真确性。
“检查点”是将指定属性的当前值与该属性的期望值进行比较的验证点。这能够确定网站或应用程序是否正常运行。当添加检查点时,QuickTest会将检查点添加到关键字视图中的当前行并在专家视图中添加一条“检查检查点”语句。运行测试或组件时,QuickTest会将检查点的期望结果与当前结果进行比较。如果结果不匹配,检查点就会失败。可以在“测试结果”窗口中查看检查点的结果。
3.1QuickTest检查点种类
首先我们了解一下QuickTest支持的检查点种类,如下表所示,QuickTest支持以下检查点:
检查点类型
说明
范例
标准检查点
检查对象的属性
检查某个按钮是否被选取
图片检查点
检查图片的属性
检查图片的来源文件是否是正确的
表格检查点
检查表格的内容
检查表格内的内容是否是正确对的
网页检查点
检查网页的属性
检查网页加载的时间或是网页是否含有不正确的链接
文字/文字区域检查点
检查网页上或是窗口上出现的文字是否正确
检查登陆系统后时候出行登陆成功的文字
图像检查点
提取网页和窗口的画面检查画面是否正确
检查网页或者网页的一部分是否如期显示
数据库检查点
检查数据库的内容时候正确
检查数据库查询的值是否正确
XML检查点
检查XML文件的内容
XML检测点有两种—XML文件检测点和XML应用检测点。XML文件检测点用于检查一个XML文件;XML应用检测点用于检查一个Web页面的XML文档。
你可以在录制测试的过程中,或录制结束后,向测试脚本中添加检测点。下面我们学习如何在测试脚本上建立检查点。
3.2创建检查点
打开Flight测试脚本,将脚本另存为“Checkpoint”测试脚本。我们在Checkpoint测试脚本中创建4个检查点,分别是:对象检查、网页检查、文字检查以及表格检查。
3.2.1对象检查
通过向测试或组件中添加标准检查点,可以对不同版本的应用程序或网站中的对象属性值进行比较。可以使用标准检查点来检查网站或应用程序中的对象属性值。标准检查点将对录制期间捕获的对象属性的预期值,与运行会话期间对象的当前值进行比较。
首先在Checkpoint测试脚本上添加一个标准检查点,这个检查点用以检查旅客的姓氏。
创建标准检查点:
1.打开Checkpoint测试脚本。
2.选择要建立检查点的网页
在QuickTest的视图树中展开“Action1>Welcome:MercuryTours>BookaFlight:Mercury”,由于输入使用者姓氏的测试步骤是“passFirst0”这个步骤,所以要选择这个步骤的下一个测试步骤,以便建立检查点。如下图所示:
3.建立标准检查点
对“ActiveScreen”中的FirstName编辑框点击鼠标右键,显示插入选择点的类型。
选择“InsertStandardCheckpoint”选型,显示“ObjectSelection-CheckpointProperties”对话窗口:
确保当前的焦点定位在“WebEdit:passFirst0”上,点击“OK”按钮,弹出如下的窗口:
在检查点属性窗口会显示将查点的属性:
nName:将查点的名称
nClass:检查点的类别,WebEdit表示这个检查点是个输入框
n“Type”字段中的“ABC”图标:表示这个属性的值是一个常数
对于每一个检查点,QuickTest会使用预设的属性最为检查点的属性,下表说明这些预设的属性。
属性
值
说明
htmltag
INPUT
HTML原始码中的INPUT标签
innertext
在这个范例中,innertext只是空的,检查点会检查当执行时这个属性是不是空的
name
passFirst0
passFirst0是这个编辑框的名称
type
text
text是HTML原始码中INPUT对象的类型
value
姓氏(录制脚本是输入的姓氏)
在编辑框中输入的文字
我们接受预设的设定值,点击“OK”。QuickTest会在选取的步骤之前建立一个标准检查点。
4.在工具栏上点击“Save”保存脚本。
通过1-4的步骤,添加一个标准检查点的操作就此结束。
3.2.2网页检查
我们在Checkpoint测试脚本中再添加一个网页检查点,网页检查点会检查网页的链接以及图像的数量时候与当前录制时的数量一致。网页检查点只能应用于Web页面中。
创建网页检查:
1.选择要建立检查点的网页
展开“Action1>Welcome:MercuryTours”选择“BookaFlight:Mercury”页面,在“ActiveScreen”会显示相应的页面。
2.建立网页检查点
在“ActiveScreen”上的任意地方点击鼠标右键,选取“InsertStandardCheckpoint”,开启“ObjectSelection-CheckpointProperties”对话窗口(由于选择的位置不同,对话窗口显示被选取的对象可能不一样)。
选择最上面的“Page:BookaFlight:Mercury”,并点击“OK”按钮确认,将打开“PageCheckpointProperties”对话框。
当执行测试时,QuickTest会检查网页的链接与图片的数量,以及加载的时间,如同对话窗口上方所显示的那样。
QuickTest页检查每一个链接的URL以及每一个图片的原始文件是否存在。
接受默认设定,点击“OK”。QuickTest会在BookaFlight:Mercury网页上加一个网页检查。
4.在工具栏上点击“Save”保存脚本。
3.2.3文字检查
在这一节中我们学习建立一个文字检查点,检查在“FlightConfirmation”网页中是否出现“NewYork”?
建立文字检查点:
1.确定要建立检查点的网页
展开“Action1>Welcome:MercuryTours”选择“FlightConfirmation:Mercury”页面,在“ActiveScreen”会显示相应的页面。
2.建立文字检查点
在“ActiveScreen”中选择在“Departing”下方的“NewYork”。
对选取的文字按下鼠标右键,并选取“InsertTextCheckpoint”打开“TextCheckpointProperties”对话窗口。
当“CheckedText”出现在下拉式清单中时,在“Constant”字段显示的就是选取的文字。这也就是QuickTest在执行测试脚本时所要检查的文字。
3.点击“OK”关闭窗口。
QuickTest会在测试脚本上加上一个文字检查点,这个文字检查点会出现在“FlightConfirmation:Mercury”网页下方。
4.在工具栏上点击“Save”保存脚本。
3.2.4表格检查
通过添加表检查点,可以检查应用程序中显示的表的内容。通过向测试或组件中添加表检查点,可以检查表的单元格中是否显示了指定的值。对于ActiveX表,还可以检查表对象的属性。要添加表检查点,可使用“检查点属性”对话框。
在上面我们已经添加了标准、网页、文字将查点,接下来我们在Checkpoint测试脚本中再添加一个表格检查点,检查“BookaFlight:Mercury”网页上航班的价格。
创建表格检查点:
1.选取要建立检查点的网页
展开“Action1>Welcome:MercuryTours”选择“BookaFlight:Mercury”页面,在“ActiveScreen”会显示相应的页面。
2.建立表格检查点
在“ActiveScreen”中,在第一个航班的价钱上“270”上点击鼠标右键,选择“InsertStandardCheckpoint”打开“ObjectSelection-CheckpointProperties”对话窗口。
刚打开时选取的是“WebElement:270”,这时要选择上一层的WebTable对象,在这个例子中选择“WebTable:NewYorktoSanFrancisco”。点击“OK”打开“TableCheckpointProperties”对话窗口,显示整个表格的内容。
预设每一个字段都会被选择,表示所有字段都会检查,可以对某个字段双击,取消检查字段,或者选择整个栏和列,执行选取或取消的动作。
在每个字段的列标题上双击,取消勾选的图标,然后再270字段处双击,这样执行时QuickTest只会对这个字段值作检查。
3.点击“OK”关闭对话框。
QuickTest会在测试脚本中,“BookaFlight:Mercury”页面下加上一个表格检查点。
4.在工具栏上点击“Save”保存脚本。
3.3执行并分析使用检查点的测试脚本
在上一节中,我们在脚本中添加了4个检查点,现在,运行Checkpoint测试脚本,分析插入检查点后,脚本的运行情况。
1.在工具栏上点击“Run”按钮,弹出如下窗口:
这个页面是询问将本次测试结果保存在哪个目录,选择“Newrunresultsfolder”单选按钮,接受默认设置,点击“OK”按钮确认。这时QuickTest会按照脚本中的操作,一步一步进行测试,操作过程和手工操作是完全一样。
2.当QuickTest执行王测试脚本后,测试执行结果窗口会自动开启。如果所有的检查点都通过了验证,运行结果为Passed。如果有一个或多个检查点没有同过验证,这运行结果显示为Failed,如下图所示:
在上图中可以看到,设置的4个检查点都通过了验证,下面我们看一下各个检查点的验证结果。
n验证网页检查点
在testresultstree中展开“CheckpointIteration1(Row1)>Action1Summary>Welcome:MercuryTours>BookaFlight:Mercury”,并选择“Checkpoint"BookaFlight:Mercury"”。
在右边的“Details”窗口中,可以看到网页检查点的详细信息,例如网页检查点检查了哪些项目。
由于所有网页检查的项目,其实际值与预期值相符,所以这个网页检查点的结果为Passed。
n验证表格检查点
在testresultstree中展开“BookaFlight:Mercury>NewYorktoSanFrancisco”,并选择“Checkpoint"NewYorktoSanFrancisco"”。
在“Details”窗口可以看到表格的详细结果。也可以在下方看到整个表格的内容,被检查的字段以黑色的粗体文字显示,没有检查的字段以灰色文字显示。如下图所示:
这个表格检查点检查的字段值,其实际值与预期值相符,所以检查点的结果为Passed。
n验证标准检查点
在testresultstree中展开“BookaFlight:Mercury>passFirst0”,并选择“Checkpoint"passFirst0"”。
在“Details”窗口可以看到标准检查点的详细结果,如检查了哪些属性,以及属性的值。
n验证文字检查点
在testresultstree中展开“CheckpointIteration1(Row1)>Action1Summary>Welcome:MercuryTours>FlightConfirmation:Mercury”,并选择“Checkpoint"NewYork"”。显示如界面,因为文字检查点的实际值与预期值相同,所以检查点的结果为Passed。
第四章参数化
在测试应用程序时,可能想检查对应用程序使用不同输入数据进行同一操作时,程序是否能正常的工作。在这种情况下,你可以将这个操作重复录制多次,每次填入不同的数据,这种方法虽然能够解决问题,但实现起来太笨拙了。QuickTest提供了一个更好的方法来解决这个问题——参数化测试脚本。参数化测试脚本包括数据输入的参数化和检测点的参数化。
使用QuickTest可以通过将固定值替换为参数,扩展基本测试或组件的范围。该过程(称为参数化)大大提高了测试或组件的功能和灵活性。
可在QuickTest中使用参数功能,通过参数化测试或组件所使用的值来增强测试或组件。参数是一种从外部数据源或生成器赋值的变量。
QuickTest可以参数化测试或组件中的步骤和检查点中的值。还可以参数化操作参数的值。如果希望参数化测试或组件中多个步骤中的同一个值,可能需要考虑使用数据驱动器,而不是手动添加参数。
4.1参数化步骤和检查点中的值
录制或编辑测试或组件时,可以参数化步骤和检查点中的值。可以参数化选定步骤的对象属性的值。还可以参数化为该步骤定义的操作(方法或函数参数)的值。
例如,应用程序或网站可能包含一个带有编辑字段的表单,用户可以在该编辑字段中键入用户名。你可能希望测试应用程序或网站是否读取该信息并将其正确显示在对话框中。可以插入一个对已登录的用户名使用内置环境变量的文本检查点,以检查显示的信息是否正确。
通过参数化检查点属性的值,可以检查应用程序或网站如何基于不同的数据执行相同的操作。
例如,如果要测试MercuryTours示例网站,可以创建一个检查点,以便检查预订机票后该机票是否被正确预订。假设您需要检查针对各种不同目的地所预订的航班是否正确。可以为目的地信息添加一个数据表参数,而不是为每个目的地分别创建带有单独检查点的不同测试或组件。对于测试或组件的每次循环,QuickTest都会针对不同目的地检查航班信息。
4.1.1参数化对象和检查点的属性值
可以在“对象属性”或“对象库”对话框中参数化对象的一个或多个属性的值。可以在“检查点属性”对话框中参数化检查点的一个或多个属性的值。
采用下列方式可以打开“对象属性”对话框或“检查点属性”对话框:
n选择“步骤”>“对象属性”,或者右键单击某个步骤并选择“对象属性”。将打开“对象属性”对话框。
n选择“工具”>“对象库”,单击“对象库”工具栏按钮,或者右键单击包含该对象的操作或组件,然后选择“对象库”。将打开“对象库”对话框。
n选择“步骤”>“检查点属性”,或者右键单击该检查点并选择“检查点属性”。
然后在对话框的“配置值”区域中选择参数,
如果该值已经参数化,则“参数”框将显示该值的当前参数定义。如果该值尚未参数化,则“参数”框将显示该值的默认参数定义。
4.1.2参数化操作的值
如果步骤中使用的方法或函数具有参数,则可以根据需要参数化该参数值。例如,如果操作使用Click方法,则可以参数化x参数、y参数或这两者的值。
在关键字视图中选择已参数化的值时,将显示该参数类型的图标。例如,在以下片段中,已将Set方法的值定义为随机数字参数。每次运行测试或组件时,QuickTest都会在creditnumber编辑框中输入一个随机数字值。
可以使用视图中的“值”列中的参数化图标来参数化操作值。
单击参数化图标,打开“值配置选项”对话框,将显示当前定义的值。
选择“参数”。如果该值已经参数化,则“参数”部分将显示该值的当前参数定义。如果该值尚未参数化,则“参数”部分将显示该值的默认参数定义。单击“确定”接受显示的参数语句并关闭该对话框。
选择一个尚未参数化的值时,QuickTest会为该值生成默认参数定义。下表描述了如何确定默认参数设置:
执行参数化时
条件
默认参数类型
默认参数名
操作中的步骤或检查点的值
至少在当前操作中定义了一个输入操作参数
操作参数
在“操作属性”对话框的“参数”选项卡中显示第一个输入参数
嵌套操作的输入操作参数值
至少为调用该嵌套操作的操作定义了一个输入操作参数
操作参数
在调用操作的“操作属性”对话框的“参数”选项卡中显示第一个输入参数
顶层操作调用的输入操作参数值
至少为测试定义了一个输入参数
测试参数
在“测试设置”对话框的“参数”选项卡中显示第一个输入参数
组件中的步骤或检查点的值
至少为该组件定义了一个输入参数
组件参数
在“业务组件设置”对话框的“参数”选项卡中显示第一个输入参数
如果上述相关条件不为真,则默认参数类型为“数据表”。如果接受了默认参数详细信息,QuickTest将用基于选定值的名称新建一个数据表参数。
4.2参数种类
QuickTest有四种类型的参数:
n测试、操作或组件参数,通过它可以使用从测试或组件中传递的值,或者来自测试中的其他操作的值。为了在特定操作内使用某个值,必须将该值通过测试的操作层次结构向下传递到所需的操作。然后,可以使用该参数值来参数化测试或组件中的步骤。例如,假设要使用从运行(调用)测试的外部应用程序传递到测试中的某个值来参数化Action3中的一个步骤。可将该值从测试级别传递到Action1(顶层操作)至Action3(Action1的子操作),然后使用该“操作”输入参数值(从外部应用程序传递的值)来参数化所需的步骤。
n数据表参数,通过它可以创建使用您所提供的数据多次运行的数据驱动的测试(或操作)。在每次重复(或循环)中,QuickTest均使用数据表中不同的值。例如,假设您的应用程序或网站包含一项功能,用户可以通过该功能从成员数据库中搜索联系信息。当用户输入某个成员的姓名时,将显示该成员的联系信息,以及一个标记为“查看<MemName>的照片”的按钮,其中<MemName>是该成员的姓名。可以参数化按钮的名称属性,以便在运行会话的每次循环期间,QuickTest可标识不同的照片按钮。
n环境变量参数,通过它可以在运行会话期间使用来自其他来源的变量值。这些变量值可能是您所提供的值,或者是QuickTest基于您选择的条件和选项而生成的值。例如,可以让QuickTest从某个外部文件读取用于填写Web表单的所有值,或者可以使用QuickTest的内置环境变量之一来插入有关运行测试或组件的计算机的当前信息。
n随机数字参数,通过它可以插入随机数字作为测试或组件的值。例如,要检查应用程序处理大小机票订单的方式,可以让QuickTest生成一个随机数字,然后将其插入到“票数”编辑字段中。
4.2.1使用数据表参数
可以通过创建数据表参数来为参数提供可能的值列表。通过数据表参数可以创建使用所提供的数据多次运行的数据驱动测试、组件或操作。在每次重复中,QuickTest均使用数据表中不同的值。
例如,考虑MercuryTours示例网站,通过该网站可预订航班请求。要预订航班,需要提供航班路线,然后单击“继续”按钮。该网站将针对请求的路线返回可用的航班。
可通过访问网站并录制大量查询的提交来执行该测试。这是一个既费时又费力的低效解决方案。通过使用数据表参数,可以连续对多个查询运行测试或组件。
参数化测试或组件时,需要首先录制访问网站并针对所请求的一条路线来检查可用航班的步骤。然后将录制的路线替换为某个数据表参数,并在数据表的全局表中添加自己的数据集,每条路线一个。
新建数据表参数时,将在数据表中添加新的一列,并将参数化的当前值放在第一行中。如果要对值进行参数化并选择现有的数据表参数,则将保留所选参数的列中的值,并且这些值不会被参数的当前值覆盖。
表中的每个列都表示单个数据表参数的值列表。列标题是参数名。表中的每一行都表示QuickTest在测试或组件的单次循环期间为所有参数提交的一组值。运行测试或组件时,QuickTest将针对表中的每一行数据运行一次测试或组件循环。例如,如果测试在数据表的全局表中有十行,则运行十次循环。
在上面的例子中,当运行测试时,QuickTest降为每一个路线分别提交一个查询。
4.2.2使用环境变量参数
QuickTest可以插入环境变量列表中的值,该列表是可通过测试访问的变量和相应值的列表。在测试运行的整个过程中,无论循环次数是多少,环境变量的值始终保持不变,除非在脚本中以编程方式更改变量的值。
QuickTest有以下三种环境变量:用户定义的内部环境变量、用户定义的外部环境变量以及内置环境变量。
用户定义的内部环境变量--在测试内定义的变量。这些变量与测试一起保存,并且只能在定义这些变量的测试内访问。在“测试设置”对话框或“参数选项”对话框的“环境”选项卡中,可以创建或修改测试中用户定义的内部环境变量。
用户定义的外部环境变量--在活动外部环境变量文件中预定义的变量。可根据需要创建任意多的文件,并为每个测试选择一个适当的文件,或者更改用于每个测试运行的文件。
内置环境变量--表示有关测试和运行测试的计算机的信息的变量,例如测试路径和操作系统。从所有测试和组件中都可以访问这些变量,并且它们都被指定为只读变量
4.2.3使用随机数字参数
当选择“随机数字”作为参数类型时,可以通过“参数选项”对话框将参数配置为使用随机数字。“值配置选项”对话框的“参数”部分与“参数选项”对话框非常相似。
数字范围--指定用于生成随机数字的范围。默认情况下,随机数字范围介于0和100之间。可通过在“从”和“到”框中输入不同的值来修改此范围。该范围必须介于0和2147483647(包含)之间。
名称--指定参数的名称。通过为随机参数指定名称可以在测试中多次使用同一个参数。可以选择现有的命名参数,或者通过输入新的描述性名称来新建命名参数。
生成新随机数字--定义命名随机参数的生成计时。选中“名称”复选框时会启用该框。可以选择下列选项之一:
n为每次操作循环:在每次操作循环结束时生成一个新数字。
n为每次测试循环:在每次全局循环结束时生成一个新数字。
n为整个测试运行生成一次:第一次使用参数时生成一个新数字。在整个测试运行中,对参数使用同一个数字。
4.3参数化测试脚本
4.3.1定义参数
在上面的课程中我们学习了参数的种类以及参数化步骤和检查点中的值,现在我们使用Checkpoint脚本,在测试脚本中,纽约是个常数值,也就是说,每次执行测试脚本预定机票时,出发地点都纽约,现在,我们将测试脚本中的出发地点参数化,这样,执行测试脚本时就会以不同的出发地点去预定机票了。
1.首先,我们打开Checkpoint测试脚本,将脚本另存为“Parameter”,然后选择要参数化的文字:在视图树中展开“Action1>Welcome:MercuryTours>FindaFlight:Mercury”。
2.在视图树中选择“fromPort”右边的“Value”字段,然后再点击参数化图标,开启“ValueConfigurationOptions”对话窗口:
3.设置要参数化的属性,选择“Parameter”选择项,这样就可以用参数值来取代“NewYork”这个常数了,在参数中选择“DataTable”选项,这样这个参数就可以从QuickTest的DataTable中取得,将参数的名字改为“departure”。
4.点击“OK”确认,QuickTest会在DataTable中新增departure参数字段,并且插入了一行NewYork的值,NewYork会成为测试脚本执行使用的第一个值。
参数化以后可以看到树视图中的变化,在参数之前,这个测试步骤显示“foomPost…Select…NewYork”,现在,这个步骤变成了“foomPost…Select…DataTable("departure",dtGlobalSheet)”。而且当点击Value字段时,Value字段会显示如图所示:
表示此测试步骤已经被参数化,而且其值从DataTable中的departure字段中获得。
5.在departure字段中加入出发点资料,使QuickTest可以使用这些资料执行脚本。
在departure字段的第二行,第三行分别输入:Portland、Seattle。
6.保存测试脚本。
4.3.2修正受到参数化影响的步骤
当测试步骤被参数化以后,有可能会影响到其它的测试步骤也要参数化,例如我们为了验证在“FlightConfirmation”网页中是否出现“NewYork”(第三章创建文字检查点),在网页上添加了一个文字检查点。那么,就要对出发地的文字检查点作参数化,以符合对出发地点参数化的预期结果。
修正文字检查点,首先在树视图中,展开“Action1>Welcome:MercuryTours>FlightConfirmation:Mercury”页面,然后点击鼠标右键,选择“CheckpointProperties”,打开“TextCheckpointProperties”对话窗口:
在“CheckedText”的Constant字段中显示为“NewYork”,表示测试脚本在每次执行时,这个文字检查点的预期值都为“NewYork”。我们选择Parameter,点击旁边的“ParameterOptions”按钮,打开“ParameterOptions”对话窗口:
在参数类型选择框选择“DataTable”选项,在名字选择框选择“departure”选项,指明这个文字检查点使用departure字段中的值当成检查点的预期值。
点击“OK”关闭窗口,这样文字检查点也被参数化了。
4.3.3执行并分析使用参数的测试脚本
参数化测试脚本后,我们运行Parameter测试脚本。QuickTest会使用DataTable中departure字段值,执行三次测试脚本。
执行测试脚本:点击工具栏上的“Run”按钮,开启Run对话窗口,选取“Newrunresultsfolder”,其余为默认值,点击“OK”开始执行脚本。当脚本运行结束后,会开启测试结果窗口。
在树视图中,展开“ParameterIteration2>Action1Summary>WelcomeMercuryTours>FlightConfirmation:Mercury”,选择“Checkpoint"NewYork"”,显示如下图:
在检查点“Details”窗口中,显示Portland为预期记过同时也是实际的值,所以文字检查点为通过。同时也可以看到在下方的“Application”窗口中,显示机票的出发地点也是Portland。
在图中可以看出,虽然每次执行时,文字检查点的结果是通过的,但是第二次与第三次的执行结果仍然为失败。这是因为出发地点的改变,造成在表格检查点中的机票价钱改变,导致表格检查点失败。在以后的课程中,我们将学习修正表格检查点,让QuickTest自动更新表格检查点的预期结果,就可以检查正确的票价了。
第五章输出值
通过QuickTest可以检索测试或组件中的值,并将这些值作为输出值存储。此后,就可以检索这些值,并在运行会话的不同阶段使用该值作为输入。
输出值是一个步骤,在该步骤中,捕获测试或组件中某个特定点的一个或多个值,并在运行会话持续时间存储这些值。随后,在运行会话中的不同点,可以将这些值作为输入使用。
可以输出任何对象的属性值。还可以从文本字符串、表单元格、数据库和XML文档输出值。
创建输出值步骤时,可以确定运行会话持续时间内的值存储在哪里,以及如何使用这些值。运行会话期间,QuickTest检索指定点的每个值并将其存储在指定位置。以后当运行会话中需要值时,QuickTest将从该位置检索值并根据需要来使用。
5.1创建输出值
5.1.1输出值类型
将输出值步骤添加到测试或组件时,首先选择要输出的值的类别,例如,属性值、文本值或XML元素值。然后,就可以确定要输出的值以及每个值的存储位置。在QuickTest中可以创建以下几个类别的输出值:
n标准输出值
n文本和文本区输出值
n数据库输出值
nXML输出值
1.标准输出值
可以使用标准输出值来输出大多数对象的属性值。例如,在基于Web的应用程序中,一个网页中的链接数可能基于用户在上一页的表单中所做选择的不同而变化。可以在测试中创建一个输出值,来存储页面中的链接数。还可以使用标准输出值来输出表单元格的内容。
2.文本和文本区输出值
可以使用文本输出值来输出屏幕或网页中显示的文本字符串。创建文本输出值时,可以输出对象文本的一部分。还可以指定要在输出文本之前和之后输出的文本。
可以使用文本区域输出值来输出WindowsApplications中屏幕已定义区域内显示的文本字符串。例如,假设在测试的应用程序中,想要存储显示在特定步骤之后的任何错误消息的文本。在If语句中,查看带有已知标题栏值(例如Error)的窗口是否存在。如果该窗口存在,则输出该窗口中的文本(假设窗口大小与所有可能的错误消息的大小相同)。
在使用基于Windows的应用程序文本输出值时应注意以下事项:
n在基于Windows的应用程序中创建文本或文本区输出值时使用文本识别机制,有时会检索到不想要的文本信息(例如隐藏文本和带阴影的文本,这些文本会作为同一字符串的多个副本显示)。
n此外,在不同的运行会话中,文本(和文本区)输出值的表现方式可能不同,具体取决于使用的操作系统版本、已经安装的ServicePack、安装的其他工具包、的应用程序中使用的API等等。
3.数据库输出值
可以使用数据库输出值,基于在数据库上定义的查询的结果(结果集)来输出数据库单元格内容的值。可以从结果集的全部内容中创建输出值,也可以从其中某一部分创建输出值。在运行会话过程中,QuickTest从数据库中检索当前数据,并根据指定的设置来输出值。
4.XML输出值
可以使用XML输出值输出XML文档中的XML元素和属性的值。运行会话完成后,可以在“测试结果”窗口中查看XML输出值的概要结果。还可以通过打开“XML输出值结果”窗口来查看详细结果。例如,假设网页中的某个XML文档包含新车的价目表。可以通过选择要输出的相应的XML元素值来输出特定汽车的价格。
以下给出每种环境支持的输出值类型:
输出值类别
Web
标准Windows
VB
ActiveX
其它环境
标准
S
S
S
S
NA
页(标准)
S
NA
NA
NA
NA
表(标准)
S
NA
NA
S
NA
文本
S
S
S
S
NA
文本区
NS
S
S
S
NA
数据库
NS
NA
NA
NA
S(DbTable)
XML
S
NA
NA
NA
XML文件
*S--支持NS--不支持NA--不适用
5.1.2存储输出值
定义输出值时,可以指定运行会话期间在哪里以及如何存储每个值。可以将值输出到:
n测试、操作或组件参数
n运行时数据表
n环境变量
1.将值存储在测试、操作或组件参数中
可以将值输出到操作或组件参数,以便可以在运行会话后面的部分中使用来自运行会话某一部分的值,或者传递回运行(调用)测试或组件的应用程序。
例如,假设要测试一个购物应用程序,该程序计算采购费用,并自动从账户中扣除采购金额。想要测试在每次运行带有不同的采购单的操作或组件时,该应用程序是否能够正确地从账户中扣除采购金额,可以将花费的总金额输出到某个操作或组件的参数值,然后在稍后的扣除该金额操作中的运行会话部分使用该值。
2.将值存储在运行时数据表中
对于要运行多次的由数据驱动的测试(或操作)来说,将值输出到运行时数据表的选项特别有用。在每次重复或循环中,QuickTest检索当前值并将其存储在运行时数据表的相应的行中。
例如,要测试一个航班预定应用程序,因此设计了一个测试来创建新预定,随后查看预定详细信息。每次运行测试时,应用程序为新预定生成一个唯一的订单号。要查看预定,应用程序要求用户输入相同的订单号。运行该测试之前,还不知道订单号。
要想解决这个问题,就要将在创建新预定时生成的唯一订单号的值输入数据表中。然后,在“ViewReservation”屏幕中,使用包含存储值的列将输出值插入订单号输入字段中。运行测试时,QuickTest检索站点为新预定生成的唯一订单号,并在运行时数据表中输入此输出值。测试到达查看预定所需的订单号输入字段时,QuickTest将存储在运行时数据表中的唯一订单号插入订单号字段中。
3.将值存储在环境变量中
将值输出到内部用户定义的环境变量时,可以在运行会话后面的阶段使用该环境变量输入参数。
例如,假设在测试一个应用程序,该程序会提示用户在“欢迎使用”页输入账号,然后显示用户姓名。就可以使用文本输出值来捕获显示的名称值,并将其存储在环境变量中。然后,可以检索环境变量中的值以便在应用程序的其他位置中输入用户的姓名。
5.2输出属性值
5.2.1定义标准输出值
通过“输出值属性”对话框可以选择要输出的属性值,并定义您选择的每个值的设置。
关闭此对话框之前,可以为相同对象选择许多属性并为每个属性值定义输出设置。运行会话过程中到达输出值步骤时,QuickTest将检索所有指定的属性值。
1.标识对象
对话框的上部显示有关要创建输出值的测试对象的信息:
项目
描述
名称
测试对象的名称
类
对象的类别
2.选择要输出的属性值
对话框的上半部分包含一个窗格,其中列出选定对象的属性,以及它们的值和类型。该窗格包含以下项:
3.指定属性值的输出设置
选择属性的复选框时,将突出显示属性详细信息,并且在“配置值”区域中显示选定属性值的当前输出定义。
第一次选择要输出的属性值时,“配置值”区域中会显示值的默认输出定义。选择要输出的属性值时,可以:
n通过选择其他属性值或单击“OK”接受显示的输出定义。
n通过单击“修改”按钮更改选定值的输出类型和/或设置。将打开“输出选项”对话框并显示该值当前的输出类型和设置。
5.2.2指定输出类型和和设置
为每个值定义的输出类型和设置决定该值在运行会话中的存储位置以及使用方式。到达输出值步骤时,QuickTest检索为输出选定的每个值并将其存储在指定位置,以供以后在运行会话中使用。新建输出值步骤时,QuickTest为选定要输出的每个值指定一个默认定义。
可以通过选择不同的输出类型并/或更改输出设置来更改选定值的当前输出定义:
n将值输出到操作或组件参数
n将值输出到数据表
n将值输出到环境变量
1.将值输出到操作或组件参数
可以将值输出到操作或组件参数,以便这些值可以在运行会话的后面部分中使用,或者传递回运行(调用)测试或组件的外部应用程序。如果参数已经定义为用于调用操作或组件的输出参数,只能将值输出到操作或组件参数。此外,仅当输出值类型和参数值类型匹配时,将值输出到操作或组件的选项才可用。选择“测试参数”、“操作参数”或“组件参数”作为输出类型时,通过“输出选项”对话框可以选择在其中存储运行会话持续时间的选定值的参数。
2.将值输出到数据表
选择“数据表”作为输出类型时,通过“输出选项”对话框可以指定在运行时数据表中存储选定值的位置。
在将值输出到数据表时,有以下选项可以修改:
n名称--指定数据表中要存储值的列的名称。QuickTest建议使用输出的默认名称。可以从列表中选择现有的输出名称,也可以通过使用默认输出名称或输入有效的描述性名称来新建输出名称。
n数据表中的位置--输出测试的值时,指定将数据表列名称添加到数据表的全局工作表还是当前操作工作表中。
3.将值输出到环境变量
如果选择“环境”作为输出类型时,通过“输出选项”对话框,可以指定要在其中存储运行会话持续时间的选定值的环境参数,该参数由内部用户定义。
5.3在脚本中建立输出值
5.3.1建立输出值
在上一章中,因为在表格检查点中机票价钱的预期结果,并没有随着出发地点的改变而变动,导致第二、第三次的执行结果是失败的。
现在,我们从“SelectaFlight:Mercury”网页上取得机票价钱,并且已取得的机票价钱更新表格检查点的预期结果,这样一来,测试脚本就可以利用在“SelectaFlight:Mercury”网页上取得的机票价钱去验证“BookaFlight:Mercury”上显示的机票价钱。
1.首先,我们打开Parameter测试脚本,将脚本另存为“Output”测试脚本。
2.在树视图中,展开“Welcome:MercuryTours”并且点击“SelectaFlight:Mercury”网页,在ActiveScreen窗口会显示相应的页面。在ActiveScreen窗口中选取框住270,然后点击鼠标右键,选择“InsertTextOutput”,打开“TextOutputValueProperties”对话窗口:
3.在“TextOutputValueProperties”对话窗口中点击“Modify”按钮,打开“OutputOptions”对话窗口:
在名字字段显示Select_a_Flight_MercuryOutput_Text_out,将其改成depart_flight_price,接受其它默认值,点击“OK”确认,QuickTest会在DataTable中加入depart_flight_price字段。
在DataTable上的depart_flight_price字段的第一行会显示从应用程序上取得的输出值(270)。在执行时,第一次QuickTest会取得一样的值270,接下来的第二、第三次会从应用程序上取得实际值,并存放在DataTable中。
4.修正表格检查点的预期值
在树视图中,展开“Welcome:MercuryTours>BookaFlight:Mercury”,在“Checkpoint"NewYorktoSanFrancisco"”上点击鼠标右键,选择“CheckpointProperties”,打开“TableCheckpointProperties”对话窗口。
选中第三行,第三列(被勾选的字段),在“Configurevalue”中选择“Parameter”然后点击“ParameterOptions”按钮,打开“ParameterOptions”对话窗口:
在窗口的名字下拉列表中选择depart_flight_price。
5.点击“OK”回到“TableCheckpointProperties”对话窗口,可以看到这个检查点的预期结果已经被参数化了。
点击“OK”关闭“TableCheckpointProperties”窗口,保存测试脚本
5.3.2执行并分析使用输出值的测试脚本
在上面我们在建本中建立侧输出值,并且将表格检查点参数化,现在,执行Output测试脚本。
执行测试脚本:点击工具栏上的“Run”按钮,开启Run对话窗口,选取“Newrunresultsfolder”,其余为默认值,点击“OK”开始执行脚本。当脚本运行结束后,会开启测试结果窗口。
在执行结果窗口中,点击树视图中的“Run-Time-Data”,可以在表格中看到执行测试时使用的输出值,在depart_flight_price字段中显示了不同的机票价钱。
在结果窗口中点击“TestoutputSummary”可以看到,12个检测点都通过了验证,运行结果均为Passed。
上一条:Ultraedit数据处理
下一条:SnapGene如何解绑设备
品质保证
多年的生产力软件专家
专业实力
资深技术支持项目实施团队
安全无忧
多位认证安全工程师
多元服务
软件提供方案整合,项目咨询实施
购软平台-找企业级软件,上购软平台。平台提供更齐全的软件产品、更专业的技术服务,同时提供行业资讯、软件使用教程和技巧。购软平台打造企业级数字产品综合应用服务平台。用户体验和数字类产品的专业化服务是我们不断追求的目标。购软平台您身边的企业级数字产品优秀服务商。