jmeter是一個開源的性能測試工具,它可以通過鼠標拖拽來隨意改變元件之間的順序以及元件的父子關系,那么隨着它們的順序和所在的域不同,它們在執行的時候,也會有很多不同。
jmeter的test plan通過圖形化的方式表達腳本,域代碼方式的腳本不同,圖形方式表達的腳本中無法使用變量和函數等描述元件的作用域,因此jmeter主要依靠test plan中元件的相對位置、
父子關系以及元件本身的類型來決定test plan中各元件的執行順序;原件在test plan中的位置不同,可能導致該元件的行為有很大差異。(新版jmeter都可以自主選擇語言,對號入座即可)
1、元件的作用域
jmeter中共有8類可被執行的元件(test plan和thread group不屬於元件),其中,sampler(取樣器)是不與其他元件發生交互的作用的元件,Logic Controller
(邏輯控制器)只對其子節點的sampler有效,而其他元件需要與sampler等元件交互。
Config Elements(配置元件):影響其范圍內的所有元件
Pre-porcessors(前置處理器):在其作用范圍內的每一個sampler元件之前執行
Timer(定時器):對其作用范圍內的每一個sampler有效
Post-porcessors(后置處理器):在其作用范圍內的每一個sampler元件之后執行
Assirtions(斷言):對其作用范圍內的每一個sampler元件執行后的結果執行校驗
Listener(監聽器):收集其作用范圍內的每一個sampler元件的信息並且呈現出來
在jmeter中,元件的作用域是靠test plan的樹形結構中元件的父子關系來確定的,其原則如下:
1) sampler不與其他元件相互作用,因此不存在作用域問題
2) Logic Controller只對其子節點中的sampler和Logic Controller作用
3) 除sampler和Logic Controller外的其他元件,如果是某個sampler的子節點,則該元件僅對其父節點作用
4) 除sampler和Logic Controller外的其他元件,如果其父節點不是sampler,則其作用域是該元件父節點下的其他所有后帶節點(包括子節點,子節點的子節點等)
2、元件的執行順序
在同一作用域范圍內,test plan中的元件按照以下順序執行:
1) Config Elements
2) Pre-porcessors
3) Timer
4) Sampler
5) Post-porcessors(除非Sampler得到的返回結果為空)
6) Assirtions(除非Sampler得到的返回結果為空)
7) Listener(除非Sampler得到的返回結果為空)
注意:Pre-porcessors、Post-porcessors和Assirtions等元件僅對Sampler作用,如在它們作用域內沒有任何Sampler,則不會被執行;
如果在同一作用域范圍內有多個同一類型的元件,則這些元件按照它們在test plan中的上下順序依次執行。