1. 程式人生 > >[搬運工系列]-JMeter(八)HTTP屬性管理器HTTP Cookie Manager、HTTP Request Defaults

[搬運工系列]-JMeter(八)HTTP屬性管理器HTTP Cookie Manager、HTTP Request Defaults

發出 啟動 管理 red 增加 ron cookies ria 新建

Test Plan的配置元件中有一些和HTTP屬性相關的元件:HTTP Cache Manager、HTTP Authorization Manager、HTTP Cookie Manager、HTTP Header Manager、HTTP Request Defaults等

啟動jmeter,默認有一個測試計劃,然後,修改計劃名稱,盡量使其變得有意義,容易看懂,然後,新建一個線程組

技術分享圖片

這裏線程數我設置為1,方便演示

技術分享圖片

然後,添加一個http信息頭管理器

技術分享圖片

這裏解釋一下為什麽要添加http信息頭管理器:

JMeter不是瀏覽器,因此其行為並不和瀏覽器完全一致。這些JMeter提供的HTTP屬性管理器用於盡可能模擬瀏覽器的行為,在HTTP協議層上定制發送給被測應用的HTTP請求。

(1)HTTP Request Defaults(請求默認值)

該屬性管理器用於設置其作用範圍內的所有HTTP的默認值,可被設置的內容包括HTTP請求的host、端口、協議等。

一個Test Plan中可以有多個HTTP Request Defaults,處於多個HTTP Request Defaults作用域內的Sampler使用HTTP Request Defaults中設置值的疊加值。

事例

HTTP Request Defaults1:Server Name or IP: www.baidu.com,一個參數:aaa=111

HTTP Request Defaults2:Server Name or IP: www.qq.com,兩個參數:bbb=22,aaa=333

運行結果

技術分享圖片

總結:

1、一個測試計劃中可以有多個Defaults組件,多個Defaults組件的默認值會疊加,如上圖,雖然兩個Defaults 組件都定義了參數aaa,但發出的請求還是會疊加起來。

2、兩個default中都定義的"Server Name or IP",顯示在發送請求時只能使用一個,這裏使用的是第一個default定義的值www.baidu.com

事例代碼:下載

(2)HTTP Authorization Manager(授權管理器)

該屬性管理器用於設置自動對一些需要NTLM驗證的頁面進行認證和登錄。如下圖:監控tomcat

技術分享圖片

(3)HTTP Cache Manager

該屬性管理器用於模擬瀏覽器的Cache行為。為Test Plan增加該屬性管理器後,Test Plan運行過程中會使用Last-Modified、ETag和Expired等決定是否從Cache中獲取相應的元素。

技術分享圖片

註意:如果Test Plan中的某個Sampler請求的元素是被Cache的元素,則Test Plan在運行過程中會直接從Cache中讀取該元素,這樣Sampler得到的返回值就會是空。在這種情況下,如果為該Sampler設置了Assertion檢查響應體中的制定內容是否存在,該Assertion就會失敗。

(4)HTTP Cookie Manager(cookie管理器)

該屬性管理器用於管理Test Plan運行時的所有Cookie。HTTP Cookie Manager可以自動儲存服務器發送給客戶端的所有Cookie,並在發送請求時附加上合適的Cookie.

同時,用戶也可以在HTTP Cookie Manager中手工添加一些Cookie,這些被手工添加的Cookie會在發送請求時被自動附加到請求。

技術分享圖片

註意:

  如果在一個測試計劃內有多個Cookie Manager ,Jmeter目前無法指定哪個被使用。所以,一個測試計劃內最好只有一個cookie manager。並且,一個manager裏的 cookie 並不能被其它manager所引用。所以在使用多個Cookie Managers 時要謹慎。

  同理,上面這個規則同樣適用於config element下面的其它manager:

技術分享圖片

如果選中"Clear cookies each iteration?"此項,意味著線程在每次叠代時清除自己會話中的所有Cookie.

