QTP/UFT 中的数据、关键字和混合自动化框架
数据驱动框架
数据驱动框架是一种由输入和输出数据的不同组合驱动的框架。
传递不同数据组合的一种方法是参数化。在此方法中,我们使用 QTP 的不同功能。要了解有关参数化的更多信息,请访问此处。
然而,在 DDF 中,脚本被编写用于参数化。当 AUT 的功能必须使用多个输入进行测试并捕获相应的输出时,这种框架非常有用。这些输入可以从外部文件(如数据库、Excel、Outlook、文本文件等)读取,相应的输出则写回到相应的外部源。
数据驱动框架中涉及的一般步骤是:
- 为被测应用程序准备测试用例。
- 将 AUT 中的对象添加到 OR。
- 根据测试用例编写脚本。
在此UFT 教程中,我们将使用 Excel 作为测试数据的外部源,为示例测试用例开发数据驱动框架设计。
步骤1) 为被测应用程序准备测试用例
测试用例:打开订单号并获取该订单的客户名称。对不同的订单号重复相同的过程。
外部来源:Excel 文件
此示例的外部源是 Excel 文件。必须在 Micro Focus UFT 中编写 VB 脚本以打开 Excel 文件以读取测试数据。这可以通过分层方式实现。
1. 首先将 Excel 文件作为应用程序打开。
2. 然后必须从指定位置打开工作簿。
3. 包含测试数据的表格。
4. 最后,必须读取单元格。
步骤2) 将 AUT 中的对象添加到 OR
一旦测试用例准备好,就开始将所有必需的对象添加到存储库中。在我们的测试用例中,需要添加的对象如下:
- 航班预订应用程序中的“打开文件夹”图标
- 单击“打开文件夹”图标时可以获取的“订单号”复选框
- 订单号的 WinEdit 框(输入数字的位置)
- “确定”按钮
- “姓名”字段,这是一个 WinEdit 框。单击特定订单号的“确定”按钮后,此字段将填充姓名。
添加所有必需对象后,对象存储库将显示如下:
步骤3) 根据测试用例编写脚本
在运行脚本之前,请确保包含测试数据的 Excel 文件已保存并关闭。
以下脚本用于从 Excel 读取订单号并通过变量“vOrder”将其分配到应用程序中,并通过变量“vName”从应用程序写入客户名称。
Excel 名称:FlightDDF.xlsx
工作表名称:Sheet1
输出
运行上述脚本后,可以从 Excel 中获取如下输出:
数据驱动框架也可以通过编写描述性编程来开发。
使用数据库作为 DDF 的外部源
如果外部源是数据库,可以使用以下步骤执行相同的测试用例:
- 编写 VBScript 以建立数据库连接。
- VBScript 用于打开记录集或表格。
- VBScript 用于打开所需字段。
- 从字段中读取特定单元格。
脚本
To Establish a Microsoft Database connection
驱动程序 = {Microsoft Access Driver (*.mdb)}; DBQ = <数据库路径>
记录集名称:OpenOrder
字段名称:OrderNo, CustomerName
P.S.:Microsoft Access 2010 无法使用以下脚本连接。
输出
DDF 的优势
- 一个测试中可以读写大量测试数据到外部文件。
- 循环语句用于重复相同的步骤多次迭代。因此,减少了编码工作。
- 由于数据直接读写到外部文件,因此无需复制、粘贴或导出数据即可使用它们。
- 可以从外部文件读取测试数据,并将输出写入任何其他外部文件。
DDF 的缺点
- 开发此框架需要脚本编写知识。
- 有时,来自外部源(如数据库)的数据数量或组合可能会导致 QTP 变慢甚至崩溃。
关键字驱动框架
关键字驱动框架是一种由关键字驱动测试的框架。这里的关键字指的是用户定义的函数。在此框架中,创建关键字是为了执行特定的测试步骤或测试用例。然后将这些关键字调用到驱动程序测试中,以在同一测试中运行多个测试用例。
要了解 QTP 中的用户定义函数,请访问此处。
通常,框架可以通过三种方式开发以运行测试。
- 记录并运行测试。
- 将对象添加到本地存储库并编写所有测试步骤的脚本。
- 为所有测试步骤编写描述性编程。
在本教程中,KDF 是通过记录和运行测试来开发的。
我们的目标是为五个不同的测试用例运行一个测试,例如登录应用程序、插入订单、打开订单、删除订单和关闭应用程序。因此,我们将记录这些测试用例的测试步骤,并分别创建关键字为 Login、InsertOrder、OpenOrder、DeleteOrder 和 CloseApp 的函数。
测试用例 1:登录应用程序
关键字:Login ()
录制脚本
测试用例 2:插入订单
关键字:InsertOrder()
录制脚本
测试用例 3:打开订单
关键字:OpenOrder()
录制脚本
测试用例 4:删除订单
关键字:DeleteOrder()
录制脚本
测试用例 5:关闭应用程序
关键字:CloseApp()
录制脚本
为不同测试用例创建的函数保存在函数库中,并与主测试相关联。只需在主测试中调用所需测试用例的关键字,从而减小主测试中驱动脚本的大小。
这个简单框架的驱动脚本如下:
通过运行上述脚本,可以从单个测试中获取所有五个测试用例的实际结果。
优点
- 只需调用相应的关键字,即可在一个测试中运行任意数量的测试用例。
- 为所有 Web/Windows 对象编写通用的描述性编程,并将其作为关键字调用,将有助于在同一个测试中运行不同的动态应用程序。
- 减少驱动脚本的大小
缺点
- 如果需要运行的测试用例数量很少,则开发这些框架所需的时间非常长。
- 当为同一个测试中的许多应用程序设计 KDF 时,并不总是使用记录步骤。
混合框架
混合框架是数据驱动框架(DDF)和关键字驱动框架(KDF)的组合,可以在同一个测试中执行多个测试用例和多个输入。
在本文中,KDF 中使用的相同测试用例将在一个测试中执行。所有测试用例的关键字和脚本与 KDF 中的相同。但是,TC3:打开订单已参数化。因此,此测试用例的脚本用于从 Excel 文件接收订单号,并将客户姓名写入 Excel 文件。
测试用例 1:登录应用程序
关键字:Login ()
测试用例 2:插入订单
关键字:InsertOrder()
测试用例 3:打开多个订单号的订单
关键字:OpenOrder()
描述:此处使用与开发 DDF 相同的脚本,从而实现了多次迭代的测试用例。
脚本
测试用例 4:删除订单
关键字:DeleteOrder()
测试用例 5:关闭应用程序
关键字:CloseApp()
通过遵循这种简单的方法,实现了 TC3 的参数化。如果适用,所有其他测试用例也可以在同一个测试中参数化。
例如,这是一种设计混合框架的非常简单的方法。同样的框架也可以通过描述性编程来实现。
优点
- 与其它框架相比,使用混合框架设计的测试运行时间相对较短。
- 当我们需要在同一个测试套件中包含所有测试用例以及与特定测试用例相关的输入时,可以使用此方法。
缺点
- 需要清晰地了解如何组合不同的框架。