您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
   
 
  
每天15篇文章
不仅获得谋生技能
更可以追随信仰
 
     
   
 订阅
  捐助
Qtp自动测试工具(案例学习)
 
646 次浏览     评价:  
 2018-4-8
 

 

编辑推荐:

本文来自于思维焦点博客,本文主要通过案例学习总结了一种自动测试工具Qtp,使用QTP的目的是想用它来执行重复的自动化测试。

Qtp是什么?

测试用例网站

  • 注册与登录
  • 测试脚本
    • 录制/执行测试脚本
    • 分析录制的测试脚本
    • 执行、查看测试脚本
  • 建立检查点
    • 对象检查
    • 网页检查
    • 文字检查
    • 表格检查
    • 执行并分析使用检查点的测试脚本
  • 参数化
    • 参数化对象和检查点中的值
    • 参数的种类
    • 使用数据表参数
    • 修正受到参数化影响的检查点
    • 执行并分析使用参数的测试脚本
  • 输出值
    • 输出值类型
    • 存储输出值
    • 在脚本中建立输出值
    • 修正表格检查点的预期值
    • 执行并分析使用输出值的测试脚本

1.Qtp是什么?

QTP是Quick Test Professional的简称,是一种自动测试工具。使用QTP的目的是想用它来执行重复的自动化测试,主要是用于回归测试和测试同一软件的新版本。

loadrunner、Selenium、QTP三者区别?

Loadrunner是商业性能测试工具,收费,功能强大,适合做复杂场景的性能测试。

Selenium是开源的web自动测试工具,免费,主要做功能测试。

QTP是商业的功能测试工具,收费,支持web,桌面自动化测试。

2.测试用例网站

测试网站地址:http://newtours.demoaut.com

本文参考自:QTP教程(入门到高级)

软件下载:链接: http://pan.baidu.com/s/1qYCZ6SO 密码: wuks

本文测试案例(解压到qtp安装目录的Tests下):http://download.csdn.net/detail/sinat_31719925/9864314

2.1注册与登录

按提示输入以下订票数据,点击“CONTINUE”按钮打开“Book a Flight”页面:

输入必填字段(红色字段)

输入用户名和信用卡号码(信用卡可以输入虚构的号码,如8888-8888).点击网页下方的“SECURE PURCHASE”按钮,打开“Flight Confirmation”网页。

查看订票数据,并选择“BACK TO HOME”回到Mercury Tours网站首页或者退出。

2.2测试脚本

2.2.1录制/执行测试脚本

当浏览网站或使用应用程序时,QuickTest会纪录你的操作步骤,并产生测试脚本。当停止录制后,会看到QuickTest在Keyword View中以表格的方式显示测试脚本的操作步骤。录制前要关闭与测试不相关的程序窗口。

开启QuickTest,在“Add-in Manager”窗口中选择“Web”选项。(这句话可以略过: 检查“Help>About QuickTest Professional”查看目前加载了那些add-ins。如果没有加载“Web”,那么必须关闭并重新启动QuickTest Professional,然后在“Add-in Manager”窗口中选择“Web”。)

选中“Automation>Record and Run Settings”或者点选工具栏上的“Record”按钮。打开“Record and Run Settings”对话窗口

填写网站的地址和打开网站的浏览器:

切换到“Windows Application” 标签页,我们选择第二个单选按钮。因为我们只是对Mercury Tours 范例网站进行操作,不涉及到Windows程序

点击record,自动登录Mercury Tours 网站,如上文所示预订从New York 到 San Francisco 的机票。最后,我们就录制了一个完整的测试脚本—预定从纽约到旧金山的机票。

2.2.2分析录制的测试脚本

在录制过程中,QuickTest会在测试脚本管理窗口(也叫Tree View窗口)中产生对每一个操作的相应记录。

当录制结束后,QuickTest也就记录下了测试过程中的所有操作。测试脚本管理窗口显示的内容如下图所示:

在Keyword View中的每一个字段都有其意义:

1. Item:以阶层式的图标表示这个操作步骤所作用的组件(测试对象、工具对象、函数呼叫或脚本)。

2. Operation:要在这个作用到的组件上执行的动作,如点击、选择等。

