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