浅谈定时器之JSR223 定时器

浅谈定时器之JSR223 定时器

JSR223 定时器作为JMeter提供的众多定时器之一,以其高度的灵活性和可编程性脱颖而出,允许用户通过脚本自定义延时逻辑。本文将详细介绍JSR223定时器的特性和使用方法。

JSR223 定时器简介

JSR223 定时器利用了Java平台的JSR 223规范,支持多种脚本语言(如Groovy、JavaScript、Beanshell等)来实现复杂的延时逻辑。与JMeter中的其他定时器相比,它提供了更高级的控制能力,可以基于条件、变量或者复杂的计算来动态设置等待时间。

何时使用JSR223 定时器

● 当需要根据测试数据或响应结果动态调整延时时。

● 实现复杂的时间序列或概率分布模型,如泊松分布延时。

● 需要集成外部系统或服务来决定下一个请求的发送时间。

● 执行特定的预处理任务,如记录时间戳或更新变量,同时引入延时。

配置与使用步骤

步骤1:添加JSR223 定时器

  1. 在JMeter测试计划中,选择你想要添加定时器的线程组。
  2. 右键点击线程组,选择"添加" > "定时器" > "JSR223 定时器"。
    步骤2:配置定时器
    ● 名称:为定时器命名,便于识别。
    ● 脚本语言:从下拉菜单中选择你将使用的脚本语言,默认为Groovy。
    ● 脚本文件:编写延时逻辑的代码区域。例如,使用Groovy编写简单的固定延时:如果我们把脚本区的脚本内容放到一个文件中,比如txt文件,并且把内容拷贝到txt文件中,则文件中的执行内容会覆盖Script中编写的内容。
    ● 如果可用,换成编译脚本:进行脚本缓存

注意事项

● 执行时机:定时器在每个采样器(Sampler)执行前运行,其作用域内的所有采样器都将受其影响。

● 作用范围:确保定时器位于它应影响的采样器之前,并且注意作用域规则,避免不必要的全局延时。

● 性能考量:复杂的脚本可能会影响测试的性能,因此应尽量保持脚本简洁高效。

示例应用

● 动态延时:根据变量或响应数据调整延时时间,例如根据上一个请求的响应时间来动态调整下一个请求的发送时间。

● 条件延时:基于特定条件决定是否引入延时,例如,只有在某个变量达到特定值时才延迟。

应用实例

我们编写如下脚本

线程组:循环次数设置为2次,其他默认

JSR223 定时器:编写如下脚本

java 复制代码
try{
    Thread.sleep(5000);
    }
catch(Expection e){
    e.printStackTrace();
    }
    ```
BeanShell 取样器:编写如下脚本
```java
log.info("test");

运行脚本,查看JMeter日志

2024-07-01 11:47:39,378 INFO o.a.j.u.BeanShellTestElement: test

2024-07-01 11:47:44,393 INFO o.a.j.u.BeanShellTestElement: test

可以看到间隔时间为5秒

总结

JSR223 定时器以其强大的灵活性和扩展性,为JMeter的性能测试提供了丰富的定制能力。通过利用脚本语言,测试人员可以实现各种复杂的延时逻辑,使得模拟真实用户行为更加精准。正确配置和使用JSR223定时器,能够显著提升测试脚本的实用性和准确性。

相关推荐
茶馆大橘8 小时前
微服务系列五:避免雪崩问题的限流、隔离、熔断措施
java·jmeter·spring cloud·微服务·云原生·架构·sentinel
土小帽软件测试14 小时前
jmeter基础01-2_环境准备-Mac系统安装jdk
java·测试工具·jmeter·macos·软件测试学习
土小帽软件测试19 小时前
jmeter基础03_汉化jmeter界面
测试工具·jmeter·软件测试学习
紫晓宁20 小时前
jmeter结合ansible分布式压测--3压测执行
分布式·jmeter·ansible
黑色叉腰丶大魔王21 小时前
《通过 Jmeter 压测存储过程详解》
jmeter
hai405871 天前
基于python主观题自动阅卷系统毕业设计项目
spring boot·python·jmeter·django·make与makefile
程序员小雷2 天前
应对自动化测试中的异步操作:策略与实践
功能测试·selenium·测试工具·jmeter·单元测试·测试用例·postman
奔波儿灞爱霸波尔奔2 天前
JMeter与大模型融合应用之jmeter.properties配置文件新增配置
jmeter
叮当喵是mao2 天前
接口测试(十)jmeter——关联(正则表达式提取器)
jmeter·正则表达式
开水好喝2 天前
JMeter快速造数之数据导入导出
jmeter