Jmeter逻辑控制器: If控制器的解读

Jmeter官网其实有很详细的文档,点此跳转到官网,下面我来解读一下官网的文档,如有错误,欢迎指出。

一、官网解读

Name 在结果树中显示的名字。
Comments 备注。相当于代码中的注释。
Expression(must evaluate to true or false) 条件。默认使用JavaScript语言返回true或false。
Interpret Condition as Variable Expression? 默认选中。若不选中,会影响性能。
Evaluate for all children? 默认不选中。不选中则在进入If控制器时执行一次表达式。
  • If控制器使用户能控制是否执行其子节点。默认情况下,If控制器只在进入该控制器时执行一次,但用户可以选择执行每个子节点时都执行一次If控制器。
  • 如果勾选了Interpret Condition as Variable Expression?(默认是勾选的),那么在这种情况下有两种方式来填写exprssion:

  ① 使用等于true或false的变量。

   例如Jmeter内置变量 ${JMeterThread.last_sample_ok} 。如果上一个sample成功的话,那么就会返回true,否则就会返回false。(注意:这里的成功是包含断言的,最简单的判断是否成功可以在查看结果树里查看,绿色就是成功,红色就是失败)

  例如自定义的内置变量${VAR}。如果VAR的值就等于true,那么表达式的结果就是true,否则就是false。

  ② 使用函数__jexl3 或 __groovy。

  例如 ${__jexl3(${VAR} == 23,)},${__jexl3(${VAR} > 100,)},${__jexl3(${COUNT} < 10 && "${VAR}" == "abcd",)}  如果是字符串的话记得加上双引号。

   如果没有勾选Interpret Condition as Variable Expression? If控制器内部使用javascript来评估表达式,那么性能损失可能会非常大,从而使测试的可伸缩性降低。

  • 如果勾选了Evaluate for all children?那么在每个子节点执行前都会执行一次表达式。

     如果没有勾选Evaluate for all children?那么则在进入If控制器时执行一次表达式。(可能这样说也不是很懂,可以看下面的实践案例)

、实践

实践案例如下:

描述:在测试计划设置变量code的值为200。线程下添加If控制器,If控制器的子节点有:01登录,02首页。其中,01登录设置JSON提取器,提取返回结果中code的值并赋值给code。(如果登录成功则会赋值200)

① 若If控制器设置如下(没有勾选Evaluate for all children?):

则执行的流程图如下:

 ② 若If控制器设置如下(勾选了Evaluate for all children?):

则执行的流程图如下:

原文地址:https://www.cnblogs.com/youreyebows/p/11951754.html

时间: 2024-09-29 14:40:01

Jmeter逻辑控制器: If控制器的解读的相关文章

【JMeter_17】JMeter逻辑控制器__随机顺序控制器&lt;Random Order Controller&gt;

随机顺序控制器<Random Order Controller> 业务逻辑: 当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍,执行一遍,不是执行一个. 注意:是将子节点的顺序打乱,而非请求的顺序打乱,子节点可以是其他逻辑控制器. 演示脚本: Demo_随机顺序处理器 随机控制器与随机顺序控制器名字十分接近,但两者还是有着明显的区别,可参考  JMeter逻辑控制器_随机控制器 随机控制器为每次只执行节点下的一个子节点,随机顺序控制器是将节点下的所有子节点都正常执行,只是将执

jmeter 逻辑控制器

简单的控制器 简单的逻辑控制器可以让你组织你的采样器和其他 逻辑控制器. 不像其他逻辑控制器,该控制器不提供除此之外的功能 存储设备. 控制面板简单的控制器的截图 参数 在这个例子中,我们创建了一个测试计划,发送两个蚂蚁和两个HTTP请求 Log4J HTTP请求. 我们分组蚂蚁和Log4J请求安置在里面 简单的逻辑控制器. 记住,简单的逻辑控制器如何JMeter没有影响 流程控制器(s)添加到它. 所以,在这个例子中,JMeter发送的请求 以下订单:Ant主页,Ant新闻页面,Log4J主页

