JMeter:執(zhí)行順序與作用域
一、執(zhí)行順序
類似于運(yùn)算符或操作符的優(yōu)先級(jí),當(dāng)JMeter測(cè)試中包含多個(gè)不同的元素時(shí),哪些元素先執(zhí)行,哪些元素后執(zhí)行,并不是嚴(yán)格按照它們出現(xiàn)的先后順序依次有序執(zhí)行的,而是會(huì)遵循一定的內(nèi)部規(guī)則,我們稱之為JMeter元素的執(zhí)行順序,一般情況下JMeter元素按照如下順序依次執(zhí)行:
0. 配置元件(Config Element)。
1. 前置處理器(Pre Processors)。
2. 定時(shí)器(Timer)。
3. 取樣器(Sampler)。
4. 后置處理器(Post Processors)。
5. 斷言(Assertions)。
6. 監(jiān)聽(tīng)器(Listener)。
注意,只有取樣器結(jié)果不為空的情況下才會(huì)執(zhí)行4、5、6。
一個(gè)簡(jiǎn)單的例子:
其中①為取樣器、②為配置元件、③為定時(shí)器、④為監(jiān)聽(tīng)器、⑤為前置處理器、⑥為后置處理器、⑦為斷言。
執(zhí)行順序?yàn)椋孩?->⑤-->③-->①-->⑥-->⑦-->④。
二、組件作用域
JMeter測(cè)試樹(shù)元素分類
在JMeter的GUI界面,測(cè)試計(jì)劃就是一顆樹(shù),Test Plan是樹(shù)的根節(jié)點(diǎn),其他元素都是其子孫.從作用域的角度來(lái)看,測(cè)試樹(shù)中的元素可以分為兩大類:
1、具有層次結(jié)構(gòu)的元素
- 這類元素的作用域與其所處的層次有關(guān)。
- 這類元素包括:配置元件,前置處理器,定時(shí)器,后置處理器,斷言,監(jiān)聽(tīng)器這6大組件。
2、具有順序結(jié)構(gòu)的元素
- 這類元素一般嚴(yán)格按照其出現(xiàn)的先后順序依次有序的執(zhí)行。
- 這類元素不會(huì)對(duì)其他元素的功能有影響,只是起控制作用,沒(méi)有作用域的概念。
- 這類元素包括取樣器與邏輯控制器。
另外,還有剩下的線程組比較特殊,線程組也不會(huì)影響其他元素的功能,但是線程組的執(zhí)行順序是可以配置的,若測(cè)試計(jì)劃下包含多個(gè)線程組,默認(rèn)是并行執(zhí)行的,若要按照其出現(xiàn)的順序依次執(zhí)行,需要在測(cè)試計(jì)劃下勾選"Run Thread Groups consecutively (i.e. one at a time)"。
作用域
JMeter組件作用域指的是JMeter組件(配置元件,前置處理器,定時(shí)器,后置處理器,斷言,監(jiān)聽(tīng)器)起作用的范圍,在此范圍內(nèi)組件是有效的,可以影響取樣器的行為。
從前面的內(nèi)容可以看出,JMeter作用域是針對(duì)組件而言的,只有層次結(jié)構(gòu)的組件才有作用域的概念。
JMeter組件作用域規(guī)則
按照組件的父節(jié)點(diǎn)不同,組件的作用域有如下類型:
(1)取樣器作用域:
父節(jié)點(diǎn)為取樣器的組件具有的作用域,僅對(duì)該取樣器起作用。
(2)邏輯控制器作用域:
父節(jié)點(diǎn)為邏輯控制器的組件具有的作用域,對(duì)該邏輯控制器下的所有取樣器起作用。
(3)線程組作用域:
父節(jié)點(diǎn)為線程組的組件具有的作用域,對(duì)該線程組下的所有取樣器起作用。
(4)測(cè)試計(jì)劃作用域:
父節(jié)點(diǎn)為測(cè)試計(jì)劃的組件具有的作用域,對(duì)測(cè)試計(jì)劃下的所有取樣器起作用。
三、作用域案例說(shuō)明
1、取樣器作用域
"Response Assertion_1"響應(yīng)斷言,其父節(jié)點(diǎn)為"HTTP Resquest_baidu_1"取樣器,具有取樣器作用域,其作用域?yàn)樵撊悠?所以此響應(yīng)斷言只會(huì)斷言"HTTP Resquest_baidu_1",而不會(huì)斷言"HTTP Resquest_baidu_2"取樣器,如下圖示:
2、邏輯控制器作用域
"Response Assertion"響應(yīng)斷言,其父節(jié)點(diǎn)為"Loop Controller1"邏輯控制器,具有邏輯控制器作用域,其對(duì)邏輯控制器下的所有取樣器起作用.所以該響應(yīng)斷言會(huì)斷言"Loop Controller1"邏輯控制器下所有取樣器,包括"HTTP Request1","HTTP Request2"與"HTTP Request3",如下圖示:
3、線程組作用域
"Response Assertion"響應(yīng)斷言,其父節(jié)點(diǎn)為"Thread Group"線程組,具有線程組作用域,其對(duì)線程組下的所有取樣器起作用.所以該響應(yīng)斷言會(huì)斷言"Thread Group"線程組下所有取樣器,包括"HTTP Request1","HTTP Request2","HTTP Request3"與"HTTP Request4",如下圖示:
4、測(cè)試計(jì)劃作用域
"Response Assertion"響應(yīng)斷言,其父節(jié)點(diǎn)為"Test Plan"測(cè)試計(jì)劃,具有測(cè)試計(jì)劃作用域,其對(duì)測(cè)試計(jì)劃下的所有取樣器起作用.所以該響應(yīng)斷言會(huì)斷言"Test Plan"測(cè)試計(jì)劃下所有取樣器,包括"HTTP Request1","HTTP Request2","HTTP Request3","HTTP Request4","HTTP Request5"與"HTTP Request6",如下圖示: