《软件功能测试自动化实战教程》—第6章6.3节参数化测试

简介: 在UFT中可以通过把测试脚本中固定的值替换成参数的方式来扩展测试脚本,这个过程也叫参数化测试,能有效地提高测试的灵活性。

本节书摘来自异步社区《软件功能测试自动化实战教程》一书中的第6章6.3节参数化测试,作者51Testing网 , 周焕来 , 贾海涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。

6.3 参数化测试
软件功能测试自动化实战教程
在UFT中可以通过把测试脚本中固定的值替换成参数的方式来扩展测试脚本,这个过程也叫参数化测试,能有效地提高测试的灵活性。

6.3.1 通过参数化测试来提高测试的灵活性
可以通过参数化的方式,从外部数据源或数据产生器读取测试数据,从而扩大测试的覆盖面,提高测试的灵活性。

在UFT中,可以使用多种方式来对测试脚本进行参数化,数据表参数化(Data Table Parameters)是其中一种重要的方式,还有环境变量参数化(Environment Variable Parameters)、随机数参数化(Random Number Parameters)等。

下面以自带的“Flight”程序为例,介绍如何对测试脚本进行参数化。假设在名为“航班预订”的订票界面中,输入航班信息后,插入订票记录,然后希望重新打开该记录,检查航班信息中的终点的设置是否正确,录制的测试脚本如图6-2所示。


bd93af8a1b3ae8cb4735346361afb63929ac0b96

提示:
对于这样一个测试脚本,仅能检查特定的航班订票记录的正确性,如果希望测试脚本对多个航班订票记录的正确性都能检查,则需要进行必要的参数化。
6.3.2 参数化测试步骤
首先,把测试步骤中的输入数据进行参数化,例如航班日期、航班始点和终点等信息。下面,以“输入终点”的测试步骤的参数化过程为例,介绍如何在关键字视图中对测试脚本进行参数化。

(1)选择“终点:”所在的测试步骤行,单击“值”列所在的单元格,如图6-3所示。


e2cdba13e5fda13494b75fc3f35cbd22c7305718

(2)单击单元格旁边的“< # >”按钮,或按快捷键“Ctrl+F,则出现如图6-4所示的界面。

37f4331cbb7b2b972f05ff41a757e356a4f00568

提示:
在这个界面中,选择“参数”,在旁边的下拉框中选择“Data Table”,在“名称”中输入参数名,也可接受默认名,在“数据表中的位置”中可以选择“全局表”,也可以选择“当前操作表(本地)(U)”,它们的区别是参数存储的位置不同。
(3)单击“确定”按钮,在关键字视图中可看到,“值”值已经被参数化,替换成了如图6-5所示。

3767f8aad4250f2c74ce38fbbca04110a1a24d32

(4)这时,选择菜单“视图→数据”,则可看到如图6-6所示的界面。

dfcde3f9ebc91a451ec1495f157e2ef2c8779f37

可看到,在“p_Item”列中有一个默认数据“Frankfurt”,这是参数化之前录制的脚本中的常量,可以在“p_Item”列中继续添加更多的测试数据。

提示:
可以双击修改“p_Item”列名,让其可读性更强,例如,改成“FlyTo”。
(5)把其他几个数据也参数化,如图6-7所示。


c56a7efa919f7302017be4ddea5774603dd6f0f5

运行时,就会从如图6-8所示的数据表格中提取数据来对测试过程中的各项输入进行参数化。

258d2bac9f9795a60facc26248d60e5ca204a4c2

6.3.3 使用随机数来进行参数化
对于选择航班这个测试步骤的参数化来说会有所不同,因为航班会跟随所选择的起点和终点而变化,因此,需要做特殊的处理。如下列代码所示。

2d6c9f32372c3292f05c5db2aa175cf5dafdb1b3

先通过访问Get ItemsCount属性,获取航班列表的行数,然后使用RandomNumber随机选取其中一项。最后再通过Select方法选择航班。参数化后的测试步骤如图6-9所示。

d1f558d5e2e00d8d255a1a6978ca6a608d2b3fb0

提示:
使用随机数也是测试脚本参数化的一种重要方法,在测试代码中,可用RandomNumber来实现,在关键字视图编辑的界面如图6-10所示,其效果与在脚本中直接编辑是一样的。

495569369120de129038500ac6b32474b48c39b4

6.3.4 参数化检查点
测试脚本的最后一个测试步骤是检查订票记录中的航班终点是否正确,同样需要进行适当的参数化,具体方法如下。

(1)单击检查点所在测试步骤的“值”列中的单元格,如图6-11所示。


360bc9b09c046dcca68b04caf068e3744802cf1f

(2)单击旁边的按钮,则出现如图6-12所示的界面。

6f32847be3e4c7d97d7b7bddd78167530d311f02

(3)在“配置值”中选择“参数”后,可单击“确定”按钮接收默认的设置,也可单击旁边的编辑按钮,在如图6-13所示的界面中,进行参数化的详细设置。

ce7035781dc5dad3565eaa9fbcf5b31fb17c1cd2

在“参数”中,选择“Data Table”;可在“名称”修改参数名,或接受默认的命名,产生如图6-14所示的数据列,也可以选择“FlyTo”,因为检查点所指的航班终点得到的预期值应该与测试步骤中选择航班终点时的输入数据一致,否则认为错误。

99f9a27c8ac3edb466825cf8b8869eadc97cb74c

6.3.5 设置数据表格迭代方式
把测试步骤和检查点的参数化工作都完成后,可得到如图6-15所示的测试步骤。

5bb7eba1abf498fe0f5ada03e5037a618a4b9ff6

运行这个测试脚本之前,还要做一些必要的设置,选择菜单“文件→设置”,出现如图6-16所示的测试设置界面,切换到“运行”页,在“数据表迭代”中,可设置数据表格的迭代方式。

d8656c692e613d71c59b8bb83116ae00297e237a

运行,得到测试结果。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
5天前
|
设计模式 测试技术 持续交付
深入白盒测试:提升软件质量与性能的关键策略
【4月更文挑战第20天】 在软件开发的复杂世界中,确保产品的质量和性能始终是至关重要的任务。白盒测试,作为软件测试领域的重要分支,提供了对程序内部结构和逻辑的深入分析手段。本文将探讨如何通过有效的白盒测试策略来优化软件性能,减少缺陷,并最终提高用户满意度。通过剖析代码检查、单元测试、集成测试等白盒测试技术,我们将了解这些方法如何揭示潜在的问题点,并为改进提供方向。
|
1天前
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
23 2
|
2天前
|
测试技术 API 网络架构
Python的api自动化测试 编写测试用例
【4月更文挑战第18天】使用Python进行API自动化测试,可以结合`requests`库发送HTTP请求和`unittest`(或`pytest`)编写测试用例。以下示例: 1. 安装必要库:`pip install requests unittest` 2. 创建`test_api.py`,导入库,定义基础URL。 3. 创建继承自`unittest.TestCase`的测试类,包含`setUp`和`tearDown`方法。 4. 编写测试用例,如`test_get_users`,检查响应状态码和内容。 5. 运行测试:`python -m unittest test_api.py`
10 2
|
2天前
|
算法 测试技术 持续交付
深入白盒测试:提升软件质量与效率的关键策略
【4月更文挑战第23天】 在软件开发的复杂多变的环境中,确保产品的质量和可靠性是至关重要的。白盒测试作为一种重要的软件测试方法,允许测试者通过检查内部结构、设计和编码来验证软件的功能性和正确性。本文将探讨白盒测试的关键概念、技术及其在提升软件测试效率和质量中的应用。我们将重点讨论如何借助白盒测试发现潜在缺陷、优化测试用例设计,并通过具体案例分析展示其在实际中的应用效果。
|
3天前
|
测试技术
深入白盒测试:提升软件结构透视能力
【4月更文挑战第23天】在软件测试的广阔天地中,白盒测试以其独特的内在逻辑和代码透视能力而显得尤为重要。它不仅仅是一个测试方法,更是一种确保软件质量和可靠性的重要手段。本文将深入探讨白盒测试的概念、方法和最佳实践,旨在为软件开发和测试人员提供一种系统的视角,以帮助他们更好地理解并应用白盒测试技术,进而提高软件产品的质量。
5 0
|
4天前
|
算法 Java 测试技术
深入解析白盒测试:提升软件质量与效率的关键
【4月更文挑战第22天】 在软件开发的复杂多变的世界中,保证代码质量和功能的正确性是至关重要的。白盒测试作为一种重要的软件测试方法,提供了一种透视软件内部逻辑结构的途径。本文将详细探讨白盒测试的概念、技术手段和实际应用,旨在帮助读者理解如何通过这种测试提高软件系统的稳定性和性能。文章还将讨论白盒测试中面临的挑战以及应对策略,以期为软件质量保证提供实用的指导。
12 2
|
6天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(二十五)-java+ selenium自动化测试-FluentWait(详细教程)
【4月更文挑战第17天】其实今天介绍也讲解的也是一种等待的方法,有些童鞋或者小伙伴们会问宏哥,这也是一种等待方法,为什么不在上一篇文章中竹筒倒豆子一股脑的全部说完,反而又在这里单独写了一篇。那是因为这个比较重要,所以宏哥专门为她量身定制了一篇。FluentWait是Selenium中功能强大的一种等待方式,翻译成中文是流畅等待的意思。在介绍FluentWait之前,我们来讨论下为什么需要设置等待,我们前面介绍了隐式等待和显式等待。
29 3
|
9天前
|
Java 测试技术 定位技术
《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
【4月更文挑战第15天】本文介绍了如何使用Selenium进行浏览器窗口切换以操作不同页面元素。首先,获取浏览器窗口句柄有两种方法:获取所有窗口句柄的集合和获取当前窗口句柄。然后,通过`switchTo().window()`方法切换到目标窗口句柄。在项目实战部分,给出了一个示例,展示了在百度首页、新闻页面和地图页面之间切换并输入文字的操作。最后,文章还探讨了在某些情况下可能出现的问题,并提供了一个简单的本地HTML页面示例来演示窗口切换的正确操作。
37 0
|
12天前
|
前端开发 JavaScript Java
《手把手教你》系列技巧篇(十九)-java+ selenium自动化测试-元素定位大法之By css下卷(详细教程)
【4月更文挑战第11天】按计划今天宏哥继续讲解css的定位元素的方法。但是今天最后一种宏哥介绍给大家,了解就可以了,因为实际中很少用。
35 2
|
12天前
|
Web App开发 测试技术 网络安全