jmeter(十九)HTTP屬性管理器


jmeter是一個開源靈活的接口和性能測試工具,當然也能利用jmeter進行接口自動化測試。在我們利用它進行測試過程中,最常用的sampler大概就是Http Request,

使用這個sampler時,一般都需要使用配置元件里的http屬性管理器,其作用就是用於盡可能的模擬瀏覽器的行為,在http協議層上定制發送給被測應用的http請求。

jmeter提供以下五種http屬性管理器:

HTTP Cache Manager:Cache管理器

HTTP Cookie Manager:cookie管理器

HTTP Header Manager:信息頭管理器

HTTP Authorzation Manager:授權管理器

HTTP Request Defaults:請求默認值

 

1、HTTP Cache Manager

Clear cache each iteration?(每次迭代清空緩存):如果選擇該項,則該屬性管理器下的所有Sampler每次執行時都會清除緩存;

Use Cache-Control/Expires header when processing GET requests:在處理GET請求時使用緩存/過期信息頭;

Max Number of elements in cache(緩存中的最大元素數):默認數值為5000,當然可以根據需要自行修改;

PS:如果Test Plan中某個Sampler請求的元素是被緩存的元素,則Test Plan在運行過程中會直接從Cache中讀取元素,這樣得到的返回值就會是空。

在這種情況下,如果為該Sampler設置了斷言檢查響應體中的指定內容是否存在,該斷言就會失敗!

為test plan增加該屬性管理器后,test plan運行過程中會使用Last-Modified、ETag和Expired等決定是否從Cache中獲取對應元素。

Cache:一般指的是瀏覽器的緩存

Last-Modified:文件在服務端最后被修改的時間

ETag:在HTTP協議規格說明中定義為:被請求變量的實體標記

Expired:給出的日期/時間之后;一般結合Last-Modified一起使用,用於控制請求文件的有效時間

PS:上面提到的幾個字段,都是HTTP協議里面的報文首部的字段,感興趣的請自行查閱相關內容,或可參考這篇博客:瀏覽器緩存詳解

 

2、HTTP Cookie Manager

Clear cookie each iteration?(每次迭代時清除自己會話區域的所有cookie);

Implementation:實現方式;

Cookie Policy:cookie的管理策略,建議選擇compatibility,兼容性強;

PS:對於JMeter來說,一個test plan只能有一個cookie管理器。因為當多個magager存在時,JMeter沒有方法來指定使用那個manager;

同時,一個cookie manager中的存儲的cookie也不能被其他cookie manager所引用,所以同一個計划中不建議使用多個cookie manager;

如果你想讓JMeter的cookie manager支持跨域,  修改JMeter.property :CookieManager.check.cookies=false;

HTTP cookie Manager管理cookie有兩種方法:

①、它可以像瀏覽器一樣存儲和發送cookie,如果發送一個帶cookie的http請求,cookie manager會自動存儲該請求的cookies,並且后面如果發送同源站點的http請求時,

都可以用這個cookies;每個線程都有自己的“cookie存儲區域”,所以當測試一個使用cookie來管理session信息的web站點時,每個JMeter線程都有自己的session;

PS:以這種自動收集的方式收集到的cookie不會在cookie manager中進行展示,但是運行后通過查看結果樹可以查看到cookie信息,接受到的cookie會被自動存儲在線程變量中,

但是從Jmeter2.3.2版本后,默認不再存儲,如果你想要manager自動存儲收集到 的cookie,你需要修改JMeter.property:CookieManager.save.cookies=true;

存儲的時候,cookie的key會以“COOKIE_”為前綴命名(默認情況),如果你想自定義這個前綴,修改JMeter.property:CookieManager.name.prefix= ;

②、除了上面說的自動收集,還可以手動添加cookie,點擊界面下方的Add按鈕,然后輸入cookie的相關信息;

PS:一般不建議手動添加,可以將cookie通過瀏覽器插件(比如Firefox的firebug)導出cookie,然后點擊界面下方的load按鈕,載入剛才導出的cookie文件即可。

關於Cookie:

cookie一般分為2種:持久cookie(Permanent cookie)和會話cookie(Session cookie):

持久cookie:保存在客戶端本地硬盤上,在瀏覽器被關閉后仍然存在;

會話cookie:通常保存在瀏覽器進程的會話中,一旦瀏覽器會話結束或關閉,cookie就不再存在。

 

3、HTTP Header Manager

通常Jmeter向服務器發送http請求的時候,后端需要一些驗證信息,比如說web服務器需要帶過去cookie給服務器進行驗證,一般就是放在請求頭(header)中,或者請求傳參

需要定義參數格式等;因此對於此類請求,在Jmeter中可以通過HTTP信息頭管理器,在添加http請求之前,添加一個HTTP信息頭管理器,發請求頭中的數據通過鍵值對的形式放到

HTTP信息頭管理器中,在往后端請求的時候就可以模擬web攜帶header信息。

PS:可以點擊添加、刪除按鈕等來新增和刪減信息頭的數據,也可通過載入按鈕來將信息頭數據加載進去(信息頭數據較多時推薦使用)。

 

4、HTTP Authorzation Manager

該屬性管理器用於設置自動對一些需要驗證的頁面進行驗證和登錄;

基礎URL:需要使用認證頁面的基礎URL,如上圖,當取樣器訪問它時,jmeter會使用定義的username和password進行認證和登錄;

用戶名:用於認證和登錄的用戶名;

密碼:用於認證和登錄的口令;

域:身份認證頁面的域名;

Realm:Realm字串;

Mechanism:機制;jmeter的http授權管理器目前提供2種認證機制:BASIC_DIGEST和KERBEROS:

           BASIC_DIGEST:HTTP協議並沒有定義相關的安全認證方面的標准,而BASIC_DIGEST是一套基於http服務端的認證機制,保護相關資源避免被非法用戶訪問,

                             如果你要訪問被保護的資源,則必需要提供合法的用戶名和密碼。它和HTTPS沒有任何關系(前者為用戶認證機制,后者為信息通道加密)。

           KERBEROS:一個基於共享秘鑰對稱加密的安全網絡認證系統,其避免了密碼在網上傳輸,將密碼作為對稱加密的秘鑰,通過能否解密來驗證用戶身份;

 

5、HTTP Request Defaults

HTTP請求默認值,這個屬性管理器用於設置其作用范圍內的所有HTTP Request默認值,包括:

服務器請求或IP:請求發送的目標服務器名稱或地址;

端口:目標服務器的端口號,默認80;

協議:箱目標服務器發送請求所采用的協議,HTTP或HTTPS,默認HTTP;

Content encoding :內容的編碼方式,默認值為iso8859;

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

同請求一起發送參數 : 對於帶參數的URL ,jmeter提供了一個簡單的對參數化的方法:用戶可以將URL中所有參數設置在本表中,表中的每一行是一個參數值對;

從HTML文件獲取所有有內含的資源:該選項被選中時,jmeter在發出HTTP請求並獲得響應的HTML文件內容后,還對該HTML進行Parse 並獲取HTML中包含的

所有資源(圖片、flash等),默認不選中;如果用戶只希望獲取頁面中的特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,

這樣,只有能匹配指定正則表達式的URL指向資源會被下載。

注意事項:

①、一個測試計划中可以有多個Defaults組件,多個Defaults組件的默認值會疊加;

②、兩個default中都定義的"Server Name or IP",顯示在發送請求時只能使用一個;

參考博客:http://www.cnblogs.com/puresoul/p/4853276.html

        http://blog.chinaunix.net/uid-29578485-id-5604160.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM