6.2 jmeter基础—元件执行顺序

本文详细解析了JMeter中各种元件的执行顺序,包括配置元件、前置处理器、定时器、取样器、后置处理器、断言和监听器。阐述了元件如何依据层级和作用域影响取样器执行,以及特定管理器和用户定义变量的执行特点。

4.3.元素的执行顺序
1 配置元件 Configuration elements
2 前置处理器Pre-Processors
3 定时器Timers
4 取样器Sampler
5 后置处理器Post-Processors (unless SampleResult is null)
6 断言Assertions (unless SampleResult is null)
7监听器Listeners (unless SampleResult is null)
例如,
在这里插入图片描述
执行顺序将是:
在这里插入图片描述

元素的作用域和执行顺序
创建测试计划时,会用一组请求来表示要执行的步骤。
而这些请求通常会被组织在有序的控制器中。
执行时,这些控制器、取样器一般按照顺序执行。
个别控制器(例如,交替控制器)会改变执行顺序。
在这里插入图片描述
如上所示的测试计划的执行顺序为:one、two、three、four。
与取样器不同,监听器、配置元素、后置处理器、前置处理器、断言和定时器等元件的执行是有层级的。这些元件依据其层级作用于取样器,只有在其作用域范围内的取样器执行时才被执行。
元件(监听器、配置元素、后置处理器、前置处理器、断言和定时器等)的作用域规则:
如果父节点是取样器,那么它只作用于该取样器。
如果父节点是控制器,那么它作用于控制器下的所有层级的所有取样器。即对这些请求都有影响。
在这里插入图片描述
如上图所示,Assertion#1只作用于One取样器,而Assertion#2作用于Two、Three取样器。当其作用的取样器执行时,这些元件才被执行。
例外1:HTTP信息头管理器、Cookie 管理器和授权管理器与其他配置元件不同,从这些管理器的设置不合并。如果不止一个管理器在取样器的范围内,则只使用其中一个Manager,但是不确定使用哪个。
例外2:用户定义变量无论位置,最开始执行。
在这里插入图片描述
JMeter元件的执行顺序:
1 配置元件 Configuration elements
2 前置处理器Pre-Processors
3 定时器Timers
4 取样器Sampler
5 后置处理器Post-Processors (unless SampleResult is null)
6 断言Assertions (unless SampleResult is null)
7监听器Listeners (unless SampleResult is null)
请注意:
取样器、断言、前置处理器、后置处理器只有在有可以应用它们的取样器时才被执行。
逻辑控制器和取样器按树上出现的顺序执行,
其他测试元素的执行是根据它们的范围和元素类型(同种类型,按树上的顺序执行)
在这里插入图片描述
如上图所示,取样器的执行顺序:One、Two、Three、Four、Five
Timer #1的作用域 :Two、Three、Four
Assertion #1的作用域:Three
Timer #2的作用域:One、Two、Three、Four、Five,即:
在这里插入图片描述
结合元件的执行顺序,得到测试计划的执行顺序如下:
在这里插入图片描述

总的来说,要分析一个测试计划的执行顺序:
1)先分析取样器的执行顺序,一般按照位置顺序执行;
2)再根据作用域规则,分析那些元件作用于取样器;
3)根据元件执行顺序,最终得到整个测试计划的执行顺序。

欢迎关注我的网易云课程
https://study.163.com/courses-search?keyword=软件测试123#/?ot=5

### JMeter 元件执行顺序详解 JMeter 是一个功能强大的性能测试工具,其测试计划由一系列元件组成,包括配置元件、线程组、控制器、采样器(Sampler)、断言(Assertion)和监听器(Listener)。这些元件执行顺序对于正确构建测试脚本至关重要。 --- #### 1. 线程组 (Thread Group) 线程组是测试计划的核心组件之一,定义了测试中线程的数量、启动时间以及运行次数等参数[^1]。它是所有测试活动的入口点。 --- #### 2. 配置元件 (Config Elements) 配置元件在采样器执行之前加载并初始化必要的设置。例如,HTTP 请求默认值会在所有 HTTP 请求中应用公共配置[^2]。 - **执行顺序**:配置元件优先于采样器执行。 - **作用域**:仅对当前作用域内的采样器生效。 --- #### 3. 前置处理器 (Pre Processors) 前置处理器在采样器执行前运行,用于修改请求内容或初始化变量。例如,BeanShell PreProcessor 可以动态生成请求数据[^2]。 - **执行顺序**:在采样器执行之前运行。 - **作用域**:仅对绑定的采样器生效。 --- #### 4. 定时器 (Timers) 定时器用于在采样器执行前后引入延迟。如果存在多个定时器,则它们的效果会叠加[^2]。 - **执行顺序**:在采样器执行之前或之后根据配置生效。 - **作用域**:可以应用于单个采样器或整个线程组。 --- #### 5. 采样器 (Samplers) 采样器是实际发送请求的核心组件。它模拟用户行为与目标系统交互[^2]。 ```jmeter <HTTPSamplerProxy> <domain>example.com</domain> <path>/api/test</path> </HTTPSamplerProxy> ``` --- #### 6. 后置处理器 (Post Processors) 后置处理器在采样器执行后运行,用于提取响应数据或验证结果。例如,正则表达式提取器可以从响应中提取特定值。 - **执行顺序**:在采样器执行之后运行。 - **作用域**:仅对绑定的采样器生效。 --- #### 7. 断言 (Assertions) 断言用于验证采样器的响应是否符合预期。如果断言失败,响应会被标记为错误[^2]。 - **执行顺序**:在后置处理器之后运行。 - **作用域**:仅对绑定的采样器生效。 --- #### 8. 监听器 (Listeners) 监听器用于收集和展示测试结果。例如,“查看结果树”监听器可以显示每个请求的详细信息[^2]。 - **执行顺序**:在整个测试计划完成后运行。 - **作用域**:全局有效。 --- #### 执行顺序总结表 | 组件名称 | 执行顺序 | 备注 | |----------------|----------|--------------------------------------------------------------| | 线程组 | 1 | 测试计划的入口点。 | | 配置元件 | 2 | 初始化必要设置,在采样器之前加载[^2]。 | | 前置处理器 | 3 | 修改请求内容或初始化变量,在采样器之前运行。 | | 定时器 | 4 | 引入延迟,在采样器执行前后生效。 | | 采样器 | 5 | 实际发送请求的核心组件。 | | 后置处理器 | 6 | 提取响应数据或验证结果,在采样器之后运行[^2]。 | | 断言 | 7 | 验证响应是否符合预期,在后置处理器之后运行[^2]。 | | 监听器 | 8 | 收集和展示测试结果,在整个测试计划完成后运行。 | --- #### 注意事项 - 如果组件在同一层级中,它们的执行顺序由其在测试计划中的位置决定[^3]。 - 配置元件、前置处理器、后置处理器和断言的作用域仅限于绑定的采样器或其父级控制器。 --- ### 示例代码 以下是一个简单的 JMeter 脚本示例,展示组件的执行顺序: ```jmeter <ThreadGroup> <ConfigElement> <!-- HTTP 请求默认值 --> </ConfigElement> <PreProcessor> <!-- BeanShell PreProcessor --> </PreProcessor> <Timer> <!-- 固定定时器 --> </Timer> <HTTPSamplerProxy> <!-- HTTP 请求 --> </HTTPSamplerProxy> <PostProcessor> <!-- 正则表达式提取器 --> </PostProcessor> <Assertion> <!-- 响应断言 --> </Assertion> <Listener> <!-- 查看结果树 --> </Listener> </ThreadGroup> ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曹红杏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值