事务控制器
用于统计测量其作用域内的测试元素(取样器、定时器等)的总体时间,该时间包含事务控制器范围内的所有处理时间,而不仅仅是取样器的处理时间。

Generate Parent Sample: 如果勾选,则事务控制器作为其子样本的父项生成,其子样本将只能在查看结果树下可查看。
Include duration of timer and pre-post processors in generated sample: 勾选此选项后,事务控制器的计时包括其下的计时器、预处理器、后置处理器的执行时间,而不仅仅是可执行的样本,默认不勾选。
仅一次控制器
仅一次控制器,将始终在线程组的第一次迭代时执行。

此控制器通常用于控制需要登入和登出的请求,测试过程中,我们往往都只需要登录,获取到对应的登录信息后即可执行后续相关的请求,而不是每执行一个请求都登录一次,如将login请求放入仅一次控制器,则在线程组循环运行期间,不论循环次数设置为多少次,login请求都将仅在第一次执行时运行。
循环控制器
控制该控制器下的请求运行请求次数。

如果线程组中设置了持续时间,以持续时间为准,即虽然设置了循环次数,但是到了持续时间则会自动停止,不会执行设置好的次数
总循环次数=线程数*线程组循环次数*循环控制器次数。
Runtime控制器
Runtime控制器是用来控制其子元件的执行时间长度,不控制运行次数。在测试中,当某特定的业务需要执行特定的时间长度时,我们可以使用Runtime控制器,来达到特定的需求。

如果Runtime控制器的控制运行时长超过线程组运行时长,则控制将不会生效。
交替控制器
如果将采样器或逻辑控制器添加到交替控制器,则JMeter将在每个其下的控制器之间交替进行每次循环迭代。

忽略资(子)控制器块:如果勾选,则将子控制器作为一个请求,只执行一次。如果不勾选,则子控制器中样例都执行。这里的子控制器一般指非交替控制器的其他控制器
Interleave across threads:跨线程交替,勾选表示在多个线程中交替执行,既交替控制器中有请求A、B,线程1先执行A,线程2先执行B,线程3先执行A。
If控制器
通过条件来控制是否运行其下面的测试元件(子元素)是否运行,推荐使用${__jexl3(条件表达式)}或者${__ groovy(条件表达式)}。

Interpret Condition as Variable Expression?:默认勾选项,将条件解释为变量表达式(需要使用__jexl3 or __groovy 表达式)
Evaluate for all children?:条件作用与每个子节点,默认不勾选。勾选了 Evaluate for all children? 意味着它的每个子元素在运行前都会运行一次 if 控制器里面的条件表达式 ,看看是否还是 true,是的话就可以运行,false 就不运行。
表达式:
jexl3 or groovy 表达式
${__jexl3(条件表达式)}或者${__ groovy(条件表达式)}
逻辑表达式说明
• ==
含义:是否等于
例如:如${__jexl3(${ROWS}==1,)},判断${ROWS}变量是否等于1。
• !=
含义:不等于
例如:如${__jexl3(${ROWS}!=1,)},判断${ROWS}变量是否不等于1。
• !
含义:非
示例:如${__jexl3(!(${ROWS}!=2),)},对${ROWS}的值不等于2,其判断为真,那么执行IF下的子项。
• &&
含义:并且
示例:如${__jexl3(${ROWS}=1 && "${name}" != "性能",)},也就是${ROWS}=1和表达式 "${name}" != "性能"均为真时,执行IF控制器下的子项。
• ||
含义:或
示例:如${__jexl3(${ROWS}=1 || "${name}" != "性能",)},也就是${ROWS}=1和表达式 "${name}" != "性能"其中一项为真时,执行IF控制器下的子项。
• >=
含义:大于等于
示例:如${__jexl3(${count}>=15,)}。也就是${count}>=15,其判断为真,那么执行IF控制器下的子项。
• 注意:
如果判断表达式是字符串,此时,必须要用引号,变量都默认是字符串的形式,如:${__jexl3("${name}"=="性能",)},不能用${__jexl3(${name}=="性能",)}
While控制器
While 控制器,直到条件为false时,停止运行
当条件满足时,将继续执行该循环控制器的请求。条件不满足时,则跳出循环。

condition 可以填入的值
空白:节点下最后一个 sampler 失败,退出循环
LAST:节点下最后一个sampler失败,退出循环,如果这个失败的 sampler 在循环前就运行失败了,那么【While Controller】将不会执行
其它:当条件等于 false 时退出(或不进入)循环,表达式与if控制器写法一致,while表达式为false,停止运行