参数化于 QTP/UFT 与例子

⚡ 智能摘要

参数化于 QTP/UFT 将硬编码值替换为可变输入,以便单个测试脚本可以针对多种数据组合、环境设置和调用操作运行,而无需重写任何步骤。

  • 🎯 定义: 参数化用一个固定值替换一个可变的输入值,因此 QTP/UFT 可以在多种测试条件下重复使用同一个脚本。
  • 📊 数据表: 在全局工作表中输入每个操作的存储代理名称、密码或其他输入,或者仅在操作工作表中输入一个操作的存储代理名称、密码或其他输入。
  • 🌐 环境变量: 在测试的每个操作中共享内置、用户定义的内部或用户定义的外部 XML 值。
  • 🔗 测试/操作参数: 将输入值传递给被调用的动作,并将输出值返回给调用动作。
  • 🎲 随机数: 为每次迭代、操作或整个运行生成指定范围内的唯一数值。
  • ▶️ 执行机制: 运行脚本一次,然后…… QTP/UFT 自动遍历每一行数据,并逐行报告每次通过或失败的情况。
  • ⚙️ 优化: 将数据驱动程序与参数化字段结合使用,即可在一个窗口中找到所有符合参数化条件的常量。

什么是 QTP 参数化?

QTP/UFT 参数化 它允许你在运行时选择不同的测试输入,而不是将单个值硬编码到脚本中。这种使用外部参数值(而不是单个固定值)来驱动测试的过程称为参数化。

如果没有参数化,用三种不同的代理用户名和密码组合测试同一个登录界面,就意味着需要录制或维护三个几乎完全相同的脚本。参数化只需编写一个脚本,每次运行都为其提供一行新数据,这就是数据驱动测试依赖于参数化的原因。

参数化的类型 QTP

UFT (以前 QTP支持四种参数类型,每种类型都适用于不同类型的变量数据:

  1. 数据表参数
  2. 测试/操作参数
  3. 环境变量参数
  4. 随机数参数

下表比较了每种类型最适合的用途,之后我们将通过一个实际例子进行说明。

参数类型 价值源自何处 典型用例
数据表 测试附带的全局或操作(本地)电子表格 使用多行测试数据重复相同的步骤
环境变量 内置值、测试内部设置的值或外部 XML 文件 共享一个常量值,例如 URL贯穿所有行动
测试/操作 操作之间传递的输入或输出值 将一个操作中产生的值传递给另一个操作
随机数 在指定范围内自动生成的数字 每次运行都创建一个唯一值,例如订单 ID

本教程的其余部分将完整地介绍数据表参数化,然后通过可运行的 VBScript 示例解释如何配置其他三种类型。

数据表参数化:分步示例

本篇 微焦点 UFT 教程 本文演示了如何使用数据表为航班预订应用程序设置登录测试参数。您可能想知道为什么自动化一个简单的登录过程需要花费这么多精力。一旦该场景验证用户能否成功登录,其价值就显而易见了。 有效的字母数字代理名称和密码组合 数值。测试步骤保持不变,但待测试的数据量增加。本示例将演练限制为 8 种可能组合中的 3 种。

测试场景 测试步骤 测试数据
检查用户在输入有效的字母数字代理名称和密码组合后是否成功登录应用程序 步骤 1)打开航班预订应用程序
步骤 2)输入有效的代理人姓名
步骤 3)输入有效密码
步骤 4)按确定
步骤5)登录成功后关闭应用程序。
代理人姓名 = Guru
密码= Mercury
代理人姓名 = Guru99
密码 = MERCURY
代理名称 = 9999
密码 = mercury

您可以重复执行相同的六个步骤,但使用不同的数据值,就像您手动操作一样,或者您可以使用参数化。

参数化于 QTP

在这个例子中,参数化参数的最简单方法就是 Guru,是:

  1. 点击关键词视图。
  2. 点击参数化图标。

参数化于 QTP

“值配置”对话框打开,当前值设置为常量。单击“参数”单选按钮。 QTP 为参数指定一个默认名称,您可以在单击“确定”之前重命名该名称。默认情况下,新列会添加到“全局数据表”工作表中,因此该值对测试中的每个操作都可用;如果选择“操作(本地)”工作表,则该值仅适用于单个操作。

参数化于 QTP

在“全局”工作表中,有一列标题为“代理名称”,值为 Guru 已创建。您可以为此参数添加更多值行。

参数化于 QTP

切换到 专家观点 显示“代理名称”已被参数引用“Guru以及所用纸张的类型。

参数化于 QTP

您可以使用相同的方式对密码参数进行参数化,并输入不同的测试数据。

参数化于 QTP

此数据表表示 QTP 将重复同样的六个 记录 执行三次迭代。第一次迭代使用第一行数据,第二次迭代使用第二行数据,依此类推。状态栏会显示当前正在使用的行,并在数据表中高亮显示相应的行。结果会汇总所有三次迭代的结果。

参数化于 QTP

环境变量参数 UFT

环境变量参数提供一个在每次运行迭代中保持不变的值,这使得它们非常适合用于配置数据,例如基本配置。 URL 或者环境名称,每个操作都需要它。 UFT 识别三种环境变量:

  • 内建: 预定义值,例如测试名称、操作名称或操作系统版本, UFT 自动填充。
  • 用户自定义内部: 在测试中使用脚本设置的值;它们仅存在于当前运行中,不会随测试一起保存。
  • 用户自定义外部: 名称-值对存储在外部 XML 文件中,需要在运行开始前加载该文件。

要在步骤中使用环境变量,请打开单元格的“值配置”对话框,选择“环境”作为参数类型,然后选择变量名称。以下 VBScript 代码展示了在单个操作中使用所有三种变量类型:

' Read a Built-in environment variable
MsgBox Environment.Value("OS")

' Set and read a User-Defined Internal environment variable
Environment.Value("AppURL") = "https://demo.guru99.com/V4/"
MsgBox Environment.Value("AppURL")

' Load a User-Defined External XML file, then read a value from it
Environment.LoadFromFile "C:\Guru99\EnvConfig.xml"
MsgBox Environment.Value("Address")

要构建上面提到的外部文件,请创建一个以根目录开头的 XML 文档。 <Environment> 元素和一 <Variable> 每个名称-值对对应一个元素,然后从“文件”>“设置”>“环境”加载它。 UFT 在运行测试之前,请注意:外部变量加载后为只读,因此每当需要更改值时,都必须更新源 XML 文件。

环境变量与测试/操作参数的作用域不同:环境变量可供测试中的每个操作使用,而测试/操作参数则是在两个特定操作之间显式传递的,接下来我们将介绍这种类型。

测试和操作参数 UFT

测试/操作参数允许一个操作将值作为输入参数传递给另一个操作,并允许被调用的操作将值作为输出参数返回。与整个测试都可见的环境变量不同,测试/操作参数仅存在于定义它的特定调用中,这使得操作可以在不同的测试中重用。

要创建参数,请在测试流程中右键单击该操作,选择“操作属性”,然后在“输入参数”或“输出参数”选项卡下添加一个参数,并指定参数名称和数据类型。之后,该操作就可以在其步骤中直接引用该参数。例如,当另一个操作调用此操作时,例如使用以下代码: RunAction "VerifyLogin", oneIteration, "Guru99", "Mercury"调用中提供的值将填充该次运行的输入参数。

由于这些值随调用一起传递,而不是存储在数据表中,因此测试/操作参数非常适合用于可重用操作。 行动 根据调用它们的测试不同,需要不同的输入,例如多个测试流程使用的共享登录操作。

随机数参数 UFT

随机数参数会在您定义的范围内自动生成数值,这在测试需要每次运行都必须唯一的数值时非常有用,例如新的客户 ID、订单号或应用程序不会接受两次的预订参考号。

要配置一个随机数,请打开单元格的“值配置”对话框,然后选择“随机数”作为参数类型。 UFT 要求输入数值范围、参数的可选名称以及生成新值的频率:

  • 对于每个动作迭代 – 每次操作运行时都会生成一个新的数字。
  • 对于每次测试迭代 – 每次测试迭代生成一个新数字。
  • 每次测试运行一次 – 在整个运行过程中保持相同的数值。

随机数参数与数据表和环境变量参数一样具有运行时灵活性,但随着数据驱动迭代数量的增长,它们消除了手动编写独特测试数据的需要。

参数化的优点

从第一个脚本到完整的回归测试套件,参数化在整个自动化生命周期中都能发挥作用:

  • 它允许你在运行时选择不同的值,而无需为每种数据组合编辑脚本。
  • 它减少了涵盖多种测试数据组合所需的时间和精力。
  • 数据驱动程序,一个 UFT 该功能在一个窗口中列出脚本中所有可参数化的常量,从而简化大型脚本的参数化。
  • 它将测试数据保存在脚本之外,因此测试人员可以添加新行、环境值或随机范围,而无需触及自动化逻辑。

点击 开始 如果视频无法访问

常见问题

全局工作表保存测试中每个操作共享的一组值,而操作(本地)工作表保存单个操作私有的值,并且仅在该操作重复时使用。

是的。一个测试可以在同一个脚本中使用数据表值作为某个字段的值,使用环境变量作为共享设置,并使用测试/操作参数在操作之间传递数据。

是的。从外部 XML 文件加载的值在脚本运行期间无法从脚本内部更改;要更改值,请更新源 XML 文件并重新加载它。

是的。生成式人工智能工具可以为数据表生成真实或极端情况的数据集,但测试人员在运行测试之前仍然应该审查和验证每个值。

现代 UFT 其中一个版本包含 AI 驱动的对象识别和自愈测试,但选择要参数化的字段仍然是通过“值配置”对话框手动执行的步骤。

总结一下这篇文章: