性能测试通过几种方式造数据

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

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

基础数据量:

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

参数化数据量:

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

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

数据量预置的方法:

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

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

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

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

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

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

1)mysql存储过程样例:

2)oracle存储过程样例:

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

原文地址:https://www.cnblogs.com/wangjizhen/p/9567080.html

时间: 2024-08-22 20:09:21

性能测试通过几种方式造数据的相关文章

三种方式实现数据增删改查

原生form实现   forms组件实现   modelform组件实现 用原生form实现页面数据增删改查 前端代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>书籍列表</title> </head> <body> <a href="/book/add&qu

oracle11G的数据装载的几种方式

数据装载 数据的装载: ?SQL*LOADER ?外部表 ?导入/导出 SQL*LOADER: SQL*LOADER是一个ORACLE工具,能够将数据从外部数据文件装载到数据库中. 运行SQL*LOADER的命令是sqlldr. Sqlldr的两种使用方式: 1. 只使用一个控制文件,在这个控制文件中包含数据 2. 使用一个控制文件(作为模板) 和一个数据文件 一般采用第二种方式,数据文件可以是 CSV 文件.txt文件或者以其他分割符分隔的. 说明:操作类型 可用以下中的一值: 1) inse

控制器读取视图表单中的数据的几种方式

上次分享了控制器向视图传递数据的4种方式,今天再来给大家讲讲MVC视图中的数据如何提交到控制器. 我们可以通过以下几种方式提交数据到控制器: 1.通过Request.Form读取表单数据 在 控制器动作方法(Action)中,POST方法提交的表单可以使用Request.Form读取其中的数据: <html> <head></head> <body> <form> <input type="text" name=&quo

不使用spring的情况下原生java代码两种方式操作mongodb数据库

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

8.13.2 TreeSet实现Comparable接口的两种方式

推荐使用第二种方式,编写比较器可以使数据类的程序耦合度降低,同时比较器也可以重复利用! 第一种方式:数据类实现Comparable接口,实现其中的compareTo方法 创建对象时,使用TreeSet的默认构造函数! SortedSet users = new TreeSet(); class User implements Comparable{ //String name; int age; User(int age){ this.age = age; } public String toS

【巨坑】springmvc 输出json格式数据的几种方式!

最近公司项目需要发布一些数据服务,从设计到实现两天就弄完了,心中窃喜之. 结果临近部署时突然发现.....  服务输出的JSON 数据中  date 类型数据输出格式要么是时间戳,要么是  {"date":26,"day":1,"hours":21,"minutes":38,"month":5,"seconds":22,"time":1498484302259,&qu

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

数据持久化的一种方式

/** *数据持久化的四种方式 * *1-------属性列表 * *2-------对象归档 * *3-------SQLite3 * *4-------Core Data * *下面是数据持久化的第一种方式-----写入文件 */ /** *写入文件思路 * *1-----获取需要写入的文件对象 * *2-----获取需要写入的文件对象的文件路径 * *3-----写入文件 * *4-----读取文件 */ NSString* string=@"Copyright (c) 2015年 妖精的