Jmeter的作用域问题

  最近项目组遇到一个问题,想实现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.回到我们最初的问题上来,现在不难理解了,为什么我把定时器放在线程组下面,我的每条用例都要受到定时器的控制了

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

 

posted @ 2016-10-25 13:49  反馈原始人_Z  阅读(332)  评论(0编辑  收藏  举报