CSV Data Set Config 配置中线程共享模式共有三种,分别为:所有线程、当前线程、当前线程组。这三种模式决定了 jmeter 的取值策略。Jmeter 线程共享模式,共享的是数据文件。
1 参数化说明
1.1 为什么要进行参数化
● 数据库或应用程序需对值进行了唯一性校验;
● 避免缓存造成的性能测试结果失真;
举例说明:如查询张三的信息,第一次会很慢,第二次再查询时明显速度快很多。
原因分析:查询用户信息时打开表后,会先检查内存(执行计划)里是否有该 SQL 语句的执行结果,有直接拿结果,没有则会去磁盘查,在磁盘找到数据后,再将数据同步到内存。
1.2 如何关闭数据库缓存
临时关闭
1 | set global query_cache_size=0 |
永久修改
永久的修改配置文件 my.cnf ,添加下面的配置即可
1 | query_cache_type=0 |
2 jmeter3 种参数化策略
2.1 Jmeter 线程共享模式-所有线程
所有线程:所有线程共享一个数据文件,启几个线程就会用几条数据。就像所有人吃一筐苹果,每吃一个就少一个。
场景 1
如下图线程组 1 下面有一个变量文件、一个 http 请求
- 1)变量文件共享模式为所有线程,变量文件中定义变量 T1,值为 1-9
- 2)http 中调用变量 T1
线程组中设置线程数和循环次数,运行后 T1 取值如下
线程数 | 循环次数 | T1 |
---|---|---|
4 | 1 | 1 2 3 4 |
1 | 3 | 1 2 3 |
2 | 3 | 1 2 3 4 5 6 |
场景 2
如下图,修改场景 1 脚本,将 http 请求放在循环控制器中,变量文件和 http 请求保持不变
线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 T1 取值如下
线程数 | 循环次数 | 循环控制器循环次数 | T1 | 说明 |
---|---|---|---|---|
4 | 1 | 2 | 11223344 | 顺序可能不一致但每个值出现的次数一定是这样 |
1 | 3 | 2 | 112233 | 顺序可能不一致但每个值出现的次数一定是这样 |
2 | 3 | 2 | 112233445566 | 顺序可能不一致但每个值出现的次数一定是这样 |
2 | 4 | 2 | 11223344 | 顺序可能不一致但每个值出现的次数一定是这样 |
总结:加循环控制器,可以理解成脚本里的循环,循环控制器不改变线程取值。
2.2 Jmeter 线程共享模式-当前线程
当前线程:1 个线程 1 个数据文件,线程是几,就可以理解成复制出几份文件。
场景 1
如下图线程组 1 下面有一个变量文件、一个 http 请求
- 1)变量文件共享模式为当前线程,变量文件中定义变量 T1,值为 1-9
- 2)http 中调用变量 T1
线程组中设置线程数和循环次数,运行后 T1 取值如下
线程数 | 循环次数 | T1 |
---|---|---|
4 | 1 | 1 1 1 1 |
1 | 4 | 1 2 3 4 |
2 | 2 | 1 2 1 2 |
场景 2
如下图,修改场景 1 脚本,将 http 请求放在循环控制器中,变量文件和 http 请求保持不变
线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 T1 取值如下
线程数 | 循环次数 | 循环控制器循环次数 | T1 | 说明 |
---|---|---|---|---|
4 | 1 | 2 | 11111111 | 顺序可能不一致但每个值出现的次数一定是这样 |
1 | 4 | 2 | 11223344 | 顺序可能不一致但每个值出现的次数一定是这样 |
2 | 2 | 2 | 11112222 | 顺序可能不一致但每个值出现的次数一定是这样 |
3 Jmeter 线程共享模式-所有线程组
当前线程组:一个线程组一份文件,线程组内是所有线程(All Thread)模式。
场景 1
如下图测试计划下面有一个变量文件、两个线程组
- 1)变量文件共享模式为所有线程组,变量文件中定义变量 T1,值为 1-9
- 2)每个线程组下各有一个 http 请求
- 3)每个 http 请求中调用变量 T1
线程组中设置线程数和循环次数,运行后 T1 取值如下
线程数 | 循环次数 | http 请求 1_T1 | http 请求 2_T1 |
---|---|---|---|
3 | 1 | 1 2 3 | 1 2 3 |
2 | 2 | 1 2 3 4 | 1 2 3 4 |
场景 2
如下图,修改场景 1 脚本,将两个 http 请求分别放在循环控制器中,变量文件和 http 请求保持不变
线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 T1 取值如下
线程数 | 循环次数 | 循环控制器循环次数 | http 请求 1_T1 | http 请求 2_T1 | 说明 |
---|---|---|---|---|---|
3 | 1 | 2 | 112233 | 112233 | 顺序可能不一致但每个值出现的次数一定是这样 |
2 | 2 | 2 | 11223344 | 11223344 | 顺序可能不一致但每个值出现的次数一定是这样 |