图中元件的执行顺序

这是一个非常经典的 JMeter 作用域问题,核心原因是:JMeter 中,定时器的作用域是「同级及后续的所有取样器」,但不包含它前面已经执行过的取样器。

我们结合你的脚本结构,一步步拆解:


1. 先看你的脚本层级关系

text 复制代码
测试计划
└── 线程组
    ├── HTTP请求1          ← 取样器1
    ├── If控制器
    │   ├── HTTP请求2      ← 取样器2
    │   └── 固定定时器2
    ├── 固定定时器1        ← 定时器(和HTTP请求1同级,但在它后面)
    ├── HTTP请求3          ← 取样器3
    └── 固定定时器3        ← 定时器(HTTP请求3的子节点)

2. JMeter 定时器的「作用域规则」

  • 定时器只对它之后、同一层级及子层级的取样器生效。
  • 定时器是「先执行定时器,再执行取样器」,因此它无法影响已经执行过的、在它前面的取样器

3. 套用到你的场景里

  1. HTTP请求1 的执行时机

    • 它是线程组里第一个取样器,执行时,固定定时器1 还没有被解析/执行。
    • 此时 固定定时器1 还在「排队」,还没轮到它,自然不会对前面的 HTTP请求1 生效。
  2. 固定定时器1 的生效范围

    • 它在 If控制器 之后、HTTP请求3 之前,和 HTTP请求3 同级。
    • 因此它只会对它后面的 HTTP请求3 生效(包括它后面的所有同级取样器,以及这些取样器的子层级)。
    • 它对前面的 HTTP请求1If控制器 内的 HTTP请求2 都不生效。

4. 举个通俗的例子

你可以把线程组里的元件想象成「排队执行的队伍」:

  • 队伍顺序:HTTP请求1If控制器固定定时器1HTTP请求3
  • 执行逻辑是:走到谁就处理谁。
  • 当处理 HTTP请求1 时,固定定时器1 还在队伍后面,还没轮到它,所以它没法提前给前面的人"加延迟"。
  • 等走到 固定定时器1 时,它会对后面还没处理的 HTTP请求3 生效,在处理 HTTP请求3 之前先等定时器的时间。

5. 如果你想让 固定定时器1 影响 HTTP请求1

有两种标准做法:

  1. 固定定时器1 放到 HTTP请求1 的前面(同级)

    text 复制代码
    线程组
    ├── 固定定时器1
    ├── HTTP请求1
    ├── If控制器
    │   ├── HTTP请求2
    │   └── 固定定时器2
    └── HTTP请求3

    这样它会对后面所有的 HTTP请求1HTTP请求2HTTP请求3 都生效。

  2. 固定定时器1 作为 HTTP请求1 的子节点

    text 复制代码
    线程组
    ├── HTTP请求1
    │   └── 固定定时器1
    ├── If控制器
    │   ├── HTTP请求2
    │   └── 固定定时器2
    └── HTTP请求3

    这样它只会对 HTTP请求1 生效,不会影响其他请求。


💡 关键总结

  • 定时器只对「它之后的取样器」生效,无法回溯影响前面已经执行过的取样器。
  • 作用域由「位置+层级」共同决定:同级后面的取样器、子层级的取样器,都会受它影响。
相关推荐
wuhuhuan6 小时前
Case Generator 平台升级
python·测试工具·自动化
柒儿吖7 小时前
SSCom 重构全记录:用 Rust 把串口调试助手送上鸿蒙 PC、macOS、Windows和Linux
测试工具·rust·harmonyos
AngusKit9 小时前
AngusTester 与 Postman、MeterSphere:私有化统一测试怎么选
测试工具·jmeter·压力测试·metersphere·web测试·移动端测试
蒲公英内测分发19 小时前
App 更新一次就换一个二维码?智能硬件配套 App 的版本和下载入口怎么管理
人工智能·测试工具·智能家居·智能硬件
测试老哥1 天前
接口测试的测试用例应该怎么写?
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
是Leo刘啊1 天前
别再手敲 JSON 造数据了!Mock 数据生成器实战与避坑指南
测试工具
Luminbox紫创测控1 天前
航天热平衡试验用太阳模拟器:光学积分器设计与均匀性提升方法
测试工具·安全性测试·太阳光模拟器·测试标准·航天热平衡实验
程序员杰哥1 天前
UI自动化测试:Jenkins配置
自动化测试·软件测试·python·测试工具·职场和发展·jenkins·测试用例
TomEval1 天前
【性能测试】17 - 性能测试入门
测试工具·jmeter
wuhuhuan1 天前
Case Generator 测试自动化平台
python·测试工具·自动化