jmeter是一个开源的性能测试工具,它可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的父子关系,那么随着它们的顺序和所在的域不同,它们在执行的时候,也会有很多不同。
jmeter的测试计划通过图形化的方式表达脚本,域代码方式的脚本不同,图形方式表达的脚本中无法使用变量和函数等描述元件的作用域,因此jmeter主要依靠t测试计划中元件的相对位置、父子关系以及元件本身的类型来决定test plan中各元件的执行顺序;原件在test plan中的位置不同,可能导致该元件的行为有很大差异
元件的作用域
jmeter中共有8类可被执行的元件(测试计划和线程组不属于原件),其中‘取样器’是不与其他元件发生交互作用的元件,逻辑控制器只对于其子节点的取样器有效,而其他元件需要与取样器等元件交互。
- 配置元件:影响其范围内的所有元件
- 前置处理器: 在其作用范围内的每一个取样器之前执行
- 定时器: 对其范围内的每一个取样器有效
- 后置处理器: 对其范围内的每一个取样器之后执行
- 断言:对其范围内的每一个取样器执行结果之后断言校验
- 监听器:收集其作用范围内的每一个取样器的元件信息并且呈现出来
树形结构下jmeter元件的作用域,原则如下
- 取样器不与其他元件相互作用,因此不存在作用域的问题
- 逻辑取样器只对其子节点的取样器和逻辑控制器作用
- 除取样器和逻辑控制器外的其他元件,如果是某个取样器的子节点,则该元件仅对其父节点起作用
- 除取样器和逻辑控制器外的其他元件,如果父节点不是’取样器‘,则作用域是该元件父节点下的其他所有后带节点(包括子节点,子节点的子节点)
元件的执行顺序
在同一作用域范围内,测试计划的元件按照以下顺序执行
- 配置元件(Config Elements)
- 前置处理器(Pre-porcessors)
- 定时器(Time)
- 取样器(Sampler)
- 后置处理器(Post-porcessors):取样器返回为空,不执行
- 断言(Assirtions):取样器返回为空,不执行
- 监听器 (Listener):取样器返回为空,不执行
网友评论