5

自动化测试如何管理测试数据 - 测试蔡坨坨

 1 year ago
source link: https://www.cnblogs.com/caituotuo/p/17209966.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

转载请注明出处❤️

作者:测试蔡坨坨

原文链接:caituotuo.top/67fb1f11.html


你好,我是测试蔡坨坨。

在之前的自动化测试框架相关文章中,无论是接口自动化还是UI自动化,都谈及data模块和config模块,也就是测试数据和配置文件。

PS:自动化测试框架可参考往期文章「五分钟搞懂 POM 设计模式」「五分钟学会接口自动化测试框架

随着自动化用例的不断增加,需要维护的测试数据也会越来越多,维护成本越来越高,如何有效管理测试数据也是自动化测试实践中一个值得探讨的问题。并且随着技术的发展和工具的不断革新,方法论和实践经验的积累,自动化测试中测试数据的管理方式也在不断迭代和演进。

本篇,就来聊一聊自动化测试过程中数据的管理。

脚本与数据捆绑

在学习自动化测试初期,基本上使用的都是线性脚本,也就是将测试数据与测试脚本捆绑在一起。

这也是每个初学者都会经历的阶段,这样做的好处就是可以快速实现一个demo,更好地帮助初学者从手工测试进阶到自动化测试,例如UI自动化就是模拟人在浏览器上的操作,打开浏览器、定位元素、操作元素、模拟页面动作、断言结果等一系列操作,线性脚本正好与这一系列操作对应,有助于初学者更好地理解,从而得到一个正反馈。

但是,在实际应用中,不推荐这种方式。

因为,刚开始少数的测试用例维护起来可能很容易,但随着时间迁移、产品迭代、测试套件的增长,脚本也会越来越臃肿,可维护性差且工作量大,有悖于自动化测试提高工作效率的本质。

以键值对的方式将一些公用数据写入配置文件中,并使用相关API来读取配置信息,配置文件的格式可以是yaml、json、xml、properties、ini、toml等。

这里的配置文件主要用于管理一些公用的、使用频率较高、数据量级较小的测试数据。

  • 在接口自动化测试中,域名相对来说都是固定的,只是不同接口的请求路径(如:/register、/login)不一样,那么就可以把域名(如:https://caituotuo.top)写入配置文件,测试过程中只需要将实例化的域名与请求路径进行拼接即可(如:https://caituotuo.top/register),从而节省维护成本,一定程度上提高测试效率。
  • 在UI自动化测试中,要测试某个网站各个模块的业务,前提是用户登录,此时这个用来登录的测试账号往往都是固定的,因此就可以将这组用户名和密码写入配置文件中直接引用。比起用专门的文件或数据库来管理这组数据来说,写在配置文件中更加高效方便。
  • 数据库配置信息,包括:host、port、username、password、charset等。

测试框架中的data模块,使用专门的文件来管理测试数据,实现数据与脚本的分离,降低维护成本,提高可移植性,文件格式可以是yaml、json、xml、excel、csv等。

这里的测试文件与上面所说的配置文件略有不同,配置文件主要用于存放整个项目需要用到的配置项,如URL、数据库信息等,而这里的测试文件更多的是与测试用例相对应,适用于相同的操作有不同的输入得到不同或相同的结果。

  • 要测试登录功能,需要用到不同的账号和密码,不同的组合都需要做登录场景的测试,正常的排列组合下可能会产生多个用例,对于这种情况,就可以将多组账号数据存放在测试文件中,再通过参数化的方式循环读取(如:利用TestNG的@DataProvider注解Excel数据源文件实现数据驱动),并执行后续操作。
  • 根据业务场景的不同,数据的量级和使用频率也不一样,基于数据和脚本分离的思想,将测试数据存放在专门的测试文件中。
  • 大量的测试数据,几百上千条测试数据,对于测试数据量级很大的场景也可以将数据写入Excel、CSV等文件中进行存储管理。

不同数据格式文件对比:

文件格式 优点 缺点
Excel 生成数据方便 二进制文件不利于版本管理;一张工作表最多有256列,65536行;只支持单事务,如需多线程读取会有瓶颈
CSV 结构简单,可用Excel编辑,可与Excel进行转换 文件格式方便版本管理,不容易描述复杂的层级结构
YAML 格式完备,可读性好,可以注释 格式简单
XML 格式完备 冗长复杂
JSON 格式完备,可读性良好 不能编写注释,格式死板

综上所述,YAML和JSON对于数据结构的支持和书写程度较好,但是YAML写法更加简洁且可以添加注释,因此最推荐的就是位于C位的YAML文件格式。

PS:关于YAML的用法可参考往期文章「八分钟学会 YAML 数据驱动

数据库管理

为了便于测试数据的统一管理,以及考虑到数据持久化的问题,可以将测试数据存储在数据库中,并使用数据库管理系统(如:MySQL、SqlServer、Oracle等)来管理和维护数据,测试脚本可以使用SQL查询语句来检索数据,进一步降低了脚本和数据的耦合性。

例如:对于一些基础数据,如电商网站的商品信息,此类数据往往基数较大,且本身更新频率较低,可将其存储放到数据库中做持久化。

通过专门的数据池和造数工厂来生产和管理测试数据。所谓造数工厂就是通过调用应用程序的方法来产生数据,这些应用程序一般是专门的测试平台。通过此类造数据平台,可以帮助测试人员有效地管理测试数据,帮助测试人员创建、编辑、删除和查找测试数据。同时,测试人员可以根据测试数据的特定属性,如日期范围、类型等,对测试数据进行分类和组织。

这种方式对测试人员的技能要求较高,需要具备前端、后端、运维等相关知识。

总之,管理测试数据是自动化测试过程中非常重要的一部分。

测试人员应该选择最合适的方式来管理测试数据,并确保测试数据的准确性、可靠性和保密性等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK