软件测试之测试数据
测试数据的准备是软件测试过程中非常重要的一个环节 ,功能测试、自动化测试、性能测试都避不开测试数据的准备工作。想要成长为一名优秀的测试工程师,非常有必要深入理解测试数据的准备方法,以及它们各自的优缺点、适用场景。
测试数据准备的基本方法
从创建测试数据的维度来看,测试数据准备方法主要可以分为四类:
基于GUI操作生成测试数据。
通过API调用生成测试数据。
通过数据库操作生成测试数据。
综合运用API和数据库的方式生成测试数据。
基于 GUI 操作生成测试数据
是最原始的创建测试数据的方法。简单地说,它就是采用 E2E 的方式来执行业务场景,然后生成数据的方法。
这个方法的优点是简单直接,创建的数据完全来自真实的业务流程。但是该方法的缺点也十分明显,主要体现在以下几个方面:
创建测试数据的效率非常低。
基于GUI的测试数据创建方法不适合封装成测试数据工具。
测试数据成功创建的概率不会太高。
会引入不必要的测试依赖。
基于以上几个原因,在实际的测试过程中,很少直接使用基于GUI的操作生成测试数据。
https://picx.zhimg.com/80/v2-e1170da78ddf6ef9afa00ed1374f5837_720w.jpeg
通过API调用生成测试数据
是目前主流的测试数据生成方法。在实际工程实践中,我们往往会把调用 API 生成测试数据的过程封装成测试数据准备函数。
通过API调用生成测试数据的方法,优点主要体现在以下几个方面:
可以保证创建的测试数据的准确性,原因是使用了和GUI操作同样的API调用。
测试数据准备的执行效率更高,因为该方法跳过了耗时的GUI操作。
把创建数据的API调用过程,封装成测试数据函数更方便,因为这个调用过程的代码逻辑非常清晰。
测试数据的创建可以完全依赖于 API 调用,当创建测试数据的内部逻辑有变更时,由于此时 API 内部的实现逻辑也会由开发人员同步更新,所以我们依旧可以通过调用 API 来得到逻辑变更后的测试数据,而这个过程对使用来说是完全透明的。
缺点主要表现在:
并不是所有的测试数据创建都有对应的API支持。
有时,创建一条业务线上的数据,往往需要按一定的顺序依次调用多个API,并且会在多个API调用之间传递数据,这也无形中增加了测试数据准备函数的复杂性。
虽然相比于GUI操作方式,基于API调用的方式在执行速度上已经得到了大幅度提示,并且还可以很方便地实现并发测试,但是对于需要批量创建海量数据的场景,还是会力不从心。
通过数据库操作生成测试数据
这也是目前主流的测试数据生成方法。这个方法的实现原理很简单,就是直接通过数据库操作,将测试数据插入到被测系统的后台数据库中。
常见的做法是,将创建数据需要用到的 SQL 语句封装成一个个的测试数据准备函数,当我们需要创建数据时,直接调用这些封装好的函数即可。
通过数据库操作生成测试数据的方法,主要优点是测试数据的生成效率非常高,可以在较短的时间内创建大批量的测试数据。
缺点也非常明显,主要体现在以下几个方面:
很多时候,一个前端操作引发的数据创建,往往会修改很多张表,因此封装的数据准备函数的维护成本要高得多。
容易出现数据不完整的情况,比如一个业务操作,实际上在一张主表和一张附表中插入了记录,但是基于数据库操作的数据创建可能只在主表中插入了记录,这种错误一般都会比较隐蔽,往往只在一些特定的操作下才会发生异常。
当业务逻辑发生变化时,即 SQL 语句有变化时,需要维护和更新已经封装的数据准备函数。
综合运用API和数据库的方式生成测试数据
典型的应用场景是,先通过 API 调用生成基础的测试数据,然后使用数据库的 CRUD 操作生成符合特殊测试需求的数据。
页:
[1]