根據作用域原則,這些元件的作用域分別為:
1. HTTP請求 、FTP請求 、TCP取樣器、 JDBC Request 元件沒有作用域名概念
2.循環控制器 的作用域為 FTP請求 、TCP取樣器和 隨即控制器
3.固定定時器作用于 HTTP請求 , Uniform Random Timer 作用于所有取樣器
4.響應斷言作用于JDBC Request , XML斷言作用于FTP請求 、TCP取樣和JDBC Request 。
5. 圖形結果作用于FTP請求 、TCP取樣和JDBC Request ,聚合報告作用于作用于所有取樣器。
其實,通過上面的分析,并沒有你想象的那么復雜,我們從各個元件的層次結構可以判斷每個元件的作用域。
Jmeter 中的邏輯控制器(Config Elements)在其作用范圍內的行為與其他元件相比稍有不同。邏輯控制器元件分兩大類:默認配置(HTTP默認請求、FTP默認請求等)和 管理(HTTP 頭管理、HTTP cookie 管理等)。
其中默認配置(Configuration Defaults)元件中設置的值可以在作用域內疊加,例如,在一個測試計劃中添加兩個HTTP 默認請求,其中第一個默認設置 Server name or IP 為www.google.com ,第二個默認設置Path 為/page-not-exist , 則在這兩個元件作用域內的所有HTTP 默認請求,其默認的Server name or IP 和Path 均為Server name or IP 和 /page-not-exist 。(你有一個故事,我有一個笑話,我們一交換,兩個人都分別擁有了一個故事加一個笑話。)
管理(Manager)類邏輯控制器元件的效果則不能進行疊加。如果兩個或兩個以上相同的管理類元件作用域有重疊。則在重疊作用域內的取樣器元件只會隨即受到其中一個的作用,這樣會導致取樣器行為的不確定性。因此,在使用管理類邏輯控制器時,一定要注意保證相同的管理類元件的作用域不發生重疊。
元件的執行順序
了解了元件有作用域之后,來看看元件的執行順序,元件執行順序的規則很簡單,在同一作用域名范圍內,測試計劃中的元件按照如下順序執行。
(1)配置元件(config elements )
(2)前置處理程序(Per-processors)
(3)定時器(timers )
(4)取樣器(Sampler)
(5)后置處理程序(Post-processors) (除非Sampler 得到的返回結果為空)。
(6)斷言(Assertions)(除非Sampler 得到的返回結果為空)。
(7)監聽器(Listeners)(除非Sampler 得到的返回結果為空)。
關于執行順序,有兩點需要注意:
1.前置處理器、后置處理器和斷言等元件公能對 取樣器作用,因此,如果在它們的作用域內沒有任何取樣器,則不會被執行。
2. 如果在同一作用域范圍內有多個同一類型的元件,則這些元件按照它們在測試計劃中的上下順序一次執行。