(5)HTTP Header Manager(信息頭管理器)

該屬性管理器用於定制Sampler發出的HTTP請求的請求頭的內容。不同的瀏覽器發出的HTTP請求具有不同的Agent,訪問某些有防盜鏈的頁面時需要正確的Refer...這些情況下都需要通過HTTP Header Manager來保證發送的HTTP請求是正確的。如下圖:

技術分享圖片

Content-Type意思可以理解為參數名稱、類型,值下面輸入對應的參數類型就行了,這裏我測試時候需要傳輸json類型,因此就填入了application/json

接著,添加Sampler(取樣器)→http請求

技術分享圖片

按照截圖所示,填入測試的服務器地址、端口、所用的戶協議、方法,這裏方法我用的是POST,因為傳輸的參數有關於用戶個人信息,然後填入路徑,選擇Body Data;

關於http請求的的屬性參數說明:

1)名稱:用於標識一個sample。建議使用一個有意義的名稱

2)註釋:對於測試沒任何影響,僅用來記錄用戶可讀的註釋信息

3)服務器名稱或IP:http請求發送的目標服務器名稱或者IP地址,比如http://www.baidu.com

4)端口號:目標服務器的端口號,默認值為80,可不填

5)協議:向目標服務器發送http請求時的協議,http/https,大小寫不敏感,默認http

6)方法:發送http請求的方法(鏈接:http://www.cnblogs.com/imyalost/p/5630940.html)

7)Content encoding:內容的編碼方式(Content-Type=application/json;charset=utf-8)

8)路徑:目標的URL路徑(不包括服務器地址和端口)

9)自動重定向:如果選中該項,發出的http請求得到響應是301/302,jmeter會重定向到新的界面

10)Use keep Alive:jmeter 和目標服務器之間使用 Keep-Alive方式進行HTTP通信(默認選中)

11)Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用

12)Parameters、Body Data以及Files Upload的區別:

1. parameter是指函數定義中參數,而argument指的是函數調用時的實際參數

2. 簡略描述為:parameter=形參(formal parameter), argument=實參(actual parameter)

3. 在不很嚴格的情況下,現在二者可以混用,一般用argument,而parameter則比較少用

While defining method, variables passed in the method are called parameters.

當定義方法時,傳遞到方法中的變量稱為參數.

While using those methods, values passed to those variables are called arguments.

當調用方法時,傳給變量的值稱為引數.(有時argument被翻譯為“引數“)

4、Body Data指的是實體數據,就是請求報文裏面主體實體的內容,一般我們向服務器發送請求,攜帶的實體主體參數,可以寫入這裏

5、Files Upload指的是:從HTML文件獲取所有有內含的資源:被選中時,發出HTTP請求並獲得響應的HTML文件內容後還對該HTML

進行Parse 並獲取HTML中包含的所有資源(圖片、flash等):(默認不選中)

如果用戶只希望獲取特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,只有能匹配指定正則表達式的URL指向資源會被下載

接下來可以給這個測試計劃添加一個監視器,常用的監視器有“查看結果樹”和“聚合報告”

添加好監視器,點擊運行,開始測試

技術分享圖片

如上,測試結束後,如果我們的請求成功發送給服務器,那麽結果樹裏面的模擬請求會顯示為綠色,可以通過取樣器結果裏面的響應狀態碼信息來判斷

也可以點擊請求模塊,查看我們發送的請求

技術分享圖片

裏面有我們發送的請求的方法、協議、地址以及實體主體數據,以及數據類型,大小,發送時間,客戶端版本等信息

響應數據:裏面包含服務器返回給我們的響應數據實體,如下圖

技術分享圖片

HTTP協議相關內容

http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html

上面的這些內容,基本包含了整個請求→響應的過程,某些內容或者數據只是我用來舉例說明的,具體還需要參考實際的項目內容等方面

[搬運工系列]-JMeter(八)HTTP屬性管理器HTTP Cookie Manager、HTTP Request Defaults