jmeter(21)逻辑控制器 之 if控制器

摘要:
查看以下列:场景:在上面的示例中,if控制器下有三个采样器。变量ischildren的初始值为y,if控制器的条件为:${__jexl3}。

jmeter(21)逻辑控制器 之 if控制器第1张

一. 如果(If)控制器

实践操作可参考博文:https://testerhome.com/topics/12300 

使用if控制器有两种方式:
1.不勾选“interpret condition as variable expression”
直接输入我们需要判断的表达式即可判断表达式为真时,执行if控制器下的请求,例如“1!=2”,则一定会执行下面的http请求
jmeter(21)逻辑控制器 之 if控制器第2张

2.勾选“interpret condition as variable expression”
这时expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有_jexl3和_groovy,例如:直接填写${modelId}==5,是不能识别的
步骤a.借助函数助手,生成表达式
jmeter(21)逻辑控制器 之 if控制器第3张

步骤b.把生成的表达式,写在if控制器中
jmeter(21)逻辑控制器 之 if控制器第4张

c.然后if控制器就可以读取到判断内容啦,当条件为true时,执行下面的请求。   参考原文链接:https://blog.csdn.net/haiou24/article/details/83545442

给大家分享下Jmeter中 如果(if)控制的使用和应用

如下图:线程组 > 添加 > 逻辑控制器 > 如果 (if) 控制器

jmeter(21)逻辑控制器 之 if控制器第5张jmeter(21)逻辑控制器 之 if控制器第6张

Expression (must evaluate to true or false) :表达式(值必须是true或false),也就是说,在右边文本框中输入的条件值必须是true 或 false,(默认情况下)

Interpret Condition as Variable Expression?默认勾选项,将条件解释为变量表达式(需要使用__jexl3 or __groovy 表达式)

Evaluate for all children?条件作用于每个子项(具体理解见后面的列子说明)

注:

1、文本框上的黄色感叹号,就是提示你,建议采用__jexl3 or __groovy 表达式,以提高性能,也就是默认的方式。

2、if 控制器 只能作用于其下的子项

一、默认用法,采用__jexl3 or __groovy 表达式

如下图,if 控制器 下 有一个 访问百度首页 的取样器,只有if条件满足时,才会执行该取样器。采用默认方式,将条件1==1,放入 __jexl3表达式中。
${__jexl3(1=1,)}
Tools--函数助手--
jmeter(21)逻辑控制器 之 if控制器第7张

jmeter(21)逻辑控制器 之 if控制器第8张

 如果不知道表达式如何使用,可使用Jmeter 的函数助手,如下:

jmeter(21)逻辑控制器 之 if控制器第9张

 二、直接输入条件

如下图,去掉 “Interpret Condition as Variable Expression?” 前面复选框,就可以直接输入条件 1==1。访问百度首页的取样器将被执行。

jmeter(21)逻辑控制器 之 if控制器第10张

 三、条件中使用变量

很多情况下,需要根据用户变量或者上一个取样器的返回值来进行条件判断,觉得是否需要执行某一个的取样器。这句话很启发!!
适用于测试的各个场景,比如if控制器判断上个接口是审核接口响应返回失败,就执行放在if控制器下的提交接口以便再试一次提交,然后if控制器再次如果审核成功就继续往下走流程。。

如下,新增一个用户变量:ischildren。条件:ischildren 的值为 y 的时候,才执行 访问百度首页 的取样器。

jmeter(21)逻辑控制器 之 if控制器第11张

 jmeter(21)逻辑控制器 之 if控制器第12张

 或者可以用表达式:${__jexl3("${ischildren}"=="y",)}。

四、Evaluate for all children? 的用法

在 上面了解了条件中如何使用变量,那么如果 if 控制器下的取样器执行后,改变了该变量的值,if 控制器下其后的取样器还会被执行吗?看看下面的列子:

jmeter(21)逻辑控制器 之 if控制器第13张

jmeter(21)逻辑控制器 之 if控制器第14张

场景:上面例子中,if 控制器下,有3个取样器,变量 ischildren 的初始值为y,if 控制器的条件为:${__jexl3("${ischildren}"=="y",)}。

