jmeter应用---逻辑控制器(一)

参考资料:官网

概述

逻辑控制器控制Samplers执行的顺序;作用域是具体逻辑控制器元件的子节点,就是说放在控制器下面的所有的采样器都会当做一个整体,均受逻辑控制器控制。

jmeter提供了多样的逻辑控制器,如下图:

jmeter应用---逻辑控制器(一)_第1张图片

jmeter共提供17个逻辑控制器,下面逐个介绍

Simple Controller(简单控制器)

Jmeter里最简单的一个控制器,它可以组织采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能,对jmeter测试运行没有任何影响。

logic_simpleController
例如将业务逻辑和监听器分别放入不同的组用来维护脚本,groupA用来存放控制逻辑控制器和具体sampler,groupB用来存放所有的监听器。

jmeter应用---逻辑控制器(一)_第2张图片

Loop Controller(循环控制器)

指定其子节点运行的次数

jmeter应用---逻辑控制器(一)_第3张图片

这里的设置类似线程组中的设置,Forever选项:勾选上这一项表示一直循环下去,直至计划结束或者人为结束,再或者异常结束。
如果清空loop count对应的数值,当离开该节点后,后自动勾选forever。
如果loop count中设置的是非数字,则不会运行。

如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘的结果。

jmeter应用---逻辑控制器(一)_第4张图片

Once Only Controller(仅一次控制器)

在测试计划执行期间,该控制器下的子结点对每个线程只执行一次,在整个测试计划中同一个线程的多次请求会被跳过。
Once Only Controller总是在任何循环父控制器的第一次迭代中执行,因此,如果once only controller放入loop controller中并设置循环次数为5,once only Controller只会在第一次迭代的时候执行一次;若在loop Controller的父级元素(这里是threadGroup)中设置循环次数,那么once only Controller会被执行父级的总循环次数

例1:分别设置threadgroup运行1次和2次,父子关系如图
jmeter应用---逻辑控制器(一)_第5张图片

例2:once only Controller的所在循环的父级共执行10次(2*5),once only Controller执行10次

jmeter应用---逻辑控制器(一)_第6张图片

interleave controller(交替控制器)

交替控制,使得该控制器包含的取样器步骤交错执行在每个循环中。
jmeter应用---逻辑控制器(一)_第7张图片
忽略子控制器模块(Ignore sub-contorller blocks):如果勾选此项,交错控制器将sub-controllers像单一请求元素一样,一次只允许一个请求/控制器
用线程交替:多线程请求,通过求情的线程控制交替

例1:简单的两个请求交替
jmeter应用---逻辑控制器(一)_第8张图片
例2:配合控制块完成复杂交替若有交替操作的有多个请求,请使用simple Controller
jmeter应用---逻辑控制器(一)_第9张图片
例3:勾选Ignore sub-contorller blocks(顺便演示3个请求块交替)
jmeter应用---逻辑控制器(一)_第10张图片

可以嵌套完成更复杂的混合交替

Random Controller(随机控制器)

类似交替控制器,但该控制器随机选取某一个取样器请求(或者一个块)并执行,不是轮询而是随机,完全可以参考interleave controller
jmeter应用---逻辑控制器(一)_第11张图片
从例子的结果看啊3个分组是没有按顺序执行,而是没有规律的随机执行

Random Order Controller(随机顺序控制器)

随机顺序控制器类似简单的控制器,它会一次执行每个子元素,但是节点的执行顺序是随机的(正常的情况下是依次按顺序执行)

jmeter应用---逻辑控制器(一)_第12张图片

从例子的结果看,simpleController中的sampler是按顺序执行的,randomOrderController中的sampler是乱序的(为了更好看出结果的差异,可以多执行几次,或者在外部加入循环控制器)

Throughput Controller(吞吐量控制器)

控制其下的子节点的执行次数与负载比例分配。
jmeter应用---逻辑控制器(一)_第13张图片

控制方式有两种:

  • Total Executions:设置运行次数
  • Percent Executions:设置运行比例(1~100之间)

Throughput:设置具体值

Per User:每个用户
如果勾选此项,控制器在每个用户(线程)的基础上计算是否应该执行;否则计算所有用户(线程)

例1:设置线程组循环10次,throughput Controller的控制策略设置Total Executions为1,最终throughput控制的sampler只执行一次
jmeter应用---逻辑控制器(一)_第14张图片

例2:将上述用例做修改Throughput Controller的控制策略设置Percent Executions为20,结果执行2次
jmeter应用---逻辑控制器(一)_第15张图片

Runtime Controller(运行周期控制器)

控制该控制器下子元素的运行时间
jmeter应用---逻辑控制器(一)_第16张图片

例:设置runtime为5秒(设置太大结果过多不好演示),在sampler的name中加入时间

jmeter应用---逻辑控制器(一)_第17张图片

If Controller(If 控制器)

有点变成知识的都懂得,if是条件判断。根据给定表达式的值决定是否执行该节点下的子节点,默认使用javascript的语法进行判断。
jmeter应用---逻辑控制器(一)_第18张图片

condition:表达式,true/false。若结果不是boolean值,认为是false
Interpret Condition as Variable Expression:是否判断变量值是否等于字符串true(不区分大小写)
Evaluate for all children:是否在每个子结点执行前都会计算表达式

jmeter应用---逻辑控制器(一)_第19张图片

默认情况下,条件只在初始条目上进行一次评估,但是可以选择对控制器中包含的每个可运行元素。

jmeter应用---逻辑控制器(一)_第20张图片

While Controller(while循环控制器)

循环控制器的一种:while(condition表达式) action 。根据给定表达式的值决定是否执行该节点下的子节点。
jmeter应用---逻辑控制器(一)_第21张图片

blank - 当取样器发生错误时,退出循环
LAST - 当取样器发生错误时,退出循环.如果在循环前面的取样器失败,不进入循环
Otherwise - 当条件是false时退出循环


jmeter应用—逻辑控制器(一)
jmeter应用—逻辑控制器(二)

原文连接 http://blog.csdn.net/yue530tomtom/article/details/78658890

你可能感兴趣的:(性能测试,jmeter,jmeter学习,jmeter,控制器,性能测试)