本文系《JMeter文档通读》系列内容
正在连载,欢迎关注
1. 测试元件的类型
正确的测试计划,至少要包含一个线程组和一个采样器,其他的元件,大都是为了修饰、配置采样器。
如果你能认识到这一点,就会发现元件的类型虽多,但是其实有迹可循,很容易理解和记忆。
1. 线程组(Thread Group)
创建线程来执行测试
线程之间相对独立
采样器和逻辑控制器必须位于在线程组下
2. 取样器(Samplers)
向服务器发送请求,等待结果
多个取样器相似部分,可以考虑使用配置元件
3. 逻辑控制器(Logic Controllers)
改变采样器 “从上到下” 的默认执行顺序
可以实现单次、重复、跳过、交错、条件等多种方式执行采样器
逻辑控制器可以相互配合使用,实现复杂效果
4. 监听器(Listeners)
提供对采样结果的访问
可以显示采样细节
可以保存采样结果
可以生成报告
5. 定时器(Timers)
让采样器延迟一定时间后再执行
6. 断言(Assertions)
验证采样结果是否符合预期
某个断言失败后,其他的断言不再执行
7. 配置元件( Config Elements)
配置、修改采样器
顺序不影响作用域和优先级
仅对同级和下级采样器有效
越靠近采样器的元件优先级越高
用户变量在测试开始即被加载,所以位置不重要,建议放在最靠前
8. 前置处理器(Pre-Processor)
发出采样器请求之前执行一些操作
9. 后置处理器( Post-Processor)
发出采样器请求之后执行一些操作
总结一下,一个完整的测试计划将包含多个元件,
其中以线程组和采样器为核心,其他元件围绕这两个元件进行展开和配合
如果你能理解这一点,也就一定能够理解各元件之间的执行顺序
5. 元件执行顺序
当线程组里有多个组件时,一定要注意,
它们并不是简单从上到下,依次执行。而是取决于元件的类型、位置、层级
1. 不同元件之间
如果有多个组件,首先会按照组件进行分类
然后按照以下顺序执行各类组件:
配置元件
预处理器
定时器
采样器
后处理器(前提:采样器有结果)
断言(前提:采样器有结果)
监听器(前提:采样器有结果)
假设有测试计划如下
线程组- 监听器A- 后处理器A- 后处理器B- 预处理器A- 预处理器B- 采样器A- 采样器B- 断言A- 断言B- 监听器B
执行时,
首先找到采样器
采样器:- 采样器A- 采样器B
在对其他元件进行分类
预处理器:- 预处理器A- 预处理器B
定时器:
后处理器:- 后处理器A- 后处理器B
断言:- 断言A- 断言B
监听器:- 监听器A- 监听器B
最后,根据采样器执行各元件,最终执行顺序是
- 预处理器A- 预处理器B- 采样器A <----------采样器- 后处理器A- 后处理器B- 断言A- 断言B- 监听器A- 监听器B
- 预处理器A- 预处理器B- 采样器B <----------采样器- 后处理器A- 后处理器B- 断言A- 断言B- 监听器A- 监听器B
看得出来,同级元件的执行次数,和采样器次数密切相关。
如果某个元件细微仅被指定的采样器使用,则应该创建在该采样器的子级中
2. 同类元件之间
不同级的按照上下级顺序
同级别的按照先后顺序
测试计划
线程组- HTTP取样器- 断言A:状态码==200- 断言B: 状态码 =201
结果:
先执行断言 B
再执行断言 A
3. 测试计划的执行顺序
寻找所有配置元件:例如用户变量
寻找所有线程组
寻找线程组中的采样器
以每个采样器为单位,收集:
逻辑控制器
配置元件
定时器
断言
预处理器
后处理器
侦听器
收集方式(优先级):
子组件
同级组件
父组件
不收集旁系子组件
能看到这里说明是真爱,关注一下吧
首发于公众号:测试开发研习社
领取专属 10元无门槛券
私享最新 技术干货