在执行负载压力测试前,一般需要准备三类数据:初始化数据、铺底数据(历史数据)和参数化数据。

本文说的数据量主要包括基础数据量(或者叫历史数据量、垫底数据量、数据库中已有的数据量)和参数化数据量,数据量在性能测试中起到非常重要的作用。对于在数据库中只有几条记录和有几亿条记录里面查询信息,那么结果肯定相差非常大的,随着业务量的增长,记录也越来越多,因此在性能测试过程中,需要保持跟生产上相同级别的数据量。生产系统中业务中使用不同的数据、那么我们在测试的时候需要考虑参数数据量的大小和数据分布的问题。

如果基础数据量跟生产环境的基础数据量不在同一个数量级上,将会导致相关指标例如响应时间比生产上快很多,不真实,甚至导致测试结果没有参考意义。如果参数化数据量过少、未考虑数据分布的情况,将会导致测试结果不真实,甚至测试结果没有参考意义。

基础数据量:

测试环境基础数据量需要跟生产环境基础数据量保持在同一个数据量级上,一般情况下需要考虑未来三年数据量增长趋势,如果增长过快需要在测试环境造非常多的数据。

参数化数据量:

1)参数化数据量尽可能的多,必要的情况下,可以清除缓存或者用写代码的方式提供参数化。

2)参数化数据分布,如果业务有明显的地域等分布的特征,需要考虑数据分布的情况。

数据量预置的方法:

1)从生产库导数据—最优方案

2)存储过程生产数据,也可以写脚本—建议登录用户数据使用存储过程生产

3)loadrunner或jmeter生产—过程业务数据建议使用工具生产,数据比较真实

4)DataFactory 数据工厂生产数据——上手比较慢

ps:造数据尽量真实,这个很重要。例如:我们利用某个字段进行索引查询,但是该字段全是一样的,不仅没有减少数据库的压力,反而增加了。

预置数据的脚本(具体脚本请移步飞测群):

1)mysql存储过程样例:

性能测试通过几种方式造数据-编程知识网

2)oracle存储过程样例:

性能测试通过几种方式造数据-编程知识网

3)java脚本生产数据样例:

性能测试通过几种方式造数据-编程知识网