Test Plan的配置元件中有一些和HTTP屬性相關(guān)的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager、HTTP Header Manager、HTTPRequest Defaults等,這些是什么呢?
JMeter不是瀏覽器,因此其行為并不和瀏覽器完全一致。這些JMeter提供的HTTP屬性管理器用于盡可能模擬瀏覽器的行為,在HTTP協(xié)議層上定制發(fā)送給被測應(yīng)用的HTTP請求。
(1)HTTPRequest Defaults
該屬性管理器用于設(shè)置其作用范圍內(nèi)的所有HTTP的默認(rèn)值,可被設(shè)置的內(nèi)容包括HTTP請求的host、端口、協(xié)議等。
一個Test Plan中可以有多個HTTPRequest Defaults,處于多個HTTPRequest Defaults作用域內(nèi)的Sampler使用HTTPRequest Defaults中設(shè)置值的疊加值。
事例:
HTTP Request Defaults1:Server Name or IP: www.baidu.com,一個參數(shù):aaa=111
HTTP Request Defaults2:Server Name or IP: www.qq.com,兩個參數(shù):bbb=22,aaa=333
運(yùn)行結(jié)果:

總結(jié):
1、一個測試計(jì)劃中可以有多個Defaults組件,多個Defaults組件的默認(rèn)值會疊加,如上圖,雖然兩個Defaults 組件都定義了參數(shù)aaa,但發(fā)出的請求還是會疊加起來。
2、兩個default中都定義的"Server Name or IP",顯示在發(fā)送請求時只能使用一個,這里使用的是第一個default定義的值www.baidu.com
事例代碼:下載
(2)HTTP Authorization Manager
該屬性管理器用于設(shè)置自動對一些需要NTLM驗(yàn)證的頁面進(jìn)行認(rèn)證和登錄。如下圖:監(jiān)控tomcat

(3)HTTP Cache Manager
該屬性管理器用于模擬瀏覽器的Cache行為。為Test Plan增加該屬性管理器后,Test Plan運(yùn)行過程中會使用Last-Modified、ETag和Expired等決定是否從Cache中獲取相應(yīng)的元素。

注意:如果Test
Plan中的某個Sampler請求的元素是被Cache的元素,則Test
Plan在運(yùn)行過程中會直接從Cache中讀取該元素,這樣Sampler得到的返回值就會是空。在這種情況下,如果為該Sampler設(shè)置了
Assertion檢查響應(yīng)體中的制定內(nèi)容是否存在,該Assertion就會失敗。
(4)HTTP Cookie Manager
該屬性管理器用于管理Test Plan運(yùn)行時的所有Cookie。HTTP Cookie Manager可以自動儲存服務(wù)器發(fā)送給客戶端的所有Cookie,并在發(fā)送請求時附加上合適的Cookie.
同時,用戶也可以在HTTP Cookie Manager中手工添加一些Cookie,這些被手工添加的Cookie會在發(fā)送請求時被自動附加到請求。

注意:
如果在一個測試計(jì)劃內(nèi)有多個Cookie Manager ,Jmeter目前無法指定哪個被使用。所以,一個測試計(jì)劃內(nèi)最好只有一個cookie manager。并且,一個manager里的 cookie 并不能被其它manager所引用。所以在使用多個Cookie Managers 時要謹(jǐn)慎。
同理,上面這個規(guī)則同樣適用于config element下面的其它manager:

如果選中"Clear cookies each iteration?"此項(xiàng),意味著線程在每次迭代時清除自己會話中的所有Cookie.
(5)HTTP Header Manager
該屬性管理器用于定制Sampler發(fā)出的HTTP請求的請求頭的內(nèi)容。不同的瀏覽器發(fā)出的HTTP請求具有不同的Agent,訪問某些有防盜鏈的
頁面時需要正確的Refer...這些情況下都需要通過HTTP Header Manager來保證發(fā)送的HTTP請求是正確的。如下圖:
