自动化测试的数据依赖和独立

简介:

自动化测试刚 开始的时候,基于录制回放,输入的都是页面上你实际输入的数据。如果我希望测试一个合法的登录和一个非法的登录,同样的脚本不一样的数据而已,我不想有两 个脚本,那么就需要对数据进行参数化。最好,数据与脚本分离,以便更加清晰和容易维护。因此,自动化测试中引入了“数据驱动”的概念,即用独立于脚本的测 试数据来驱动脚本的运行。
单个脚本的数据问题可以这样处理,那么多个脚本之间的数据共享和传递呢?比如,一个系统有两个模块:上游模块A,下游模块B,B的输入是A的输出。这里有一个问题:B的数据怎么创建?有人会马上想到数据传递啊,把A模块的输出写到一个公共变量或者数据表中,B模块从这里拿数据开始自己的执行。是的,这是自动化测试工具提供的功能。可是,如果某次运行,模块A有新的缺陷,造不出B预期的输入数据,会导致B的自动化脚本失败。当我们看到失败后,是否费力排查下来才发现A才是B失败的罪魁祸首?而如果A是成功的(A是否失败要看是否有关于这个缺陷的相关验证),则更具有蒙蔽性,很难快速想到问题可能出在A。这里举的例子还相对简单,若系统中模块间的交互更多、更复杂,数据的问题、脚本的问题、程序本身的缺陷就象几个毛线团缠绕在一起,排查问题的根本原因将耗费大量的人力,并让人沮丧。更有甚者,上游一失效,下游所有相关功能测试全部失败,即使他们本来是没有缺陷的。这样的自动化也太脆弱了,简直和天气预报一样经常误报啊!

如 此看来,测试数据的依赖确实给我们添了不少乱子。那我们是否可以这样做?即使本来两个功能之间有数据的传递,也为每个单独的功能预埋其输入数据(而非依赖 上游在执行过程中产生这样的数据)。这样当一个功能失效后我们能够迅速定位到它。当然,这样做的一个风险就是可能隐藏某模块不能正确产生其它模块希望的正确输出,而这种问题对于用户的端到端的操作是严重的问题。

因此,我建议在多个脚本的测试数据上综合使用以上两种方法。“数据独立”适用于测试不稳定的功能(如新功能),或者容易出错的功能(如老功能中复杂的逻辑),方便查找原因。“数据依赖”适用于测试稳定的功能/接 口或者基本业务流程,有了它的保障,我们对端到端的正确性更有信心。当“数据独立”和“数据依赖”在一次运行中都有时,如果“数据独立”的脚本失败,我们 从“数据独立”的单个脚本开始排查问题;如果“数据依赖”的脚本失败,同时“数据独立”的脚本也在相关处失败,则从“数据独立”的单个脚本开始排查问题, 否则从“数据依赖”的脚本处排查问题。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
1月前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
2月前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
22 1
|
2月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
36 1
|
3月前
|
数据采集 数据可视化 数据处理
【办公自动化】在Excel中按条件筛选数据并存入新的表2.0
【办公自动化】在Excel中按条件筛选数据并存入新的表2.0
53 1
|
3月前
|
计算机视觉
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
53 0
|
2月前
|
JSON 监控 数据管理
【Elasticsearch专栏 12】深入探索:Elasticsearch使用索引生命周期管理(ILM)自动化删除旧数据
Elasticsearch的ILM功能允许用户定义策略,自动管理索引从创建到删除的生命周期。用户可以设置策略,根据索引年龄或大小自动删除旧数据,节省存储空间。通过应用ILM策略于索引模板,新索引将遵循预定义的生命周期。用户还可以监控ILM状态,确保策略按预期执行。使用ILM,用户可以高效地管理数据,确保旧数据及时删除,同时保持数据完整性和安全性。
|
3月前
|
存储 自然语言处理 数据可视化
【办公自动化】用Python按时间分割txt文件中的数据
【办公自动化】用Python按时间分割txt文件中的数据
59 1
|
1天前
|
传感器 数据采集 算法
LabVIEW无人机大气数据智能测试系统
LabVIEW无人机大气数据智能测试系统
10 3
|
6天前
|
JSON 测试技术 数据格式
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?
13 0
|
15天前
|
人工智能 测试技术
测试数据不再难,人工智能批量生成给你用!
本文介绍了如何利用ChatGPT生成测试数据。测试数据是验证功能和触发异常场景的关键,设计时需全面考虑等价类、边界值和正交法。实践中,先明确数据类型、格式和需求,然后向ChatGPT提供相关信息。例如,对于只能输入中国手机号的输入框,初始提示可能只包含正常手机号,但应进一步补充异常场景,如非数字、长度错误、非中国号码、特殊字符、空输入等。此外,可通过指定yaml格式来满足代码使用需求。总结来说,生成测试数据需清晰定义需求,拆分任务,并系统测试各种变化。
21 2

热门文章

最新文章