JMeter是我们测试人员使用越来越多的一种测试工具。本文就详细说明一下在JMeter的一个项目内,各个模块和组件的执行顺序是怎么样的。
执行顺序
JMeter常用的各个组件的执行顺序是:
- 配置原件
- 前置处理器
- 定时器
- 取样器
- 后置处理器
- 断言
- 监听器
定时器、断言、前置处理器、后置处理器都是围绕取样器执行的。比如这个测试计划:
Controller
Post‐Processor 1
Sampler 1
Sampler 2
Timer 1
Assertion 1
Pre‐Processor 1
Timer 2
Post‐Processor 2
执行顺序会是:
![472eab4f34b365c77c34f594615f93aa.png](https://i-blog.csdnimg.cn/blog_migrate/240ff7d2e160ee2ed492c2213a7c9609.png)
此外,如果添加了控制器,执行顺序还和控制器及作用域有关。
一个组件的作用域,和组件所在的位置,是在线程组下、控制器下、取样器下有关。
![4949ccb55058a69381d45519ccb2f42a.png](https://i-blog.csdnimg.cn/blog_migrate/19369877ffad2d84c14627d9615cfa25.png)
这个例子中,Timer #1会应用到取样器Two, Three, 和Four,即使Timer #1的位置在最下方。
也就是说不管它的位置在当前层级的任何位置,它的作用域也是不受影响的。
Assertion #1仅仅会应用到取样器Three。
Timer #2会影响所有取样器。
示例
有如下接口,
![dbfc4743bfd27ad63da6b5b8e0ba19ce.png](https://i-blog.csdnimg.cn/blog_migrate/a864c44bfd873b1de2704c57c9bb04a4.jpeg)
1. http://101.200.167.51:8080/http/method?test=1
2. http://101.200.167.51:8080/http/method?test=1&test=2
测试计划的结构为:
![5ffb7c8624354c10a95aaaccc2ff78b4.png](https://i-blog.csdnimg.cn/blog_migrate/a617ceceb6d28df95e210c9a1361bb87.jpeg)
执行结果为:
![7da97c937196a6055f4df34371448706.png](https://i-blog.csdnimg.cn/blog_migrate/abf7dd52069d142661fb5bcce8e12e70.jpeg)
详情请运行脚本查看结果。(请自动忽略失败的请求)