背景
在性能测试中,测试数据准备是至关重要的一环,也是工作量较大的部分之一。如何高效地准备大量测试数据以满足不同系统和性能测试类型的需求,是一个常见而重要的挑战。测试数据的合理性直接影响性能测试结果的准确性。相信大家在性能测试过程中遇到过,由于测试数据不合理的原因,导致性能结果非常好或非常差的现象。
性能测试数据准备的类型
在性能测试前,一般需要准备3类数据:初始化数据、历史数据、参数化数据
- 初始化数据:系统完成不熟后,不能直接进行测试,需要系统进行初始化,主要是增加系统中的组织人员角色等数据。
- 历史数据:系统刚上线,数据比较少,系统的反应也比较快;随着系统使用的时间原来越长,数据也越来越多,甚至成倍的增加,系统的相应时间会越来越慢。因此在测试过程中,需要增加相当规模的数据来模拟系统未来几年业务的数据量。
- 参数化数据:在测试过程中我们需要构造大量不能重复的数据来进行系统测试,例如:登陆并发测试过程中需要构造大量不同用户的数据来模拟登陆操作。
性能测试数据构造原则
- 数据量:假如系统3年后用户达到50万,那么测试过程中就要构造50万的测试数据。
- 数据分布:一般满足二八原则,百分之二十的用户完成百分之八十的操作,例如,系统注册用户是10万个,百分之二十的是有效用户或者是活跃用户,那么在进行登陆操作选择的测试数据是2万个。
测试数据构造方法
- 数据库导入:优点就是更贴近真实环境,测试结果更为准备,缺点是相数据得脱敏处理,不一定能从生产环境导出数据。
- 根据实际业务规则构造数据:一般满足二八原则,百分之二十的用户完成百分之八十的操作。
快速构造测试数据例子
MySQL命令行直接导入数据
#导入sql文件
load data infile '/Users/xxx/test.sql' into table text firlds terminated by ','
通过系统进行构造。
为了保证数据的合理性和有效性,建议通过系统进行构造测试数据,例如:被测系统中有导入功能,可以通过此功能进行批量数据导入操作。