JMeter:逻辑控制器_吞吐量控制器(Throughput Controller)

吞吐量控制器,用来控制其下元件的执行次数,并无控制吞吐量的功能。(该控制器的名称不正确,因为它不控制吞吐量。恒定吞吐量计时器以获取可用于调整吞吐量的元素)

吞吐量控制器允许用户控制执行频率。有两种模式:

Total Executions:

    按总执行数控制,即当选中该项时,吞吐量中填写的值就是控制器期望的被执行的最大次数。

    当吞吐量小于等于0时,控制器及其子节点不会被执行。

    当吞吐量为空、字符串时,控制器及其子节点会被执行一次。

    当吞吐量为小数时,控制器会以向下取整的方式被触发执行。<1.9---1、2.322---2>

    当吞吐量的值大于总执行数时,控制器每次都会被触发,直至程序停止运行。

 Percent Executions:

    按百分比执行,即当选中改项时,吞吐量中填写的值为触发执行的百分比<1--100>。

    当吞吐量小于等于0时,控制器及其子节点不会被执行。

    当吞吐量为空、字符串时,控制器及其子节点会被以百分比100%来执行。

    当吞吐量大于100时,控制器及其子节点会被以百分比100%来执行。

吞吐量百分比支持小于。执行次数计算方式为  总数目* X%==结果向下取整。比如 10 * 68 = 6.8--->6 执行次数为6次。

 Per User:

    每个用户,其实就是每个线程独立计算。默认不勾选,上述描述中的总执行数以线程组为单位,多线程合并计算。

    勾选此项时,每个线程之间独立计算,上述描述中的总执行数为线程组单个线程中控制器被触发执行的次数。


注:与“一次控制器”一样,当父循环控制器重新启动时,将重置此设置。

一、Percent Executions

1)线程组(线程数3,循环数10),吞吐量控制器(吞吐量50,勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=15,即执行了15次,如上图。


2)线程组(线程数3,循环数10),吞吐量控制器(吞吐量50,不勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=15,即执行了15次,如上图。

对比两个场景的执行结果,我们可以得出结论:

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


二、Total Executions

1、线程数*循环次数>=线程数*吞吐量

1)线程组(线程数3,循环数10),吞吐量控制器(吞吐量8,不勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=8,即执行了8次,如上图。

2)线程组(线程数3,循环数10),吞吐量控制器(吞吐量8,勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=24,即执行了24次,如上图。


2、线程数*循环次数<线程数*吞吐量

1)线程组(线程数3,循环数10),吞吐量控制器(吞吐量15,不勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=15,即执行了15次,如上图。

2)线程组(线程数3,循环数10),吞吐量控制器(吞吐量15,勾选Per User)

测试结果,查看“聚合报告”吞吐量控制器下的请求执行次数,查询不同状态订单=30,即执行了30次,如上图。


 分析数据,得出结论:

1)线程数*循环次数>=线程数*吞吐量

A、勾选Per User,Total Executions模式的执行次数=线程数*吞吐量。

B、不勾选Per User,Total Executions模式的执行次数=线程数*循环次数。

2)线程数*循环次数<线程数*吞吐量

A、勾选Per User,Total Executions模式的执行次数=线程数*循环次数。

B、不勾选Per User,Total Executions模式的执行次数=吞吐量。

你可能感兴趣的:(JMeter:逻辑控制器_吞吐量控制器(Throughput Controller))