3. Value:执行动作的参数,例如当鼠标点击一张图片时是用左键还是右键。 n Assignment:使用到的变量。

4. Comment:你在测试脚本中加入的批注。

5. Documentation:自动产生用来描述此操作步骤的英文说明。

2.2.3执行测试脚本

设置运行选项。点击“Tool>Options”打开设置选项对话框,选择“Run”标签页,如下图:

如果要将所有画面储存在测试结果中,在“Save step screen capture to results”选项中选择“Always”选项。一般情况下我们选择“On error”或“On error and warning”表示在回放测试过程中出现问题时,才保存图象信息。在这里我们为了更多的展示QuickTest的功能,所以选择使用“Always”选项。

在工具条上点击“Run”按钮,打开“Run”对话框:

询问要将本次的测试运行结果保存到何处。选择“New Run results folder”单选按钮,设定好存放路径(在这使用预设的测试结果名称)。

点击“OK”按钮开始执行测试。

可以看到QuickTest按照你在脚本中录制的操作,一步一步的运行测试,操作过程与你手工操作时完全一样。同时可以在QuickTest的Keyword View中会出现一个黄色的箭头,指示目前正在执行的测试步骤。

在测试执行完成后,QuickTest会自动显示测试结果窗口,如下图所示:

1.左边显示Test results tree,以阶层图标的方式显示测试脚本所执行的步骤。可以选

择“+”检查每一个步骤,所有的执行步骤都会以图示的方式显示。可以设定QuickTest以不同的资料执行每个测试或某个动作,每执行一次反复称为一个迭代,每一次迭代都会被编号(在上面的例子中只执行了一次迭代)。

2.右边则是显示测试结果的详细信息。在第一个表格中显示哪些迭代是已经通过的,哪些是失败的。第二个表格是显示测试脚本的检查点,哪些是通过的,哪些是失败的,以及有几个警告信息。

在树视图中展开“Test1 Iteration 1(Row 1)>Action1 Summary>Welcome Mercury Tours>Find a Flight: Mercury>”,选择“ "fromPost":Select "New York" ”。

在这个测试结果窗口中显示三个部分,分别是:

1.左边是Test results tree:展开树视图后,显示了测试执行过程中的每一个操作步骤。选择某一个测试步骤,会在右边区域显示相应的信息。

2.1右上方是Test results detail:对应当前选中的测试步骤,显示被选取测试步骤执行时的详细信息。

2.2右下方是Active Screen:对应当前选中的测试步骤,显示该操作执行时应用程序的屏幕截图。

3建立检查点

掌握了如何录制、执行测试脚本以及查看测试结果。只是实现了测试执行的自动化,没有实现测试验证的自动化,所以这并不是真正的自动化测试。在这一章我们学习如何在测试脚本中设置检查点,以验证执行结果的真确性。

“检查点”是将指定属性的当前值与该属性的期望值进行比较的验证点。这能够确定网站或应用程序是否正常运行。当添加检查点时, QuickTest 会将检查点添加到关键字视图中的当前行并在专家视图中添加一条“检查检查点”语句。运行测试或组件时, QuickTest 会将检查点的期望结果与当前结果进行比较。如果结果不匹配,检查点就会失败。可以在“测试结果”窗口中查看检查点的结果

QuickTest检查点种类:

下面在测试脚本上建立检查点:

将上面的test1脚本另存为“test1_checkpoint”测试脚本。我们在Checkpoint测试脚本中创建4个检查点,分别是:对象检查、网页检查、文字检查以及表格检查。

3.1对象检查

在QuickTest的视图树中展开“Action1>Welcome:Mercury Tours>Book a Flight: Mercury ”,由于输入使用者姓氏的测试步骤是 “passFirst0”这个步骤,所以要选择这个步骤的下一个测试步骤,以便建立检查点。如下图所示:

对“Active Screen”中的First Name 编辑框点击鼠标右键,显示插入选择点的类型。

如上图选择“Insert Standard Checkpoint”选型,显示“Object Selection-Checkpoint Properties”对话窗口:

确保当前的焦点定位在“WebEdit: passFirst0”上,点击“OK”按钮,弹出如下的窗口:

对于每一个检查点,QuickTest会使用预设的属性作为检查点的属性,下表说明这些预设的属性:

我们接受预设的设定值,点击“OK”。QuickTest会在选取的步骤之前建立一个标准检查点。

在工具栏上点击“Save”保存脚本,添加一个标准检查点的操作就此结束。

3.2网页检查

网页检查点会检查网页的链接以及图像的数量时候与当前录制时的数量一致。网页检查点只能应用于Web页面中。 创建网页检查:

展开“Action1>Welcome: Mercury Tours”选择“Book a Flight: Mercury”页面,在“Active Screen”会显示相应的页面

在“Active Screen”上的任意地方点击鼠标右键,选取“Insert Standard Checkpoint”,开启“Object Selection-Checkpoint Properties”对话窗口(由于选择的位置不同,对话窗口显示被选取的对象可能不一样)。

选择最上面的“Page:Book a Flight: Mercury”,并点击“OK”按钮确认,将打开“Page Checkpoint Properties”对话框。

当执行测试时,QuickTest会检查网页的链接与图片的数量,以及加载的时间,如同对话窗口上方所显示的那样。QuickTest页检查每一个链接的URL以及每一个图片的原始文件是否存在。

接受默认设定,点击“OK”。QuickTest会在Book a Flight: Mercury 网页上加一个网页检查。在工具栏上点击“Save”保存脚本。

3.3文字检查

建立一个文字检查点,检查在“Flight Confirmation”网页中是否出现“New York”?

展开“Action1>Welcome: Mercury Tours”选择“Flight Confirmation: Mercury”页面,在“Active Screen”会显示相应的页面

在“Active Screen”中选择在“Departing”下方的“New York”。对选取的文字按下鼠标右键,并选取“Insert Text Checkpoint”打开“Text Checkpoint Properties”对话窗口。

当“Checked Text”出现在下拉式清单中时,在“Constant”字段显示的就是选取的文字。这也就是QuickTest在执行测试脚本时所要检查的文字。

点击“OK”关闭窗口。QuickTest会在测试脚本上加上一个文字检查点,这个文字检查点会出现在“Flight Confirmation: Mercury”网页下方

3.4表格检查

通过添加表检查点,可以检查应用程序中显示的表的内容。通过向测试或组件中添加表检查点,可以检查表的单元格中是否显示了指定的值。对于 ActiveX 表,还可以检查表对 象的属性。要添加表检查点,可使用“检查点属性”对话框。

在上面我们已经添加了标准、网页、文字将查点,接下来我们在Checkpoint测试脚本中再添加一个表格检查点,检查“Book a Flight: Mercury”网页上航班的价格:

展开“Action1>Welcome: Mercury Tours”选择“Book a Flight: Mercury”页面,在“Active Screen”会显示相应的页面。

建立表格检查点在“Active Screen”中,在第一个航班的价钱上“270”上点击鼠标右键,选择“Insert Standard Checkpoint”打开“Object Selection-Checkpoint Properties”对话窗口。

刚打开时选取的是“WebElement:270”,这时要选择上一层的WebTable对象,在这个例子中选择“WebTable: New York to San Francisco”。点击“OK”打开“Table Checkpoint Properties”对话窗口,显示整个表格的内容:

预设每一个字段都会被选择,表示所有字段都会检查,可以对某个字段双击,取消检查字段,或者选择整个栏和列,执行选取或取消的动作。在每个字段的列标题上双击,取消勾选的图标,然后再270字段处双击,这样执行时QuickTest只会对这个字段值作检查。

点击“OK”关闭对话框。QuickTest会在测试脚本中,“Book a Flight: Mercury”页面下加上一个表格检查点

在工具栏上点击“Save”保存脚本

3.5执行并分析使用检查点的测试脚本

我们在脚本中添加了4个检查点,现在,运行Checkpoint测试脚本,分析插入检查点后,脚本的运行情况。

在工具栏上点击“Run”按钮:

当QuickTest执行王测试脚本后,测试执行结果窗口会自动开启。(跟前面一样,如果所有的检查点都通过了验证,运行结果为Passed。如果有一个或多个检查点没有同过验证,这运行结果显示为Failed)如下图所示:

3.5.1 验证标准检查点

在test results tree中展开“Book a Flight: Mercury >passFirst0”,并选择“Checkpoint"passFirst0"”。 在“Details”窗口可以看到标准检查点的详细结果,如检查了哪些属性,以及属性的值。

3.5.2验证网页检查点

在test results tree中展开“Checkpoint Iteration 1 (Row 1) > Action1 Summary >Welcome: Mercury Tours >Book a Flight: Mercury”,并选择“Checkpoint"Book a Flight: Mercury"”。 在右边的“Details”窗口中,可以看到网页检查点的详细信息,例如网页检查点检查了哪些项目。

3.5.3验证文字检查点

在test results tree中展开“Checkpoint Iteration 1 (Row 1) > Action1 Summary >Welcome: Mercury Tours > Flight Confirmation: Mercury”,并选择“Checkpoint"New York"”。显示如界面,因为文字检查点的实际值与预期值相同,所以检查点的结果为Passed。

3.5.4验证表格检查点

在test results tree中展开“Book a Flight: Mercury >New York to San Francisco ”,并选择“Checkpoint"New York to San Francisco"”。 在“Details”窗口可以看到表格的详细结果。也可以在下方看到整个表格的内容,被检查的字段以黑色的粗体文字显示,没有检查的字段以灰色文字显示。如下图所示:

4.参数化

在测试应用程序时,可能想检查对应用程序使用不同输入数据进行同一操作时,程序是否能正常的工作。在这种情况下,你可以将这个操作重复录制多次,每次填入不同的数据,这种方法虽然能够解决问题,但实现起来太笨拙了。QuickTest提供了一个更好的方法来解决这个问题——参数化测试脚本。参数化测试脚本包括数据输入的参数化和检测点的参数化。

使用 QuickTest 可以通过将固定值替换为参数,扩展基本测试或组件的范围。该过程(称为参数化)大大提高了测试或组件的功能和灵活性。

4.1参数化对象和检查点中的值

4.1.1录制或编辑测试或组件时,可以参数化步骤和检查点中的值。可以参数化选定步骤的对象属性的值。还可以参数化为该步骤定义的操作(方法或函数参数)的值。

例如,应用程序或网站可能包含一个带有编辑字段的表单,用户可以在该编辑字段中键入用户名。你可能希望测试应用程序或网站是否读取该信息并将其正确显示在对话框中。可以插入一个对已登录的用户名使用内置环境变量的文本检查点,以检查显示的信息是否正确。

4.1.2通过参数化检查点属性的值,可以检查应用程序或网站如何基于不同的数据执行相同的操作。

例如,如果要测试 Mercury Tours 示例网站,可以创建一个检查点,以便检查预订机票后该机票是否被正确预订。假设您需要检查针对各种不同目的地所预订的航班是否正确。可以为目的地信息添加一个数据表参数,而不是为每个目的地分别创建带有单独检查点的不同测试或组件。对于测试或组件的每次循环,QuickTest 都会针对不同目的地检查航班信息。

4.2参数的种类

QuickTest有四种类型的参数:

1.测试、操作或组件参数,通过它可以使用从测试或组件中传递的值,或者来自测试中的其他操作的值。为了在特定操作内使用某个值,必须将该值通过测试的操作层次结构向下传递到所需的操作。然后,可以使用该参数值来参数化测试或组件中的步骤。例如,假设要使用从运行(调用)测试的外部应用程序传递到测试中的某个值来参数化 Action3 中的一个步骤。可将该值从测试级别传递到 Action1 (顶层操作)至 Action3 (Action1 的子操作),然后使用该“操作”输入参数值(从外部应用程序传递的值)来参数化所需的步骤。

2. 数据表参数,通过它可以创建使用您所提供的数据多次运行的数据驱动的测试(或操作)。在每次重复(或循环)中, QuickTest 均使用数据表中不同的值。例如,假设您的应用程序或网站包含一项功能,用户可以通过该功能从成员数据库中搜索联系信息。当用户输入某个成员的姓名时,将显示该成员的联系信息,以及一个标记为“查看 <MemName> 的照片”的按钮,其中<MemName>是该成员的姓名。可以参数化按钮的名称属性,以便在运行会话的每次循环期间,QuickTest 可标识不同的照片按钮。

