一、If Controller概述

  类似于编程语言中if语句,根据给定表达式的值决定是否执行该节点下的子节点,表达式的值

为true则执行,为false则不执行,默认使用javascript语法进行判断。

官方文档:https://jmeter.apache.org/usermanual/component_reference.html#If_Controller

二、配置项说明

Name:组件的名称,可以自定义

Comments:注释,可以自定义对该组件的说明

Expression (must evaluate to true or false) :表达式(值必须是true或false)

Interpret Condition as Variable Expression?:将条件解释为变量表达式,此项默认勾选

Evaluate for all children?:条件作用与每个子节点,默认不勾选,仅在If Controller入口处判断一次

  这里,我们注意下黄色感叹号处的提示:

 "For performance it is advised to check "Interpret Condition as Variable Expression"

 and use __jexl3 or __groovy evaluating to true or false or a variable that contains true or false.


 ${JMeterThread.last_sample_ok) can be used to test if last sampler was successful"
1.在Expression输入框中,建议将判断条件解释为变量表达式,并使用__jexl3函数或__groovy函数对该变量表达式
求值为true/false,或者可输入值为true/false的变量。
2. ${JMeterThread.last_sample_ok} 可用于检测最后一个取样器是否成功执行。

三、实践场景

3.1 默认勾选“interpret condition as variable expression”的用法

  此时,If Controller的Expression输入框中不能直接填写判断条件的表达式,需要利用__jexl3函数或

__groovy函数将条件表达式求值计算为true/false才有效。表达式可以自己写,也可以利用Jmeter函数

助手Function Helper Dialog来生成。

  把生成的表达式复制到Expression输入框,添加View Results Tree,运行,以HTML格式查看结果。

3.2 不勾选“interpret condition as variable expression”的用法

  可以直接在Expression输入框中输入需要的表达式,然后运行,查看结果。

  执行成功,我们可以看到,不勾选“interpret condition as variable expression”时,黄色感叹号处

的提示文字已由黑色变成了红色,建议使用默认勾选,以提高性能。

3.3 表达式中使用变量

  在实际的工作中,可能会需要根据用户变量或者上一个取样器的返回值来进行条件判断,从而决

定是否需要执行某一个的取样器。

  1.新增一个User Defined Variables(用户自定义变量)“ title ”,当title的值为半醉半醒半浮生时才

会执行访问半醉半醒半浮生的博客取样器。

  2.在表达式中引用自定义变量:${__groovy('${title}'=='半醉半醒半浮生',)}

3.4 勾选“Evaluate for all children”的用法

  假定场景:If Controller下的取样器执行后,在某个子节点改变了变量的值,那么该子节点后面的

取样器还会继续执行吗?

  我们对上面的脚本进行调整,勾选“Evaluate for all children”并新增两个取样器。

  添加前置处理器,Add >>> Pre Processors >>> JSR223 PreProcessor,改变“ title ”的值为“测试之家”

  执行逻辑分析,If Controller的表达式为: ${__groovy('${title}'=='半醉半醒半浮生',)} ,按照顺序

应该会执行控制器下面的三个取样器,但是在执行完“访问半醉半醒半浮生的博客”后,变量的值被修改为

“测试之家”,不满足表达式的条件,所以最后一个取样器不会被执行。

3.5 不勾选“Evaluate for all children”的用法

  在上面的场景中,如果我们不勾选“Evaluate for all children”,“访问半醉半醒半浮生博客SoapUI系列

文章”这个取样器会不会被执行呢?我们把复选框的勾选去掉,运行查看结果。

四、注意事项

1.条件判断语句若是字符串,则需要用引号包围参数,如:"user" == "test001"

2.If Controller之下的请求才会受到If控制器的约束,若是平级则不会受约束,因此建议将业务请求放在

If控制器之下进行测试。