开始满足条件,那么应该执行 1访问百度首页 、2访问百度新闻页、3访问百度贴吧 3个取样器,

但是 2访问百度新闻页 执行后,将ischildren 的值变了 n,已经不能满足 "${ischildren}"=="y" 条件。

所以 访问百度贴吧 这个取样器不会被执行。

jmeter(21)逻辑控制器 之 if控制器第15张

如果这个时候,去掉  Evaluate for all children? 的勾选,会发生什么呢,大家可以自己动手试试。
猜想:只作用于第一个请求???



补充:

条件有:

==  等于,如 1==1 或 ${__jexl3(1==1,)}

> 、< 大于 小于,如 2>1,1<2,或 ${__jexl3(2>1,)}    

>=、<= 大于等于  小于等于,如 2>=1 ,或 ${__jexl3(2>=1,)} 

!=、!不等于,非,如 "y"!="n",非 则取 != 的反值

多条件可用:|| 或,&& 和,如:2<5 && 2>1,${__jexl3(2<5 && 2>1,)}

另外,如果时字符串必须要用引号,变量都认为时字符串的形式,如:${__jexl3("${ischildren}"=="y",)}

 参考博文:https://www.cnblogs.com/sandymonk/p/11506222.html
我觉得博主写的很棒!赞一个!很清晰。

免责声明:文章转载自《jmeter(21)逻辑控制器 之 if控制器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇终于理解二级指针的作用了SpringBoot使用MyBatis-Generator详解-copy下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jmeter认知(一)

1.解释什么是jmeter?   jmeter是一款java开源工具,用于性能负载测试。它旨在分析和衡量web应用程序和各种服务的性能和负载功能行为。 2.说明jmeter的工作原理?   jmeter就像一群将请求发送到目标服务器的用户一样。它收集来自目标服务器的响应以及其他统计数据,这些统计数据通过图形或表格显示应用程序或服务器的性能。 3.说明可以在...

Jmeter进阶篇之逻辑控制器

最近,遇到了一个困扰很多人的问题。情景如下: 业务流程:登录一个网站,反复进行充值。 通常的做法是使用jmeter对登录和充值的接口进行反复的执行: 但是实现的方法却不能完美的贴合业务流程。并且,在进行压测的时候,总不可能把登录接口也一起压了吧。 因此,就需要用到jmeter的逻辑控制器了。那啥是逻辑控制器呢? Jmeter官网对逻辑控制的解释是:Lo...

Jmeter 正则表达式提取Response Headers,Response Body里的值

实践过程中遇到需要提取Response Headers,Response Body里的值 一、获取Response Body的值,这里采用json提取器形式 1、Response Body返回值,如下图,要获取ticket的值 2、新建json提取器,获取ticket的值 下图新建json提取器步骤 上图参数: names of createdVar...

拥有心动的jmeter图表报告

jmeter一直以来由于开源备受读者青睐,不像loadrunner必须要懂C 而且好学好用,简单易懂,对于初学者再合适不过了 但是它缺点是只支持java代码 那么jmeter既然方便好用,它的测试报告除了我们添加的聚合报告可以在GUI页面预览 在 NO GUI时如何展示出漂亮的报告呢? 步骤一:修改jmeter.properties配置(bin目录) 去掉...

jmeter上传文件同时带有参数

在jmeter中上传文件时同时带有参数。主要问题有两个: 第一是jmeter中「参数」模块的字段值是什么, 第二是jmeter中「文件上传」模块的字段值是什么,以及上传文件的MIME类型是什么。 》如下图,在浏览器中上传文件,network中查看上传接口,有请求地址、authorization(一般是登录接口返回的token,这里作为参数用来身份识别)、F...

Jmeter脚本增强之参数化(多方式实现)(6)

参数化的场景: ①在插入记录时,数据库对某些字段唯一限制,这时需要参数化(不能传固定参数) ②在压测过程中,比如登录操作,需要使用不同的用户登录,模拟真实的使用场景(避免数据库查询缓存),模拟500并发,需要500个不同的用户账号 这种方式通常被称为数据驱动测试(Data Driven Test),参数的取值范围被称为数据池(Data Pool)。 支持如...