Jmeter参数化取值策略

Jmeter参数化取值策略

Posted by 青夜梓藤 on 2019-03-16

CSV Data Set Config 配置中线程共享模式共有三种,分别为:所有线程、当前线程、当前线程组。这三种模式决定了 jmeter 的取值策略。Jmeter 线程共享模式,共享的是数据文件。

image

1 参数化说明

1.1 为什么要进行参数化

● 数据库或应用程序需对值进行了唯一性校验;

● 避免缓存造成的性能测试结果失真;

举例说明:如查询张三的信息,第一次会很慢,第二次再查询时明显速度快很多。

原因分析:查询用户信息时打开表后,会先检查内存(执行计划)里是否有该 SQL 语句的执行结果,有直接拿结果,没有则会去磁盘查,在磁盘找到数据后,再将数据同步到内存。

1.2 如何关闭数据库缓存

临时关闭

1
2
set global query_cache_size=0
set global query_cache_type=0

永久修改

永久的修改配置文件 my.cnf ,添加下面的配置即可

1
2
query_cache_type=0
query_cache_size=0

2 jmeter3 种参数化策略

2.1 Jmeter 线程共享模式-所有线程

所有线程:所有线程共享一个数据文件,启几个线程就会用几条数据。就像所有人吃一筐苹果,每吃一个就少一个。

场景 1

如下图线程组 1 下面有一个变量文件、一个 http 请求

  • 1)变量文件共享模式为所有线程,变量文件中定义变量 T1,值为 1-9
  • 2)http 中调用变量 T1

image

线程组中设置线程数和循环次数,运行后 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 请求保持不变

image

线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 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

image

线程组中设置线程数和循环次数,运行后 T1 取值如下

线程数 循环次数 T1
4 1 1 1 1 1
1 4 1 2 3 4
2 2 1 2 1 2

场景 2

如下图,修改场景 1 脚本,将 http 请求放在循环控制器中,变量文件和 http 请求保持不变

image

线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 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

image

线程组中设置线程数和循环次数,运行后 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 请求保持不变

image

线程组中设置线程数和循环次数,循环控制器中设置循环次数,运行后 T1 取值如下

线程数 循环次数 循环控制器循环次数 http 请求 1_T1 http 请求 2_T1 说明
3 1 2 112233 112233 顺序可能不一致但每个值出现的次数一定是这样
2 2 2 11223344 11223344 顺序可能不一致但每个值出现的次数一定是这样