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?):

则执行的流程图如下:

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

  1. 【JMeter_11】JMeter逻辑控制器__Switch控制器<Switch Controller>

    Switch控制器<Switch Controller> 业务逻辑: 取得switch value的值,通过对节点下所有取样器.逻辑控制器的下标.名称匹配去执行,switch value的 ...

  2. 【JMeter_08】JMeter逻辑控制器__While控制器<While Controller>

    While控制器<While Controller> 业务逻辑: 当条件为非false时,执行该节点下的脚本内容,判断条件包括数字.null.空白.字母.符号.true. 当条件为fals ...

  3. 【JMeter_10】JMeter逻辑控制器__ForEach控制器<ForEach Controller>

    ForEach控制器<ForEach Controller> 业务逻辑: ForEach控制器一般与用户自定义变量/JDBC结果变量一起使用,可以认为他就是一种遍历型循环,该节点下的脚本内 ...

  4. 【JMeter_06】JMeter逻辑控制器__If控制器<If Controller>

    If控制器<If Controller> 业务逻辑: 根据表达式的结果来决定是否执行控制器下的脚本内容,与编程语言中的if判断逻辑大致相同,表达式结果为布尔值 true或false; 当表 ...

  5. 【JMeter_16】JMeter逻辑控制器__随机控制器<Random Controller>

    随机控制器<Random Controller> 业务逻辑: 当每次执行到该逻辑控制器时,随机挑选控制器下的任意一个子节点<取样器.逻辑控制器> Ignore sub-cont ...

  6. 【JMeter_17】JMeter逻辑控制器__随机顺序控制器<Random Order Controller>

    随机顺序控制器<Random Order Controller> 业务逻辑: 当控制器被触发时,将控制器下的所有子节点顺序打乱执行一遍,执行一遍,执行一遍,不是执行一个. 注意:是将子节点 ...

  7. 【JMeter_21】JMeter逻辑控制器__模块控制器<Module Controller>

    模块控制器<Module Controller> 业务逻辑: 可以理解为引用.调用的意思,执行内容为Module To Run种所选的内容,引用范围为当前测试计划内的测试片段.逻辑控制器& ...

  8. jmeter 逻辑控制器

    简单的控制器 简单的逻辑控制器可以让你组织你的采样器和其他 逻辑控制器. 不像其他逻辑控制器,该控制器不提供除此之外的功能 存储设备. 控制面板简单的控制器的截图 参数  在这个例子中,我们创建了一个 ...

  9. JMeter 接口测试-if控制器

    JMeter 接口测试-if控制器 ​ 使用场景: 当业务场景是用户登录才能支付操作, 不登录点击支付, 页面会跳转到登录页面. 对于接口也是这样, 一个接口需要执行前, 需要有前提条件, 比如0状态 ...

  10. JMeter—逻辑控制器(六)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第一节JMeter逻辑控制器 JMeter逻辑控制器可以对元件的执行逻辑进行控制,除仅一次控制器外,其他可以嵌套 ...

随机推荐

  1. exam8.29

    咕了好几篇后... 我终于开始重新写了 T1: 不会,没思路,暴搜还可能会(一开始我以为暴搜时间复杂度为$\Theta (mn ^ k)$) 于是码出了暴搜... 跑一遍$(4,4,5)$,然后... ...

  2. DOM Composition 事件

    做实时的表单表单校验时,如果输入的是非拉丁语言,那你可能会遇到下面的问题: 如上图所示,文本框不允许输入 ' 之类的特殊字符,当用户在敲击拼音.还未最终输入时就已经触发了校验,提示输入不合法,有点尴尬 ...

  3. P3478 [POI2008]STA-Station

    题目描述 The first stage of train system reform (that has been described in the problem Railways of the ...

  4. ros python 构造 pose

    #!/usr/bin/env python import numpy as npfrom geometry_msgs.msg import Pose, Point, Quaternion, Twist ...

  5. NPM私有包部署到私有仓库

    NPM私有包部署到私有仓库1.项目部署到NPM2.私有仓库的搭建1,项目部署到NPM注册NPM账号注册地址:https://www.npmjs.com/ 注册完成后进入邮箱验证 账号登录 npm lo ...

  6. Vue插槽详解

    简介 插槽:简单理解就是组件内部留一个或多个的插槽位置,可供组件传对应的模板代码进去.插槽的出现,让组件变的更加灵活. 一.匿名插槽 // 组件(父) <my-component> < ...

  7. Spring和Quartz整合实现定时任务调度

    在Spring中可以很方便的使用Quartz来实现定时任务等功能,Quartz主要就是Schedule(任务调度器),Job(作业任务)和Trigger(触发器)三者的关系. 实现方式有多种,在此就介 ...

  8. 使用 If-Then-Else 逻辑进行分支

    If-then-else 逻辑看似简单,功能却十分强大,它可以根据不同条件执行不同的操作.If-then-else 逻辑可理解为:如果某个条件为 true (IF),则执行某个操作:如果条件为 fal ...

  9. 远程控制软件 mRemoteNG,管理多台虚拟机

    #下载 1.官网下载:https://mremoteng.org/2.当然也可以到这里下载:https://pan.baidu.com/s/11O_QNM3HudN3IyTiqqHmrQ,提取码:jm ...

  10. hwclock设置时间的调用过程是怎样的?

    调用过程如下: hwclock -w -> xioctl(RTC_SET_TIME); -> rtc_dev_ioctl() -> rtc_set_time()