Jmeter学习-逻辑控制器

1.For Earch控制器

1.1介绍

ForEach控制器一般和用户自定义变量一起使用,从用户自定义变量中读取一系列相关的变量。

ForEach控制器遍历读取不同的变量值,来控制其下的采样器或控制器执行一次或多次。

添加ForEach控制器组件操作:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> ForEach控制器。

  • 第一个参数:

    • Input Variable Prefix:输入变量名的前缀,默认为一个空字符串作为前缀。
  • 第二个参数:

    • Start index for loop(exclusive):循环起始索引,需要注意的是,循环操作不包含此索引值起始索引默认是从1开始,比如,填0时,其实是从1开始,若填2时,其实是从3开始算。
  • 第三个参数:

    • End index for loop(inclusive):循环结束索引。需要注意的是,循环操作包含此索引值比如,此处填10,那么循环执行时,会循环执行到索引10
  • 第四个参数:

    • Output variable: 输出变量名,也就是此变量名,在后续的操作中可以直接引用。比如,此处填city,那么其他地方引用时可以用${city}
  • 第五个参数:

    • Add”_”before number勾选变量名与索引之前有下划线"_",比如:city_1。不勾选,变量名与索引之前无下划线“—”,比如:city1。

2.2 示例


场景:搜索出商品列表,拿到商品id,然后将所有商品加入购物车,再删除加入的商品

2.2.1 搜索商品拿到id,json提取器提取需要的id

2.2.2 添加for each 逻辑控制器-调用获取的id
右键 —> 添加 —> 逻辑控制器 —> ForEach控制器

备注不填写for each循环控制器的起始值和结束值,默认从第一个到结束。

未填正常运行

 

2.IF控制器

2.1介绍

 在使用Jmeter做性能测试、接口自动化测试时,需要针对不同的条件,进行不同的操作,此时,可以使用JMeter中的如果(If)控制器来实现。

1、控制器作用

JMeter中的如果(If)控制器,主要是用来控制它下面的测试元素是否执行。如果判断为真(True)那就执行,否(false)就不执行。

2、控制器添加

如果(If)控制器组件添加位置:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> 如果(If)控制器,如图所示:

 3.参数说明

 

  • 第一个参数:

    • Expression (must evaluate to true or false) :表达式(结果值必须是true或false)。在右边文本框中输入的条件值必须是true 或 false。
  • 第二个参数:

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

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

    • use status of last sample: 作用就是只有当上一个请求成功后,才会执行if控制器下的请求。

注意:

1、文本框上的黄色感叹号,就是建议采用默认的jexl3 or groovy 表达式,以提高性能。

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

三、表达式说明

1、jexl3 or groovy 表达式

  • jexl3表达式格式   

    ${__jexl2("${page}"=="baidu")}
  • groovy 表达式 

    ${__groovy("${page}"=="baidu",)}
  • 逻辑表达式说明

    • ==
      • 含义:是否等于
      • 示例:如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1。
    • !=
      • 含义:不等于
      • 含义:如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1。
    • !
      • 含义:非
      • 示例:如${__jexl3(!(${VAR}!=2),)},对${VAR}的值不等于2,其判断为真,那么执行IF下的子项。
    • &&
      • 含义:并且
      • 示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"均为真时,执行IF控制器下的子项。
    • ||
      • 含义:或
      • 示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"其中一项为真时,执行IF控制器下的子项。
    • >=
      • 含义:大于等于
      • 示例:如${__jexl3(${count}>=15,)}。也就是${count}>=15,其判断为真,那么执行IF控制器下的子项。

注意:

如果判断表达式是字符串,此时,必须要用引号,变量都认为时字符串的形式,如:${__jexl3("${name}"=="成都",)},不能用${__jexl3(${name}=="成都",)}

2、函数助手调用

启动jmeter界面后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctrl+Shift+F1),如下图所示:

 

3、JavaScript表达式

采用JavaScript其实就是在如果(IF)逻辑控制器中,取消勾选Interpret Condition as Variable Expression?选项,如图所示:

 

 

  • 数字表达式

    highlighter- actionscript

    ${var}==1
  • 字符串表达式

    highlighter- bash

    "${var}"=="字符串"

    注意:如果${var}参数化变量取到的值本身就带双引号,则前边不需要加双引号。

  • 布尔值表达式

    highlighter- actionscript

    ${var}

    注意:布尔值变量必须都是小写的

注意:${var}表示参数化变量的引用。可以引用自定义变量,或者CSV文件读取到的数据,在或者是上一个请求中提取来的值。

四、采用默认函数形式(推荐)

采用默认函数形式,也就是采用默认的jexl3 or groovy 表达式,在此,用示例演示一下,if逻辑控制器的使用方法。

首先,添加用户定义变量,后续接口根据变量,判断执行哪一个请求

 

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一款功能强大的性能测试工具,它提供了多种性能测试组件来帮助用户进行性能测试。其中一些常用的组件包括: 1. 线程组(Thread Group):用于模拟并发用户。可以设置线程数、启动时间、循环次数等参数。 2. HTTP请求(HTTP Request):用于发送HTTP请求并接收响应。可以设置请求的方法、URL、参数、头部信息等。 3. 监听器(Listener):用于收集和展示测试结果。常见的监听器有查看结果树(View Results Tree)、聚合报告(Aggregate Report)、图表画板(Graph Results)等。 4. 断言(Assertion):用于验证响应内容是否符合预期。可以根据响应的状态码、响应头、响应正文等进行断言。 5. 定时器(Timer):用于设置请求之间的时间间隔,模拟真实的用户行为。 6. 配置元件(Config Element):用于配置测试环境,例如设置Cookie、设置HTTP头部信息等。 7. 逻辑控制器(Logic Controller):用于控制测试计划的执行流程,例如循环控制器(Loop Controller)、条件控制器(If Controller)等。 除了以上列出的组件,JMeter还支持更多的功能和组件,如交替控制器、事务控制器、邮件发送器等,用户可以根据实际测试需求选择和配置相应的组件。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [这绝对是csdn写的最全面最详细的jmeter常用10大组件以及组件的执行顺序和作用域,附带视频教程。](https://blog.csdn.net/IKUN669/article/details/130347035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值