3. 环境变量参数,通过它可以在运行会话期间使用来自其他来源的变量值。这些变量

值可能是您所提供的值,或者是 QuickTest 基于您选择的条件和选项而生成的值。例如,可以让 QuickTest 从某个外部文件读取用于填写 Web 表单的所有值,或者可以使用 QuickTest 的内置环境变量之一来插入有关运行测试或组件的计算机的当前信息。

4.随机数字参数,通过它可以插入随机数字作为测试或组件的值。例如,要检查应用程序处理大小机票订单的方式,可以让 QuickTest 生成一个随机数字,然后将其插入到“票数”编辑字段中。

这里只讲数据表参数,看下面的4.3:

4.3使用数据表参数

可以通过创建数据表参数来为参数提供可能的值列表。通过数据表参数可以创建使用所提供的数据多次运行的数据驱动测试、组件或操作。在每次重复中,QuickTest均使用数据表中不同的值。

例如,考虑 Mercury Tours 示例网站,通过该网站可预订航班请求。要预订航班,需要提供航班路线,然后单击“继续”按钮。该网站将针对请求的路线返回可用的航班。

可通过访问网站并录制大量查询的提交来执行该测试。这是一个既费时又费力的低效解决方案。通过使用数据表参数,可以连续对多个查询运行测试或组件。

参数化测试或组件时,需要首先录制访问网站并针对所请求的一条路线来检查可用航班的步骤。然后将录制的路线替换为某个数据表参数,并在数据表的全局表中添加自己的数据集,每条路线一个。

现在我们使用Test2_Checkpoint脚本,在测试脚本中,纽约是个常数值,也就是说,每次执行测试脚本预定机票时,出发地点都纽约,现在,我们将测试脚本中的出发地点参数化,这样,执行测试脚本时就会以不同的出发地点去预定机票了。

首先,我们打开Test2_Checkpoint测试脚本,将脚本另存为“Test3_Parameter”,然后选择要参数化的文字:在视图树中展开“Action1>Welcome: Mercury Tours>Find a Flight: Mercury ”

在视图树中选择“fromPort”右边的“Value”字段,然后再点击参数化图标

设置要参数化的属性,选择“Parameter”选择项,这样就可以用参数值来取代“New York”这个常数了,在参数中选择“Data Table”选项,这样这个参数就可以从QuickTest的Data Table中取得,将参数的名字改为“departure”。

点击“OK”确认。参数化以后可以看到树视图中的变化,在参数之前,这个测试步骤显示“foomPost …Select… New York”,现在,这个步骤变成了“foomPost …Select… Data Table("departure",dtGlobalSheet)”。而且当点击Value字段时,Value字段会显示如图所示:

QuickTest会在Data Table中新增departure参数字段,并且插入了一行New York的值,New York 会成为测试脚本执行使用的第一个值。

在departure字段中加入出发点资料,使QuickTest可以使用这些资料执行脚本,在departure字段的第二行,第三行分别输入:Portland 、Seattle

4.4 修正受到参数化影响的检查点

当测试步骤被参数化以后,可能会影响到其他的测试步骤也要参数化,例如我们为了验证 “Flight Confirmation”网页中是否出现“New York ”,(文字检查点),在网页上添加了一个文字检查点。那么,就要对出发地的文字检查点做参数化,以符合对出发地点参数化的预期效果。

在“Checked Text”的Constant字段中显示为“New York”,表示测试脚本在每次执行时,这个文字检查点的预期值都为“New York”。我们选择Parameter,点击旁边的“Parameter Options”

按钮

4.5执行并分析使用参数的测试脚本

执行测试脚本:点击工具栏上的“Run”按钮,开启Run对话窗口

最后,虽然每次执行时,文字检查点的结果是通过的,但是第二次与第三次的执行结果仍然为失败。这是因为出发地点的改变,造成在表格检查点中的机票价钱改变,导致表格检查点失败。在以后的课程中,我们将学习修正表格检查点,让QuickTest自动更新表格检查点的预期结果,就可以检查正确的票价了。

