测试难题:如何准备测试数据

以下内容是在阅读茹炳晟老师的《软件测试52讲》之后结合自己工作中遇到的问题的一些思考。


前言

刚看了茹炳晟老师的《软件测试52讲》中的测试数据准备的部分。果然,测试数据的准备是连大佬也逃不开的难题。但是,大佬不愧是大佬,18年的大佬就已经在通过平台生成测试数据了,而22年的我还在0.0时代,手动创建测试数据…

这真是一个悲桑的故事…在这里插入图片描述


一、如何准备测试数据?

1.通过手动创建测试数据

这个方法其实在老师的文章里没有提及,但这确确实实又是一种还有很多测试都在用的数据准备方法。我们现在用的也是这种方法,但是在两周一次迭代的情况下,我们已经很清醒的认识到手动创建测试数据的缺点:

  • 耗时长。手动创建测试数据是一个繁琐而漫长的过程,漫长的程度取决于测试的需求在哪一个环节的业务流。比如,我们现在一个需求是,客户下单后,系统会根据订单中参与的角色对其进行返佣。手动创建测试数据的话就需要走完整个下单、签单、生成返佣的流程,才能生成一条测试数据;
  • 效率低。手动创建测试数据,往往是走完了一个流程后才能生成一条可用的数据,如果需求或者测试点有重合的,那这条测试数据可以再重复利用,比如一条待创建订单的数据,我要验证下单时金额的计算,也要验证创建订单时状态的改变,那么数据就可以被重复利用。但更多的情况还是,每一个验证的点都至少需要一条测试数据(算上回归的话需要准备的数据更多);
  • 测试依赖度太高。如果创建测试数据要走的流程中,有因为bug或者其他原因阻塞的,就无能为力了;

2.通过GUI自动化生成测试数据

GUI自动化,比如:selenium,是通过程序控制鼠标和键盘进行输入,模拟手工测试的一种测试方法。
大概的思路就是:①定位元素;②创建一个动作;③将定位到的元素放在这个动作中;④执行动作;
这种方法的缺点:

  • 不稳定。由于元素定位的不稳定,可能有时候定位不到元素或者UI发生变化后,代码也要跟着变动。创建测试数据的成功率不高;
  • 不适合封装成测试数据工具。“由于测试数据的创建是通过 GUI 操作实现的,所以把这种数据创建方法封装成测试数据准备工具的过程,其实就是在开发 GUI 自动化测试用例。”
  • 测试依赖度太高。因为GUI也是在模拟手动操作,所以也与手动创建测试数据具有同样的问题;

3.通过接口创建测试数据

无论是手动创建测试数据还是GUI自动化创建测试数据,本质上都是在调用后端接口。比如我要创建一个订单,页面上需要先登录、加购、再创建订单,但实际就是前端调用创建订单的接口,传入用户cookie、商品id、商品数量等参数,后端接口再把这些数据存到各个表中。所以也可以直接通过调用接口创建测试数据,不过这个方法的前提是,对被测系统的业务流程、接口文档已经比较熟悉。

这种方法的优点:

  • 效率高。因为跳过了GUI,直接调用接口,因此执行起来的效率是比较高的;
  • 相对稳定。因为接口定义好后,一般不会轻易去做改变,即使其中的逻辑有变化,开发修改好后,接口也是照样不变的;
  • 更方便封装成函数;

这种方法也同样具有缺点:

  • 传参复杂。某些接口需要传的参数很多,参数数据准备起来也比较麻烦;
  • 接口调用顺序。一些业务流程上的测试数据,需要调用一系列接口才能创建,接口之间的数据流转,先调用哪个接口,后调用哪个接口也是一个问题;
  • 接口关联。调用多个接口后,接口之间有数据依赖的需要做关联,比如上一个接口的返回要作为下一个接口的入参;
  • 有些测试数据没有api支持,只能通过数据库的crud操作创建;
  • 无法高效率的完成海量数据的创建;

4.通过数据库创建测试数据

上面说到调用接口后,最终是把数据存到每张相关的表里,所以也可以直接在对应表中插入数据来创建。这种方法的前提条件是,对被测系统的表结构、每个业务对应的主表附表比较熟悉。

这种方法的优点:

  • 效率高。直接通过写sql语句在对应表中插入数据,并封装成函数。可以在短时间内生成大量数据。

这种方法的缺点:

  • 维护成本高。当sql语句发生变化时,需要维护和更新已经封装好的函数;
  • 容易出现数据不完整的情况。前端的一个操作往往需要在多张表中插入数据,在创建数据的时候可能会出现只在主表中插入数据,而附表数据遗漏的情况。

5.综合接口+数据库创建测试数据

这种方法是通过调用接口创建基本数据,再通过数据库修改数据以满足测试的前置条件。
比如,要测试一个商品在未配置的地区不可销售的场景。

  • 可以先调用创建商品的接口,创建一个基本的商品;
  • 再调用商品上架的接口,保证商品已上架;
  • 然后再通过数据库更新商品配置的地区;

总结

这篇文章主要是记录一下测试数据的五种准备方法,其中大多是借鉴茹炳晟老师的《软件测试52讲》
中的观点,少部分是结合自己工作中遇到的问题的一些思考。
主要是给以后的测试工作确定一个升级路线。
旨在学习,路漫漫其修远兮~

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值