jmeter之逻辑控制器

发布时间 2023-03-27 21:54:14作者: 无敌大牛牛

逻辑控制器

  • 优先级

    • 在取样器之前被执行

    • 逻辑控制器起作用,它的下面,一定要挂载启用的取样器

  • 作用域

    • 作用于它的子集取样器

if条件控制器

英文含义:

为了提升性能,建议将“将条件解释为变量表达式”勾选

并使用jexl3或者groovy函数,来评估表达式条件的真假

/*
条件为真时,才会执行控制器下面的取样器
Interpret condition as valiable expression
默认情况下勾选,为true
表示: 条件表达式的**执行结果**必须为真
合的两个函数:使用${\_\_jexl3(,)} ${\_\_groovy(,)}两个函数的计算结果为真
若去除勾选:(去除勾选后,需要计算表达式的结果是否为真,耗cpu)
条件表达式的结果为真;
直接写布尔表达式结果即可,如:1==1
​
​
Evaluate for all children?:条件作用于每个子项进行评估。
默认不勾选;
表示:该控制器可以对在其下面的所有可运行的组件,进行控制执行,但只在入口执行一次。
​
若勾选该选项:
则该控制器在每一个子节点执行时前,执行一次
例:若if控制器下有三个请求,分别别淘宝、京东、百度,若淘宝请求成功才会执行京东,若京东执行成功才会执行百度
*/

__groovy函数

__jexl3两者使用是一样的

JEXL expression to evaluate:填写要计算的表达式

/*
​
==是否等于,如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1。
​
!=不等于,如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1。
​
!非,如${__jexl3(!(${VAR}!=1),)},对${VAR}!=1的结果取反。
​
&&且和||或,如${__jexl3(${VAR}==1 && "${name}" != "张三",)}。
​
>大于或者>=大于等于,如${__jexl3(${count}>=10,)}。
*/

 

  • 条件为真,才会执行控制器下面的取样器

  • 默认情况下勾选true: 条件表达式的执行结果必须为真

    • 结合的两个函数:使用${__jexl3(,)} ${__groovy(,)}

    • 使用两个函数,函数计算结果为真

  • 如果去掉 Interpret condition as valiable expression

    • 条件表达式的结果为真

foreach控制器

明确知道有多少个值,每个变量名称前缀相同,后缀是连续加1,我们可以使用

  • 应用场景

    • 明确值 变量的起始、结束;是明确知道如: user_1 user_2 user_3

      • 如提取获取医院列表的list接口,返回的hospital_id,使用json提取器,添加debug sample可以看到取到值为hospitallD_1,...hospitallD_n

    • 后置处理、从数据库中获取的值

    /*
    输入变量前缀:输入需要遍历的这一组数据的前缀,例如:hospitallD_1、hospitallD_2,hospitallD就是前缀。
    ​
    注意:用户自定义变量,或者是参数化文件中的数据都要这样命名才能遍历
    ​
    开始循环字段(不包含):循环的起始位置,如填0,实际是从第一个开始。
    默认为空也可以
    ​
    结束循环字段(含):
    循环结束的位置,如填4,实际第4个不会被使用,只会到第3个。
    默认为空也可以,程序会循环执行到最后一个变量,再停止
    ​
    */

     

仅一次控制器

每个线程,在运行过程中,不管运行多长时间,都仅会运行一次

jmeter中默认,一个取样器执行一次,就是一个事务

应用场景:

常用于,业务、模块的性能测试

事务控制器

可以把多个取样器合并为一个事务,进行性能统计分析

  • Generate parent sample

    • 默认未勾选

    • 把多个接口合并为一个事务,需要勾选

    • 勾选以后,

      • 查看结果树状显示,事务控制器再最外层,事务控制器里面的样本请求再里面

      • 聚合报告里面,就会仅展示一个事务控制器,里面的请求不会一一展示出来了,此时的指标结果为,该事务控制器下的所有请求相加的结果

    •  

  • Include duration of timer and pre-post processors in generated sample

    • 是否在生成的样本中包括计时器,预处理和后处理延迟。默认值未勾选后。

    • 不建议选择,因为选择会把定时器 + 前后置处理器的时间也计算进来

临界部分控制器

并发和并行的区别

并发:指的是任务数多于cpu核数,通过操作系统的各种任务调度算法,实现多个任务"一起执行"

(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)

并行:指的是任务数小于等于cpu核数,即任务真的是一起执行

  • 作用

    • 把多用户并行执行,强制变成串行

随机控制器

随机取一个取样器执行

随机顺序控制器

打乱下面的取样器执行的顺序,但是所有的取样器都会执行

吞吐量控制器

性能测试中,最主要的一个性能指标值就是tps

参考文档