问题描述

在JMeter中添加了If Controller控制器,然后再控制器的表达式输入框中输入了预先构造的为“真”条件,执行Run发现结果树中并没有监控到执行的记录。

问题分析

在最新版JMeter(目前版本:4.0)中,打开If Controller的界面,发现Express输入框上方有一段警告类型的提示语,如下:

 
 

"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
  2. 或者可输入值为true/false的变量
  3. ${JMeterThread.last_sample_ok}可用于检测最后一个取样器是否成功执行

从上可知,对于新版本JMeter中的If Controller,在Expression输入框中直接输入判断的表达式,如1 == 1${threadNum} > 2,而不做求值计算(true/false)就执行JMeter是没有效的,达不到预期的效果

预期:条件为真,会执行并监控到相关记录
实际:条件未能被识别,不会执行和监控到记录

PS:网络上搜索到有一部分教程是采用JMeter比较早期的版本(如:2.x版本),直接就写判断的表达式,并没有作真假求值运算也能被识别(目前因采用4.x新版本的JMeter,暂未验证低版本的情况)

解决方案

利用JMeter自带的函数助手(Function Helper)中的__jexl3函数或__groovy函数,对判断条件的表达式进行求值计算,生成对应的求值运算函数,然后将此运算函数复制到If Controller的Expression输入框中即可

 
__groovy函数
 
__jexl3函数

PS:直接在Expression输入框中输入true或false也是可以起到控制节点是否执行的判断依据

实际使用如下:

作者:Fighting_001
链接:https://www.jianshu.com/p/57b3970c83b8

最新文章

  1. Smarty的基本使用与总结
  2. Log4net入门(帮助类篇)
  3. .net程序部署(setupFactory)
  4. iOS-旧项目中手动内存管理(MRC)转ARC
  5. select 练习2
  6. HDOJ-三部曲-多重背包-1014-Cash Machine
  7. C#_IComparable实例 - 对象ID进行排序
  8. css布局小技巧 2016.03.06
  9. 页面显示磁盘空间使用情况-Agedu
  10. 基于FPGA的信号消抖
  11. ssl协议以及生成
  12. 关于JWPlayer播放器的一些测试学习
  13. ECMAScript中所有的函数的参数都是按值传递的
  14. 001-为什么Java能这么流行
  15. Python爬取地图瓦片
  16. Windows 10 安装过程中,在自定义登录页面进入审核模式
  17. Spring Cloud各组件超时总结
  18. 软工实践-Beta 冲刺 (7/7)
  19. 【 Linux 】单台服务器上并发TCP连接数
  20. 详解Python中的下划线

热门文章

  1. Python补充4——替换与修改
  2. Java 同一个类的不同实例对象竟然可以相互访问各自的private成员
  3. 怎样获取从服务器返回的xml或html文档对象
  4. react 管理平台
  5. 在eclipse导入项目的步骤
  6. 8.JSP与JavaBean
  7. OSI网络通信工作流程的标准化 ----- 理论
  8. vi和vim的使用
  9. centos能进入命令行界面,进不了图形界面
  10. 拆机联想ideapad s500