逻辑控制器
Jmeter提供了多种逻辑控制器,下面进行讲解说明:
1、Simple Controller
简单控制器是最基本的控制器,对jmeter测试运行没有任何影响,可以将某些请求归集在一个简单控制器中,视为一个模块,使得脚本结构更清晰。
2、Loop Controller
循环控制器,这个控制器的作用是使其子项循环运行。
循环次数(Loop Count):在输入框中输入需要循环的次数,控制器下的子项会循环相应的次数。如果勾选了【forever】,那么控制器下的子项会一直运行。
这里设置线程数为5 ,循环控制器为3次 ,相乘总共为15次。
3、Once Only Controller
仅一次控制器,会使该控制器下的子项每个线程只运行一次,建立下面的脚本结构并运行:
结果如下:
对上面的脚本进行修改,加入循环控制器,修改线程组【线程数】为2,【循环次数】为2:
运行脚本,结果如下:
可见,【循环控制器】中的【仅一次控制器】依然生效。
4、ForEach Controller
遍历循环控制器,首先看下它的各输入项:
输入变量前缀:输入遍历需要的变量的前缀,图中是a,为什么要写“a”呢?这是因为【用户定义的变量】中变量名称是“a”为前缀的,前缀是指数字前面的内容。当然这个变量还可以来自【正则表达式提取器】、【参数化】等。
Start index for loop:循环开始的变量索引(行数),不填则从0开始,也就是自定义变量中的第一行。
End index for loop:循环结束的变量索引,不包括本身,也就是如果填入3,则执行完2就会结束。
输出变量名称:将读取到的变量放入内存,变量值就是输出变量名称所定义的值(本例是a)。在后面使用这个值时,使用“${输出变量名}“格式就可以了。
Add “_” before number:勾选后,【用户定义的变量】的变量名要写“a_1”格式,不勾选则写成“a1”格式。 HTTP请求按下图写入,来验证ForEach Controller的作用。
运行脚本,发现HTTP请求被执行了三次(end-start的值),${a}依次被赋值a1、a2、a3。
5、Include Controller
包含控制器,它的作用是引入外部的jmx文件。需要注意的有以下几点:
1、引用的jmx文件中,不能包含线程组。
2、当使用包含控制器中包含相同的JMX文件,要避免同名。
6、Transaction controller
事务控制器,生成一个额外的采样器来测量其下测试元素的总体时间;值得注意的是,这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的。由于时钟误差,而事务控制器的总体用时可能会稍微大于事务控制器下各个子项用时之和。
它有两个参数项:
1、Generate parent sample:生成父样本(不同的模式选择)
2、include duration of timer and pre-post processors in generated sample:是否包含时间的计时器和前后处理器耗用的时间。
可以看到聚合报告中记录了【事务处理器】的响应用时信息。勾选了【Generate parent sample】后再次运行,我们发现结果树和聚合报告都有了变化,结果树中依然能看到HTTP请求,但已经归集到事务控制器下,而聚合报告中不再显示取样器。
7、Throughput Controller
吞吐量控制器,允许用户自行调整该控制器下的子项的执行频率。
吞吐量控制器有两种模式:
1、Total Executions:当该控制下的子项被执行固定数量后,停止吞吐量控制器。例如下面这个脚本,线程组为2,【循环次数】设为3,运行脚本。
结果如下:
2、Percent Executions:百分比模式,该模式使吞吐量控制器下的子项执行总循环次数的一定比例(在吞吐量中设置该比例),例如下面的脚本。
设置线程组【循环次数】为60,运行后,查看聚合报告,吞吐量控制器下的HTTP请求1执行了30次,也就是(60*50%)次。
未完待。。。。。。
原文:https://www.cnblogs.com/mumulog/p/11319593.html