JMeter的作用域和执行顺序

发表于:2017-12-28 11:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:第二纪元    来源:wangzhechao.com

  JMeter内部含有组件,一个测试计划是由若干组件组合而成,可以通过.jmx后缀的文件统一保存。测试计划的组件列表在JMeter的右侧。
 
  测试计划执行的顺序和左侧树形顺序有些差别,熟练掌握组件间执行的先后顺序是掌握JMeter软件的必要条件。
  1. 执行顺序
  在同一个作用域下,JMeter执行顺序和添加组件时候弹出的右键菜单大致相同:
  · 配置原件(Configuration elements)
  · 前置处理器(Pre-Processors)
  · 定时器(Timers)
  · 采样器(Sampler)
  · 后置处理器(Post-Processors)
  · 断言(Assertions)
  · 监听器(Listeners)
  如果采样器的结果为null,后三者不执行。定时器、断言、前置处理器和后只处理器只有在采样器存在的情况下才会执行,逻辑控制器和采样器的执行顺序和在树中的顺序一致。如果同种测试组件,它们的执行顺序和树中的顺序始终保持一致。
  举个例子:
 
  预期的执行顺序为:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion
Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion
  2. 作用域
  基本的执行顺序掌握后,还需要了解JMeter的作用域。在JMeter的树形列表中,监听器、配置组件后置处理器、前置处理器、断言和定时器是严格分层的,控制器、采样器则主要是有序的。
  在真实的测试计划中,一般采样器都是包含在控制器之下,或者独立存在。例如:
 
  上面的例子中的执行顺序是:One、Two、Three、Four。
  其他的组件主要是分层存在,例如对于断言组件,如果它的父节点是一个请求,那么它只针对该请求。如果父节点是控制器,它则影响控制器下的所有请求。
  
  上图Assertion #1 只针对One,而Assertion #2则针对Two和Three。
 
  在这个案例中,Timer #1 将影响请求Two、Three、Four(可以忽略控制器思考)。Assertion #1 只影响Three,而Timer #2 则影响全部请求。
  其实了解执行顺序的关键是分层和排序。Sampler是关键,可以将焦点放到Sampler上,然后逆向思考该请求在执行前都需要搜集哪些父节点的配置,而执行后又需要返回给哪些节点,基本上可以推理出来。同一层(一个作用域)内,主要参照第1节的执行顺序,如果不同作用域则根据作用域法则来进行推算。
  有些元素和普通元素的表现形式不一样,需要稍加注意。例如Header Manager, Cookie Manager and Authorization manager 这三种配置元素和默认的不同,其他的默认元素一般会将配置合并执行,而这三者并不会合并,会执行多个中的一个,但目前无法确定执行的是哪一个。
  大多数情况下的执行顺序其实和想想中的保持一致,如果不是很确定或者执行的效果有些差异,那就是时候看看文档的说明了……
相关文章
Jmeter压力测试教程(入门篇)

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
100家互联网大公司java笔试题汇总,填问卷领取~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号