1. 程式人生 > >JMeter元件作用域及執行順序

JMeter元件作用域及執行順序

JMeter的體系結構可被分解為一個三維圖,如下圖。
這裡寫圖片描述
上述所說的8類可被執行的元件,在目錄樹中的相對節點關係為:TestPlan=》ThreadGroup=》Others。值得注意的是,每個測試指令碼中有且只能有一個TestPlan,該TestPlan下至少包含一個以上的ThreadGroup。

元件作用域

在JMeter中,元件作用域是靠TestPlan樹型結構中元件的父子關係來決定的,具體如下:
1. 配置元件(Config Element)
該元件作用於元件父節點下的所有元件
2. 前置處理器(PerProcessors)
該元件作用於元件父節點下的每一個Sampler元件

,且在Sampler元件被執行前執行。
3. 定時器(Timers)
該元件作用於元件父節點下的每一個Sampler元件
4. 取樣器(Sampler)
該元件不對其他元件發生互動作用,而是其他元件對其發生互動作用。
5. 後置處理器(PostProcessors)
該元件作用於元件父節點下的每一個Sampler元件,且在Sampler元件被執行後執行。
6. 斷言(Assertions)
該元件對元件父節點下的每一個Sampler元件執行後的結果進行校驗。
7. 監聽器(Listeners)
該元件收集並記錄其父節點下的每一個Sampler元件測試結果

綜上可知,JMeter元件作用域的基本原則為:
1)取樣器(Sampler)由於只能被互動,因此不存在作用域問題。
2)邏輯控制器(LogicConrtollers)提供一個塊的結構,僅對其子節點中的取樣器(Sampler)和邏輯控制器(LogicConrtollers)起作用。
3)父節點下的每一個Sampler元件是指父節點下的所有後代節點,包括子節點、子子節點等。

元件執行順序

JMeter指令碼顯示的是樹型結構,元件的執行順序類似二叉樹的中序遍歷,先執行根節點再執行子節點,具體:
Step1:配置元件(如果存在);
Step2:前置處理器(如果存在);
Step3:定時器(如果存在);
Step4:取樣器(如果存在);
Step5:後置處理器(如果存在且取樣器返回結果非空);
Step6:斷言(如果存在且取樣器返回結果非空);
Step7:監聽器(如果存在且取樣器返回結果非空);

注:1)如果元件的作用物件不存在,則其不會被執行,如斷言作用域內沒有取樣器,則斷言不被執
2)同一作用域範圍內存在多個同一型別的元件,則這些元件按其在TestPlan中的上下順序依次被執行;
3)如果選擇某個Step為永遠迴圈,那麼執行緒只會永遠執行該Step節點下的元件,其前後面所有的Step都不會被執行。