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