jmeter sampler中各个元件的执行顺序

作为jmeter初学者,今天来讲一讲jmeter中初学者容易忽略的地方——jmeter各个元件的执行顺序。
元件执行顺序
如图,做了一个今天讲解的案例。所有以“定时x”命名的都是是http请求,此请求挂了几个元件——断言、后置处理器、前置处理器、固定定时器,其中前、后处理器是JDBC请求。sql语句是:select count(*) from math; 此语句如果正常执行,其结果是:10。http请求后,有两个if控制器,当前置处理器执行成功,判断条件

${count1_1} ==10 成立,

当后置处理器执行成功

${count2_1} == 10 成立。

1、正常run其执行结果如下图所示:
结果
定时器定时3000ms,运行案例时,”定时1“结果出来前有三秒钟的停顿,由此可以判断,定时器执行顺序优先于“定时1”http请求。
2、只给前置处理器做手脚,将其Variable Name置空。如图:
执行顺序3
如此,前置处理器肯定不能正常运行,会产生报错。假设这个时候,如果定时器先执行的话,那么在程序报错前能明显感受到3秒钟的停顿,然后事实是:程序一眨眼就跑完了,而且程序没有进入if控制器。如图:
结果2
由此得出执行顺序结论:前置处理器 优先于 定时器 优先于 sampler。
3、只给后置处理器做手脚,将其Variable Name置空。如图:
执行顺序4
如此,后置处理器肯定不能正常运行,会产生报错。查看结果:
结果3
执行此案例时,”定时1“结果出来前有三秒钟的停顿,并且程序进入到if控制器(前置控制器)。由此可以得出结论:
前置控制器(最先) > 定时器 > 后置处理器 > sampler(最后)???
注意:大家有没有注意到一个问题,就是前置处理器、后置处理器!!!后置处理器如果比sampler还先执行,那么还叫后置处理器吗??查看报错日志:
errror
完整报错信息如下:

2016/11/04 21:58:35 ERROR - jmeter.threads.JMeterThread: Error while processing sampler '定时前1' : java.lang.IllegalArgumentException: Variable Name must not be null in JDBC PostProcessor

直译过来的意思是:当处理sampler”定时前1”请求时,不允许JDBC PostProcessor(后置处理器)的名字为空。这句话透露出什么,就是:sampler 执行顺序优先于后置处理器。如此,结论应为:
前置控制器(最先) > 定时器 > sampler > 后置处理器(最后)
4、只给断言做手脚,断言-要测试的模式中数据填入一个不能成功的数据,如图:
执行顺序5
执行此案例时,”定时1“结果出来前有三秒钟的停顿,程序进入到if控制器(前置控制器),if控制器(后置控制器),断言失败。如图:
结果4
由于断言是在请求发出去后,对返回数据进行验证,所以 http请求执行顺序优先于 断言。经分析得:
前置控制器(最先) > 定时器 > sampler > 后置处理器 > 断言(最后)
提醒:上述结论的还有一个前提,就是每个案例都要将顺序来回打乱,然后查看执行顺序是否一致,打乱后其结果仍是按照这个顺序。所以sampler请求的执行顺序是:
前置控制器(最先) > 定时器 > sampler > 后置处理器 > 断言(最后)

我这里是以一个HTTP请求为例,有点以偏概全的意思。如有不对之处,请大家指出,共同进步!!!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值