QTP/UFT中的数据、关键字和混合自动化框架

在本教程中,我们将使用QTP(HP UFT)创建

  • 数据驱动框架
  • 关键字驱动框架
  • 混合框架

数据驱动框架

数据驱动框架是由输入和输出数据的不同组合驱动的框架。传递不同数据组合的一种方式是参数化。但是,在DDF中,编写脚本是为了进行参数化。当必须使用AUT的功能时,这种框架非常有用。可以从外部文件(如数据库、Excel、Outlook、文本文件等)读取这些输入,并将相应的输出写回相应的外部源。

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

数据驱动框架中涉及的一般步骤包括:

  1. 为被测应用程序准备测试用例
  2. 将对象从AUT添加到OR
  3. 根据测试用例编写脚本

在本教程中,我们将使用Excel作为测试数据的外部来源,为示例测试用例开发数据驱动的框架设计。

步骤1) 为被测应用准备测试用例

测试用例:打开订单号并获取该订单的客户名称。对不同的订单号重复相同的过程

外部来源:Excel文件

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

此示例的外部源是Excel文件。Micro Focus UFT中的VB脚本必须编写,这可以以分层的方式实现。

  1. Excel文件首先在AS应用程序中打开

  2. 则必须从指定位置打开工作簿

  3. 测试数据所在的工作表。

  4. 最后,读取单元格。

步骤2) 将AUT中的对象添加到OR中

一旦测试用例准备就绪,就开始将所有需要的对象添加到存储库。在我们的测试用例中,需要添加的对象如下

  • 航类预订应用程序中的“打开文件夹”图标
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP
  • 单击“打开文件夹”图标时可获得的“订单号”复选框
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP
  • 订单编号的WinEdit框(输入数字的位置)
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP
  • “确定”按钮
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP
  • “Name”字段,它是一个WinEdit框。点击特定订单号的OK按钮后,此字段将填入名称。
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

添加所有必需的对象后,对象存储库将如下所示:

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

步骤3) 根据测试用例编写脚本

在运行脚本之前,确保包含测试数据的Excel文件已保存并关闭。 下面的脚本是从Excel中读取订单号,并通过变量“vorder”将其分配到应用程序中,并通过变量“vName”从应用程序中写入客户名称。

Excel名称:FlightDDF.xlsx

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

输出

运行上述脚本后,可以按如下方式从Excel获得输出:

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

数据驱动框架也可以通过编写描述性编程来开发。

将数据库用作DDF的外部源

如果外部源是数据库,则可以使用以下步骤执行相同的测试用例

  1. 编写VBScript建立数据库连接
  2. 用于打开记录集或表的VBScript。
  3. 用于打开所需字段的VBScript
  4. 从场中读取该特定单元。
Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

脚本

To Establish a Microsoft Database connection

驱动程序={Microsoft Access驱动程序(*.mdb)};DBQ=<数据库路径>

记录集名称:OpenOrder

字段名称:订单号、客户名称

备注:无法使用以下脚本连接Microsoft Access 2010。

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

输出

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

DDF的优势

  • 可以在一次测试中读取大量测试数据并将其写入外部文件
  • LOOP语句用于在多次迭代中重复相同的步骤。因此减少了编码工作量
  • 由于数据是直接读取和写入外部文件的,因此不需要复制、粘贴或导出数据即可使用它们
  • 可以从外部文件读取测试数据,并且可以将输出写入任何其他外部文件

DDF的缺点

  • 开发此框架需要脚本知识
  • 有时,来自外部源(如数据库)的多个或多个数据组合可能会减慢QTP速度,甚至使QTP崩溃

关键字驱动框架

关键字驱动框架是一个关键字驱动测试的框架。然后,这些关键字被调用到驱动程序测试中,以便在同一测试中运行几个测试用例。

要了解QTP中的用户定义函数,访问此处

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

通常,可以通过三种方式开发框架以运行测试。

  1. 记录并运行测试
  2. 将对象添加到本地存储库,并为所有测试步骤编写脚本
  3. 为所有测试步骤编写描述性编程

在本教程中,通过记录和运行测试来开发KDF。

我们的目标是对五个不同的测试用例运行一个测试,例如登录应用程序、插入订单、打开订单、删除订单和关闭应用程序。因此,我们将记录这些测试用例的测试步骤,并分别使用关键字Login、InsertOrder、OpenOrder、DeleteOrder和CloseApp创建函数。

测试案例1:登录到应用程序

关键词:login()

录制的脚本

测试案例2:插入订单

关键词: InsertOrder()

录制的脚本

测试案例3:打开订单

关键词: OpenOrder()

录制的脚本

测试案例4:删除订单

关键词: DeleteOrder()

录制的脚本

测试案例5:关闭应用程序

关键词: CloseApp()

录制的脚本

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

为不同测试用例创建的函数保存在函数库中,并与主测试相关联。在主测试中调用所需测试用例的关键字就足够了,从而减少了主测试中驱动程序脚本的大小。

此简单框架的驱动程序脚本如下所示:

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

通过运行上面的脚本,可以从一次测试中获得所有五个测试用例的实际结果。

优势

  • 只需调用它们各自的关键字,就可以在一个测试上运行任意数量的测试用例
  • 为所有Web/Windows对象编写通用描述性编程并将它们作为关键字调用将有助于为不同的动态应用程序运行相同的测试
  • 减小驱动程序脚本的大小

劣势

  • 如果要运行的测试用例数量非常少,则开发这些框架所需的时间非常长
  • 为同一测试中的多个应用程序设计KDF时,并不总是使用录制。

混合框架

混合框架是数据驱动框架(DDF)和关键字驱动框架(KDF)的组合,其中具有多个输入的多个测试用例可以在同一测试中执行。

在本文中,将在单个测试中执行在KDF中使用的相同测试用例。因此,编写此测试用例的脚本是为了从Excel文件接收订单号,并将客户名称写入Excel文件

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

测试案例1:登录到应用程序

关键词:login()

测试案例2:插入订单

关键词: InsertOrder()

测试案例3:打开多个订单号的订单

关键词: OpenOrder()

描述:这里使用了用于开发DDF的相同脚本,从而实现了几次迭代的测试用例。

脚本:

Creating Automation Frameworks with QTP
Creating Automation Frameworks with QTP

测试案例4:删除订单

关键词: DeleteOrder()

测试案例5:关闭应用程序

关键词: CloseApp()

通过这种简单的方法,实现了TC3的参数化。如果适用,所有其他测试用例也可以在同一测试中参数化。

例如,是设计混合框架的一种非常简单的方法。同样的框架也可以通过描述性编程来实现。

优势

  • 与其他框架相比,使用混合框架设计的测试所花费的时间相对较少
  • 当需要与同一测试套件中相关联的测试用例进行输入时,可以使用此功能。

劣势

  • 需要对不同框架的组合有清晰的了解。

IT赶路人

专注IT知识分享