在树视图中,展开“Parameter Iteration2 >Action1 Summary >Welcome Mercury Tours>Flight Confirmation: Mercury”,选择“Checkpoint"New York"”,显示如下图:

在检查点“Details”窗口中,显示Portland为预期记过同时也是实际的值,所以文字检查点为通过。同时也可以看到在下方的“Application”窗口中,显示机票的出发地点也是Portland。

5.输出值

通过 QuickTest 可以检索测试或组件中的值,并将这些值作为输出值存储。此后,就可以检索这些值,并在运行会话的不同阶段使用该值作为输入.

5.1输出值类型

将输出值步骤添加到测试或组件时,首先选择要输出的值的类别,例如,属性值、文本值或 XML 元素值。然后,就可以确定要输出的值以及每个值的存储位置。在QuickTest中可以创建以下几个类别的输出值:

1. 标准输出值

2.文本和文本区输出值

可以使用文本输出值来输出屏幕或网页中显示的文本字符串

3.数据库输出值

基于在数据库上定义的查询的结果(结果集)来输出数据库单元格内容的值。可以从结果集的全部内容中创建输出值,也可以从其中某一部分创建输出值。

4. XML输出值

5.2存储输出值

定义输出值时,可以指定运行会话期间在哪里以及如何存储每个值。可以将值输出到:

1.测试、操作或组件参数

2. 运行时数据表

3. 环境变量

5.3在脚本中建立输出值

在Test2_Parameter中,因为在表格检查点中机票价钱的预期结果,并没有随着出发地点的改变而变动,导致第二、第三次的执行结果是失败的。

现在,我们从“Select a Flight: Mercury ”网页上取得机票价钱,并且已取得的机票价钱更新表格检查点的预期结果,这样一来,测试脚本就可以利用在“Select a Flight: Mercury”网页上取得的机票价钱去验证“Book a Flight: Mercury”上显示的机票价钱。

首先,我们打开Test2_Parameter测试脚本,将脚本另存为“Test3_Output”测试脚本

在树视图中,展开“Welcome: Mercury Tours”并且点击“Select a Flight: Mercury”网页,在Active Screen窗口会显示相应的页面。在 Active Screen窗口中选取框住270,然后点击鼠标右键,选择“Insert Text Output”,打开“Text Output Value Properties”对话窗口:

在“Text Output Value Properties”对话窗口中点击“Modify”按钮,打开“Output Options”对话窗口,在名字字段显示Select_a_Flight_MercuryOutput_Text_out,将其改成depart_flight_price,接受其它默认值,点击“OK”确认,QuickTest会在Data Table中加入depart_flight_price字段。

5.4修正表格检查点的预期值

在树视图中,展开“Welcome: Mercury Tours >Book a Flight: Mercury”,在“Checkpoint"New York to San Francisco"”上点击鼠标右键,选择“Checkpoint Properties”,打开“Table Checkpoint Properties”对话窗口。

选中第三行,第三列(被勾选的字段),在“Configure value”中选择“Parameter”然后点击“Parameter Options”按钮,打开“Parameter Options”对话窗口:

在窗口的名字下拉列表中选择depart_flight_price。

5.5执行并分析使用输出值的测试脚本

执行测试脚本:点击工具栏上的“Run”按钮

在执行结果窗口中,点击树视图中的“Run-Time-Data”,可以在表格中看到执行测试时使用的输出值,在depart_flight_price字段中显示了不同的机票价钱。

在结果窗口中点击“Test output Summary”可以看到,12个检测点都通过了验证,运行结果均为Passed。

   
647 次浏览  评价: 差  订阅 捐助
相关文章

性能测试十问:测试经理篇
web前端性能优化进阶路
性能测试综述
VS2010中自动化测试—Web性能测试
相关文档

性能测试
性能测试执行之测试脚本录制
性能测试进阶1-流程篇
性能测试进阶2-方案篇
相关课程

性能测试方法与技术
使用LoadRunner进行性能测试
Android应用的性能测试
基于Android的单元、性能测试
每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号