jmeter随笔(1)--jmeter作用域的问题

要实现jmeter每隔一段时间跑一次线程组中的所有用例,应该用定时器,但是定时器要放在什么地方呢?首先看看是什么试的吧

1.想让线程组中的用例不停的跑,当然要让它循环次数“永远”

2.然后我想,要让线程组中每条用例都跑一遍再进行等待,定时器当然要放在线程组下面嘛,哈哈,结果我就这么设置了:

 

3.跑出来的结果让我傻眼,居然是跑一条用例执行一次定时器,再跑一条用例再执行一次定时器,和我想要的不一样啊

4.怎么办,开发叔叔过来一看,定时器加在了最前面一条用例下面,问题解决

5.现在知道了,原来是各种元素的执行顺序和作用域搞错了,那么这里面的规律是怎么样的呢,查看了官方文档后,答案终于揭晓了

6.官方文档一上来就告诉了我们各个元素的执行顺序

0.配置元件>1.前置处理器>2.定时器>3.sampler>4.后置处理器>5.断言>6.监听器

jmeter是树形结构,执行顺序是从上往下的,然后按照各个元素的执行顺序进行每一步操作

那么每个元素的作用域又是怎样的呢?官网直接给了个例子:

在这个图中,有用例,定时器和断言

每一条用例的执行顺序是按照从上到下执行的,(one,two,three,four,five代表了他们的执行顺序)

看看Timer #1的作用域,发现Timer #1和two、three、four有同一个父节点,所以Timer #1可以控制这三条用例

同理,Timer #2的父节点为线程组,所以它控制了全部的5条用例

同理,Assertion #1只对Three进行断言

结合元素的执行顺序和作用域后,得出完整的执行步骤

Timer #2→one→Timer #2→Timer #1→two→Timer #2→Timer #1→three→Timer #2→Timer #1→four→Timer #2→five→Assertion #1

7.回到我们最初的问题上来,现在不难理解了,为什么我把定时器放在线程组下面,我的每条用例都要受到定时器的控制了

而在第一条用例下面加定时器,会先执行定时器,再执行我所有的用例,再执行定时器,再执行所有用例,问题解决。

备注:之前还分享了一篇文章,专门写的作用域的执行循序,可以结合起来一起学习《JMeter学习(三)元件的作用域与执行顺序》

原文地址:https://www.cnblogs.com/diqitian/p/6014870.html