Jmeter逻辑控制器之If Controller的使用解析的更多相关文章

  1. JMeter学习-013-JMeter 逻辑控制器之-如果(If)控制器

    前文简述了 JMeter 如何通过 HTTP Cookie管理器,实现了在不执行登录操作的情况下,通过 Cookie 实现登录态的操作,具体请参阅:JMeter学习-012-JMeter 配置元件之- ...

  2. Jmeter之逻辑控制器(Logic Controller)

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  3. Jmeter之逻辑控制器(Logic Controller)【转】

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  4. (四)Jmeter之逻辑控制器(Logic Controller)

    Jmeter之逻辑控制器(Logic Controller) 前言: 1. Jmeter官网对逻辑控制器的解释是:“Logic Controllers determine the order in w ...

  5. 性能测试之jmeter逻辑控制种类详解一

    逻辑控制器介绍 Jmeter逻辑控制可以对元件的执行逻辑进行控制,除Once only Controller仅一次控制器以外,其他控制器都可以可以嵌套其他种类的控制器,下面是jmeter5.3支持的控 ...

  6. 白话ASP.NET MVC之三:Controller是如何解析出来的

    我们在上一篇文章中介绍Controller激活系统中所涉及到的一些类型,比如有关Controller类型的相关定义类型就包括了IController类型,IAsyncController类型,Cont ...

  7. JMeter 逻辑控制之While循环控制器(While Controller)

    逻辑控制之While循环控制器(While Controller)   by:授客 QQ:1033553122 测试环境 apache-jmeter-2.13 1.   添加While Control ...

  8. 性能测试工具JMeter 基础(九)—— 测试元件: 逻辑控制器之交替控制器

    交替控制器:根据被控制器触发执行次数,去依次执行控制器下的子节点(逻辑控制器.采样器),可以由线程组的线程数.循环次数.逻辑控制器触发. 交替控制器(lnterleave Controller) 简单 ...

  9. 性能测试工具JMeter 基础(八)—— 测试元件: 逻辑控制器之事物控制器

    事物控制器是将控制器下的所有取样器作为一个事物统计.分析 事物控制器(Transaction Controller) 事务控制器一共有两个选项: Generate parent sample:默认不勾 ...

随机推荐

  1. Monster Audio 使用教程(二)效果参数的保存

    点击左上角主菜单按钮,点击[保存]菜单,即可保存当前的所有效果参数. [另存为]菜单,则是把当前参数另存一个名称,然后通过[切换效果]菜单,实现效果的切换.  独立保存单个音轨的效果 点击音轨对应的[ ...

  2. nginx 的return配置

    该指令一般用于对请求的客户端直接返回响应状态码.在该作用域内return后面的所有nginx配置都是无效的. 可以使用在server.location以及if配置中. 除了支持跟状态码,还可以跟字符串 ...

  3. 蒲公英 · JELLY技术周刊 Vol.16 谷歌首个线上 Web 开发者大会

    蒲公英 · JELLY技术周刊 Vol.16 近期,谷歌有史以来的第一次线上谷歌 Web 开发者大会,Web Vitals.PWA.DevTools 和 Lighthouse 6.0 等一系列特性或产 ...

  4. PHP ftruncate() 函数

    定义和用法 ftruncate() 函数把打开文件截断到指定的长度. 如果成功则返回 TRUE,如果失败则返回 FALSE. 语法 ftruncate(file,size) 参数 描述 file 必需 ...

  5. PHP crc32() 函数

    实例 输出 crc32() 的结果:高佣联盟 www.cgewang.com <?php $str = crc32("Hello World!"); printf(" ...

  6. CF EC 86 E Placing Rooks 组合数学

    LINK:Placing Rooks 丢人现场.jpg 没看到题目中的条件 放n个rook 我以为可以无限放 自闭了好半天. 其实只用放n个.那么就容易很多了. 可以发现 不管怎么放 所有列/所有行 ...

  7. Spring Security和Swagger2集成报错

    出现问题的项目算是一个新项目,但基本的脚手架代码是从另一个项目里迁过来的,原项目并没有报错,只有新项目才报异常.看报错内容,判断发生冲突的主要是spring-boot-starter-security ...

  8. 【SCOI2008】奖励关 题解(状压DP+期望)

    题目链接 题目大意:给定$n$个宝物,每次随机抛出一个宝物,奖励分数为$p_i$.但如果选这个宝物必须选过它的前置宝物集合.共进行$K$轮问最优策略下的期望. $n\leq 15,-10^6\leq ...

  9. Linux输出缓存你知道多大吗?

    今天看到这个代码很简单,就是验证一下Linux系统的输出缓存大小.当 猜一下这个代码的输出: #include <stdio.h> #include <string.h> #i ...

  10. 新老版本vue-cli的安装及创建项目等方式的比较

    vue-cli 3.0 正式版于2018年8月发布,截至到2020年08月05日版本已经更新到4.4.6.Vue CLI 的包名称由 vue-cli 改成了 @vue/cli,目前网上很多的Vue项目 ...