jmeter逻辑控制器和定时器

一、认识逻辑控制器

一、作用:⼀个事务会包含并请求

在这里插入图片描述

二、常见逻辑控制器介绍

1、simple controller

作用:把一系列请求聚合在一起,方便进行管理

2、recorder controller

作用:把录制的请求存放在下面

3、loop controller

作用:指定其子节点运行的次数,可以使⽤具体的数值,也可以使用变量

  • 1、Forever选项:表示⼀直循环下去
  • 2、如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的⼦节点运⾏的次数为两个数值相乘的结果
    在这里插入图片描述
    例子:这里添加了loop controller,然后在里面设置百度跑5次,然后知乎在控制器外,只设置1次,所以这里百度跑5次,知乎跑1次
    在这里插入图片描述

4、random controller

作用:随机执行其下的某个子结点Demo
例子:这里随机控制器里面有3个,每次都随机执行其中任意一个
在这里插入图片描述

5、if controller

作用:某个判断
例子:上一个请求成功才能执行下一个请求(可以做条件判断,避免写入脏数据,在一些简单场景下可以替代后置处理器,做简单的逻辑判断)

  • 首先我们在上面添加谷歌的sample(访问不了,肯定会失败)
  • 然后我们在if逻辑控制器里添加这个条件
    ps:JMeterThread.last_sample_ok 这个参数表示接口是否请求成功,返回true或者false
    在这里插入图片描述
  • 最后我们在if控制器里面添加百度的sample,然后运行,这里发现因为Google访问失败,故访问百度没有执行
    在这里插入图片描述

6、module/include controller

作用

  • module controller:把其他模块module当做自己的下属模块复用
  • include controller:把其他test plan引用进来当做一个完整的处理逻辑使用
    在这里插入图片描述

7、transaction controller

作用:一个事务会包含并请求
讲这个之前,我们需要先了解TPS和QPS

  • QPS:每秒钟处理完请求的次数:注意这里是处理完。具体是指发出请求到服务器处理完成返回成功结果。可以理解有个counter,每处理一个请求+1,1s后counter=QPS
  • TPS:每秒钟处理完的事务次数,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡量单个接口服务的处理能力,用QPS比较多
  • 如果一个事务只包含一个请求,那他们的数据是一致的,如果一个事务有多个请求相互关联,那他们的内容就会不同,我们关注的一般是事务而不是请求的耗时,这个时候我们就可以添加事务控制器了
    例子:这里可以看到事务会把两个的结果相加
    在这里插入图片描述

三、Jmeter定时器

一、作用:

实际操作中,模拟真实⽤户在操作过程中的等待时间

二、常用定时器

1、固定定时器(Constant Timer)

设置固定时间,比如我们设置每隔3s执行一次
在这里插入图片描述

2、高斯随机定时器(Gaussian Random Timer)

在这里插入图片描述

设置随机时间执行

  • Deviations (milliseconds) ⾼斯定时器参数,从100毫秒里随机选择一个作为高斯分布的时间点
  • Constant Delay Offset (milliseconds) 固定等待时⻓,也是毫秒为单位
  • 两者加在一起就是总的延迟时长
  • 这个功能互联网行业不太用到,因为互联网行业认为用户是无时无刻都会来访问的,传统行业用的较多

在这里插入图片描述

3、常数吞吐量定时器(Constant Throughput Timer)

常用,重点掌握!

在这里插入图片描述

  • 产生背景:线程组无法控制TPS,QPS,只能控制线程数(并发用户数),如我想用100线程并发模拟1000QPS的任务,但是实际操作有时候会超过1000QPS,导致服务挂掉,这个时候我们就需要用到吞吐量定时器
  • Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这⾥的值应该是1200 。
  • Calculate Throughput based on:有5个选项,分别是:
    • This thread only:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以线程的数量。
    • All active threads:设置的target Throughput 将分配在每个活跃线程上,每个活跃线程在
      上⼀次运⾏结束后等待合理的时间后再次运⾏。活跃线程指同⼀时刻同时运⾏的线程。
    • All active threads in current thread group:设置的target Throughput将分配在当前线程组的每⼀个活跃线程上,当测试计划中只有⼀个线程组时,该选项和All active threads选项的效果完全相同。
    • All active threads (shared ):与All active threads 的选项基本相同,唯⼀的区别是,每个活跃线程都会在所有活跃线程上⼀次运⾏结束后等待合理的时间后再次运⾏。
    • All cative threads in current thread group (shared ):与All active threads in current thread group 基本相同,唯⼀的区别是,每个活跃线程都会在所有活跃线程的上⼀次运

例子:
比如有个订单的线程组,我们设置20个并发用户同时下单,吞吐量设置为1200

在这里插入图片描述
在这里插入图片描述
100个用户浏览门店商品,吞吐量设置为6000
在这里插入图片描述
在这里插入图片描述
我们可以通过配置线程数和吞吐量等方式来控制事务的QPS

小TIPS:
如果希望在 sampler 执⾏完之后再等待,则可以使⽤Test Action,5.0 叫 Flow Control Action(sampler-flow control action)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter中的If控制器可以用于根据某些条件来控制测试计划中的执行流程。如果条件为真,则执行If控制器中的所有子元素,否则跳过它们。 以下是If控制器的使用步骤: 1. 添加If控制器:在测试计划中右键单击线程组,选择添加 -> 逻辑控制器 -> If控制器。 2. 添加条件:在If控制器中添加一个条件,可以使用函数、变量或表达式来定义条件。 3. 添加子元素:如果条件为真,则执行If控制器中的所有子元素。因此,在If控制器中添加需要执行的子元素,如HTTP请求、数据库请求等。 4. 配置条件:在条件中输入函数、变量或表达式,以便JMeter可以根据条件来控制执行流程。 5. 运行测试计划:运行测试计划并观察执行流程是否符合预期。 示例: 假设我们需要在测试计划中添加一个If控制器,以便在响应时间大于5秒时暂停5秒钟。可以按照以下步骤操作: 1. 添加If控制器:右键单击线程组,选择添加 -> 逻辑控制器 -> If控制器。 2. 添加条件:在条件中输入${__jexl3(${JMeterThread.last_sample_ok} && ${JMeterThread.last_sample_time}>5000)}。此条件使用JEXL函数和变量来检查最后一个样本的响应时间是否大于5秒。 3. 添加子元素:在If控制器中添加一个定时器,设置时间为5000毫秒。 4. 配置条件:在条件中输入函数、变量或表达式。 5. 运行测试计划:运行测试计划并观察执行流程是否符合预期。如果响应时间大于5秒,则会暂停5秒钟。否则,不会执行暂停操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值