当前位置: 首页 > 科技观察

JMeter:执行顺序和范围

时间:2023-03-13 17:54:41 科技观察

1.执行顺序类似于运算符或运算符优先级。当JMeter测试包含多个不同的元素时,并没有严格规定哪些元素先执行,哪些元素后执行。它们按照出现的先后顺序依次执行,但是会遵循一定的内部规则,我们称之为JMeter元素的执行顺序。通常,JMeter元素按以下顺序执行:0.ConfigElement。1.预处理器。2.计时器。3.采样器。4.后处理器。5.断言。6.倾听者。请注意,仅当采样器结果不为空时,才会执行4、5和6。一个简单的例子:①是采样器,②是配置组件,③是定时器,④是监听器,⑤是预处理器,⑥是后处理器,⑦是断言。执行顺序为:②-->⑤-->③-->①-->⑥-->⑦-->④。2.ComponentscopeJMeter测试树元素在JMeter的GUI界面中进行分类。测试计划是一棵树,测试计划是树的根节点,其他元素是它的后代。从作用域来看,测试树元素可以分为两类:1.具有层次结构的元素这类元素的作用域与它们所在的层级有关。这类元素包括:配置元素、预处理器、定时器、后处理器、断言和监听器。2.顺序结构的元素这些元素一般严格按照出现的顺序执行。这类元素不会影响其他元素的功能,只是起控制作用,没有作用域的概念。这些元素包括采样器和逻辑控制器。另外,剩下的线程组比较特殊,线程组不会影响其他元素的功能,但是线程组的执行顺序是可以配置的。如果测试计划包含多个线程组,它们将默认并行执行。要按照它们出现的顺序执行,需要在测试计划下勾选“RunThreadGroupscontinuously(i.e.oneatatime)”。ScopeJMeter组件范围是指JMeter组件(配置元素、预处理器、定时器、后处理器、断言、监听器)工作的范围,在这个范围内组件是有效的,可以影响采样设备的行为。从前面的内容可以看出,JMeter的作用域是针对组件的,只有层次化的组件才有作用域的概念。JMeter组件作用域规则根据组件的父节点不同而不同。组件的作用域有以下几种:(1)采样器作用域:父节点为采样器的组件的作用域只作用于采样器。(2)逻辑控制器范围:父节点为逻辑控制器的组件的范围,作用于逻辑控制器下的所有采样器。(3)线程组作用域:父节点为线程组的组件的作用域,作用于该线程组下的所有采样器。(4)测试计划范围:父节点是测试计划的组成部分的范围,作用于测试计划下的所有采样器。三、作用域案例说明1、采样器作用域“ResponseAssertion_1”响应断言,其父节点为“HTTPRequest_baidu_1”采样器,具有采样器作用域,其作用域为采样器。因此,该响应断言只会Assert“HTTPResquest_baidu_1”,而不会断言“HTTPResquest_baidu_2”采样器,如下图所示:2.逻辑控制器作用域“ResponseAssertion”响应断言,其父节点为“LoopController1”"逻辑控制器,具有逻辑控制作用域,作用于逻辑控制器下的所有采样器。所以响应断言会断言“LoopController1”逻辑控制器下的所有采样器,包括“HTTPRequest1”、“HTTPRequest2”和“HTTPRequest3”,如下图所示:3.线程组作用域“ResponseAssertion”响应断言,它的父节点是“ThreadGroup”线程组,它有一个线程组作用域,作用于该线程组下的所有采样器。因此,response断言会断言“ThreadGroup”线程组下的所有采样器,包括“HTTPRequest1”、“HTTPRequest2”、“HTTPRequest3”和“HTTPRequest4”,如下图:4.测试计划范围"ResponseAssertion”响应断言,其父节点为“TestPlan”测试计划,有一个测试计划作用域,作用于该测试计划下的所有采样器。所以响应断言会断言“TestPlan”测试计划下的所有采样器,包括“HTTPRequest1”、“HTTPRequest2”、“HTTPRequest3”、“HTTPRequest4”、“HTTPRequest5”和“HTTPRequest6”,如图以下: