当前位置: 首页 > news >正文

【Jmeter】设置线程组运行顺序的方法

方法 1:使用 Test Action + If Controller(推荐)

步骤:

  1. 禁用默认的并行执行

    • 确保 测试计划 的配置中 不勾选 Run Thread Groups consecutively (i.e. one at a time)(默认不勾选,表示并行执行)。

    • 如果勾选,所有线程组会按顺序执行,但可能影响某些场景的测试。

  2. 使用 If Controller 控制执行顺序

    • 在第一个线程组的最后添加一个 BeanShell PostProcessor 或 JSR223 PostProcessor(推荐),设置一个全局变量:

      java

      vars.put("THREAD_GROUP_1_DONE", "true");
    • 在第二个线程组的开始添加 If Controller,条件为:

      text

      ${__jexl3(vars.get("THREAD_GROUP_1_DONE") == "true",)}
    • 这样第二个线程组会等待第一个完成后才执行。


方法 2:使用 Critical Section Controller(插件)

步骤:

  1. 安装插件

    • 从 JMeter Plugins Manager 安装 Custom Thread Groups 或 Inter-Thread Communication 插件。

  2. 使用 Critical Section Controller

    • 在每个线程组前添加 Critical Section Controller,并设置相同的 锁名称(如 LOCK_1)。

    • 这样同一时间只有一个线程组能运行。


方法 3:使用 Module Controller + Test Fragment

步骤:

  1. 创建 Test Fragment

    • 右键测试计划 → Add → Test Fragment

    • 将每个线程组放入不同的 Test Fragment

  2. 使用 Module Controller 按顺序调用

    • 创建一个 主线程组,使用多个 Module Controller 按顺序调用 Test Fragment


方法 4:使用 setUp Thread Group 和 tearDown Thread Group

步骤:

  1. setUp Thread Group

    • 用于初始化(最先执行)。

  2. 普通线程组

    • 默认并行执行,但可以通过 If Controller 控制顺序。

  3. tearDown Thread Group

    • 用于清理(最后执行)。


方法 5:拆分测试计划 + 命令行顺序执行

步骤:

  1. 拆分测试计划

    • 将每个线程组保存为单独的 .jmx 文件(如 group1.jmxgroup2.jmx)。

  2. 使用 Shell/Batch 脚本顺序执行

    bash

    jmeter -n -t group1.jmx -l result1.jtl
    jmeter -n -t group2.jmx -l result2.jtl

总结

方法适用场景是否需要插件备注
If Controller + 变量控制简单顺序执行❌ 不需要推荐
Critical Section Controller需要锁机制✅ 需要插件适合复杂逻辑
Test Fragment + Module Controller模块化测试❌ 不需要适合大型测试
setUp/tearDown Thread Group初始化和清理❌ 不需要JMeter 内置
拆分 JMX + 命令行执行完全独立运行❌ 不需要灵活性高

推荐

  • 如果只是简单按顺序执行,使用 If Controller + 变量控制(方法 1)。

  • 如果需要更高级控制,使用 Critical Section Controller(方法 2)。

  • 如果是大型测试,使用 Test Fragment + Module Controller(方法 3)。

http://www.lryc.cn/news/613977.html

相关文章:

  • Baumer相机如何通过YoloV8深度学习模型实现危险区域人员的实时检测识别(C#代码UI界面版)
  • 利用千眼狼sCMOS相机开展冷离子云成像与测量实验
  • 平板探测器的主要技术指标
  • Spring Boot 优雅配置InfluxDB3客户端指南:@Configuration + @Bean + yml实战
  • C# 异步编程(GUI程序中的异步操作)
  • 从浅拷贝到深拷贝:C++赋值运算符重载的核心技术
  • 【设计模式】抽象工厂模式 (工具(Kit)模式)
  • 【接口自动化】-2- request模块及通过变量实现接口关联
  • 瑞利杂波背景下不同环境的虚警概率与目标检测概率仿真
  • 项目历程—右键菜单(问题,解决,拓展(非教学向,因为乱))
  • django uwsgi启动报错failed to get the Python codec of the filesystem encoding
  • 17.14 CogVLM-17B多模态模型爆肝部署:4-bit量化+1120px高清输入,A100实战避坑指南
  • 流形折叠与条件机制
  • 【ee类保研面试】其他类---计算机网络
  • STM32HAL 快速入门(二):用 CubeMX 配置点灯程序 —— 从工程生成到 LED 闪烁
  • 如何在Vue中使用拓扑图功能
  • 相机坐标系与世界坐标系的点相互转换:原理、可视化与实践
  • HTML 与 CSS:从 “认识标签” 到 “美化页面” 的入门指南
  • Numpy科学计算与数据分析:Numpy数据分析与图像处理入门
  • 使用Python提取PDF大纲(书签)完整指南
  • Date、Calendar、LocalDateTime:Java 处理时间的类该怎么选?
  • 【网络自动化】利用Python脚本与计划任务,实现H3C/HPE设备配置无人值守备份
  • 安装向量数据库chromadb
  • Java+uniapp+websocket实现实时聊天,并保存聊天记录
  • mac笔记本如何重新设置ssh key
  • React Hooks 完全指南:从概念到内置 Hooks 全解析
  • 五种IO模型与⾮阻塞IO
  • leetcode1456:定长子串中元音的最大数目(定长滑动窗口)
  • 云平台运维工具 —— 阿里云原生工具
  • 云原生时代的 Linux:容器、虚拟化与分布式的基石