JMeter之Throughput Controller吞吐量控制器

时间:2023-03-09 15:58:28
JMeter之Throughput Controller吞吐量控制器

吞吐量控制器,它是用来控制该控制器下面元件的执行次数,与控制吞吐量的功能无关。(注:用Constant Throughput Timer可以控制吞吐量tps)

作用:控制其子节点的执行次数与负载比例分配

吞吐量控制器有两种模式:Total Executions 和Percent Executions。

JMeter之Throughput Controller吞吐量控制器

参数说明如下:

  • Total Executions:整个测试计划中的总执行次数,按吞吐量值来指定执行次数。
  • Percent Executions:按比例(1%-100%),整个测试计划中执行百分比。按执行次数的百分比来计算执行次数
  • 吞吐量:该值可以是任意整数,如果小于等于0,则一次也不执行。
  • Per User:如果勾选该项则按虚拟用户数(线程数)来计算执行次数,如果没有选中该项则按所有虚拟用户数来计算执行次数。

那么如何计算吞吐量控制器其下的执行次数?

下面添加循环控制器,在吞吐量控制器下添加Debug Sampler元件来做实验:

实验一:测试按Percent Executions模式执行次数

TestCase1:线程数3,线程循环次数2,循环控制器循环次数2,吞吐量值50%,勾选Per User

测试结果:查看“聚合报告”里Debug Sampler执行次数,Debug Sampler=6,即执行了6次

TestCase2:线程数3,线程循环次数2,循环控制器循环次数2,吞吐量值50%,不勾选Per User

测试结果,查看“聚合报告”里Debug Sampler执行次数,Debug Sampler=6,即执行了6次

TestCase1与TestCase2测试结果对比表:

线程数

线程组循环次数

控制器循环次数

模式

吞吐量值

Per User

执行次数

3

2

2

Percent Executions

50

勾选

6

3

2

2

Percent Executions

50

不勾选

6

由此,得出结论:

无论Per User是否勾选,按Percent Executions模式的执行次数都不受Per User影响,Percent Executions模式的执行次数=线程数*循环次数*吞吐量%。

PS:循环次数=线程组循环次数*循环控制器循环次数。

实验二:测试按Total Executions模式执行次数

同样,按照实验一的初始条件不变:线程数3,线程循环次数2,循环控制器循环次数2,然后改变吞吐量值和是否勾选Per User来做实验。

测试的实验结果如下表:

线程数

线程组循环次数

控制器循环次数

模式

吞吐量值

Per User

执行次数

3

2

2

Total Executions

13

勾选

12

3

2

2

Total Executions

13

不勾选

12

3

2

2

Total Executions

12

勾选

12

3

2

2

Total Executions

12

不勾选

12

3

2

2

Total Executions

11

勾选

12

3

2

2

Total Executions

11

不勾选

11

3

2

2

Total Executions

10

勾选

12

3

2

2

Total Executions

10

不勾选

10

3

2

2

Total Executions

5

勾选

12

3

2

2

Total Executions

5

不勾选

5

3

2

2

Total Executions

4

勾选

12

3

2

2

Total Executions

4

不勾选

4

3

2

2

Total Executions

3

勾选

9

3

2

2

Total Executions

3

不勾选

3

3

2

2

Total Executions

2

勾选

6

3

2

2

Total Executions

2

不勾选

2

分析数据,得出结论:

  • 当勾选Per User时:
  1. 线程数*循环次数>=线程数*吞吐量时,Total Executions模式的执行次数=线程数*吞吐量。
  2. 当线程数*循环次数<线程数*吞吐量时,Total Executions模式的执行次数=当线程数*循环次数。
  • 当不勾选Per User时:
  1. 线程数*循环次数<=吞吐量时,Total Executions模式的执行次数=线程数*循环次数。
  2. 当线程数*循环次数>吞吐量时,Total Executions模式的执行次数=吞吐量。