一、JMeter运行顺序
1、运行顺序
测试计划优先运行,其次是线程组
线程组与线程组之间,默认并发运行
当在测试计划下,勾选:独立运行每个线程组(例如在一个组运行结束后启动下一个),就会变成串行运行
其次执行顺序为:
配置元件(Config Element)
前置处理器(Pre Processors)
定时器(Timer)
取样器(Sampler)
后置处理器(Post Processors)
断言(Assertions)
监听器(Listener)
二、JMeter作用域
JMeter组件的作用对象:取样器
JMeter组件的作用范围 对哪个范围的取样器生效
JMeter是一个树形结构,测试计划是树的根节点,根节点下有很多元素:线程组、逻辑控制器、定时器等等
按照树形结构,JMeter作用域可以划分为两类:具有层次结构的元素和具有顺序结构元素
1、层级生效的元素
主要包括:配置元件,前置处理器,定时器,后置处理器,断言,监听器这6大组件
他们按照所处的层级来生效,需要注意的是,他们都是对取样器才会生效
eg:当定时器放在线程组下面,对所有的取样器生效,所有的取样器都会等待3s
eg:当定时器放在控制器下面,只对控制器下面的取样器生效,HTTP请求1和HTTP请求2瞬间执行,HTTP请求3和HTTP请求4取样器会等待3s执行
2、顺序生效的元素
主要是指:取样器和控制器
3、作用域规则
有前后顺序的元素之间不存在作用域,只存在流程控制
测试计划中有一个选项:独立运行每个线程组;勾选后才能顺序执行线程组中的元件
不勾选时,会并发执行线程组
作用域规则主要对:配置元件,前置处理器,定时器,后置处理器,断言,监听器这个6个元件生效
(1)取样器作用域:父节点为取样器的组件具有的作用域,仅对该取样器起作用;
HTTP请求1瞬间执行
HTTP请求2等待3秒执行
接着HTTP请求3瞬间执行
取样器下的定时器只对该取样器生效,对其他的取样器不生效
(2)逻辑控制器作用域:父节点为逻辑控制器的组件具有的作用域,对
该逻辑控制器下的所有取样器起作用;
HTTP请求1、HTTP请求2、HTTP请求3瞬间执行
HTTP请求4、HTTP请求5等待3秒执行
父节点是控制器的定时器只对控制器下的所有取样器生效,控制器下的HTTP请求都要等3秒才能发请求
(3)线程组作用域 父节点为线程组的组件具有的作用域,对该线程组下的所有取样器起作用;
父节点是线程组的定时器会对该线程组下的所有取样器生效,这些取样器都要等2秒;
如果控制器下还设置了定时器,等待时间需要累加
HTTP请求4和HTTP请求5需要等待6秒的时间
(4)测试计划作用域 父节点为测试计划的组件具有的作用域,对测试计划下的所有取样器起作用。
HTTP请求1~HTTP请求6都需要等待3s才能发出请求
注意:由于JMeter默认会并发运行线程组,所以需要勾选测试计划中的独立运行每个线程组 才能顺序执行