JMeter接口测试-ForEach控制器

前言 ForEach控制器的作用:用来遍历当前元素的所有可执行场景:在用户自定义变量中读取一系列相关的变量,该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值,常和用户定义的变量使用 案例一:与用户定义的变量使用,历遍用户定义变量中的所有数据. (1)添加配置元件-用户定义的变量,写入5组数据,添加察看结果树 (2)添加逻辑控制器-ForEach控制器,添加取样器-Debug Sampler,点击运行 案例二:获取文件列表接口的数组类型数据,获得每个数据并依次请求 (1)添加登

【JMeter_14】JMeter逻辑控制器__交替控制器&lt;Interleave Controller&gt;

交替控制器<Interleave Controller> 业务逻辑: 根据被控制器触发执行次数,去依次执行控制器下的节点<逻辑控制器.采样器>. 被触发执行可以由线程组的线程数.循环次数.逻辑控制器触发. 如果不勾选忽略子控制器,交替执行时,节点下次一级每个采样器.逻辑控制器都认为是一个节点来交替执行. Ignore sub-controller blocks:忽略子控制器,勾选后,会无视节点下的所有控制器<交替控制器除外> Interleave across thre

jmeter逻辑控制器-仅一次控制器、交替控制器

类型:仅一次控制器.交替控制器 说明:仅一次控制器和交替控制器是单线程的,可以设置单线程循环多次. 使用场景:仅一次控制器可用于登录.交替控制器可用于登录后的操作. 目录树结构:创建线程组,分别添加仅一次控制器.HTTP请求-用户管理.交替控制器.HTTP请求默认值.HTTP Cookie管理器.察看结果树,在仅一次控制器中添加HTTP请求-登录,在交替控制器中添加HTTP请求-人员管理.HTTP请求-人员恢复. 1.设置线程数为1,循环次数为1 执行结果为:HTTP-请求登录执行一次,HTTP

Jmeter——for循环控制器和if逻辑控制器

有时我们不仅仅需要用例按照简单的顺序跑,需要内嵌循环,或者条件分支,让某些用例在满足一定条件时才执行. 1.for循环控制器 此处记录两种应用的场景,一种是直接定义好要循环的变量,循环次数是固定的,写死就可以. 1)比如对起止时间进行循环,我们固定开始时间,让结束时间跨半小时.1小时.3小时.6小时...然后取各种长度的时间段.下面我们写好时间参数,配置for循环控制器: 这个例子中,我们循环只执行一次,就是让lte取lte_3的值,循环执行几次,取哪几个值,是可以通过start index和e

【JMeter_09】JMeter逻辑控制器__临界部分控制器&lt;Critical Section Controller&gt;

临界部分控制器<Critical Section Controller> 业务逻辑: 根据锁名来控制并发,同一个锁名之下,在同一时间点只能存在一个运行中,适用于控制并发的场景 锁名类型: 锁名为空,认为每个锁为不同的锁 锁名相同,多个锁认为是同一个锁,同一个时间点只能存在一个运行中 锁名为变量,根据变量值来判断是不是属于同一个锁,变量值为相同时,则认为是同一个锁 演示脚本: Demo_临界部分控制器 原文地址:https://www.cnblogs.com/fcholy/p/10902051.

JMeter学习笔记--详解JMeter逻辑控制器

JMeter使用逻辑控制器来决定采样器的处理顺序 简单控制器(Simple Controller):存储设备(将某些采样器归组) 循环控制器(Loop Controller:设置循环次数 仅一次控制器(Once Only Controller) 交替控制器(Interleave Controller) 随机控制器(Random Controller) 随机顺序控制器(Random Order Controller): 每个子测试元件都至多执行一次,但是执行顺序是随机的 吞吐量控制器(Throug

JMeter逻辑控制器

http://www.cnblogs.com/puresoul/p/4886574.html Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:"Logic Controllers determine the order in which Samplers are processed.".意思是说,逻辑控制器可以控制采样器(samplers)的执行顺序.由此可知,控制器需要和采样器一起使用,否则控制器就没有什么意义了.放在