最近在學習jmeter性能測試,發現單點登錄模式下,跨線程組使用cookie在獲取cookie是比較困難,這個不是從登錄接口獲取cookie,而是在登錄后自動單點登錄跳轉到相應頁面時,取跳轉后的cookie信息。下面總結下我使用分析的小心得,希望對大家能有幫助。
- 為了學習jmeter一些相關工具,我使用badboy錄制功能來完成這個接口及相關頁面的抓取。錄制成功后首先保存為.bx文件。然后輸出為jmeter文件,具體操作如下:
- 打開jmeter,去除一些重復或者錄制過程中沒必要的文件。
- 將所有錄制的文件做分類,如下所示:
- 公司每個功能模塊是用單點登錄的方式實現的,我首先實現cookie信息獲取。
- 先在apache-jmeter-5.1.1\bin文件夾下的jmeter.properties 文件中找到“CookieManager.save.cookies”將它的值改為true(圖一);
- 添加HTTP cookie管理器(圖二、圖三),不需要填寫任何信息。
(圖一)
(圖二)
(圖三)
這時已經可以獲取到cookie信息了,在同一個線程組下面可以使用。但是,跨線程組是不行的。那么就要分析獲取具體的cookie信息。
- 分析發現要獲取的cookie信息,並不是登錄接口返回的cookie信息,而是登錄后第一次跳轉后的cookie信息----我們公司是登錄后通過單點登錄到每個應用模塊中。(通過F12抓包分析每次單點登錄時傳遞的cookie信息值)
- 右鍵---添加----后置處理器----正則表達式提取器。提取cookie信息(圖四、圖五)
- 添加調試取樣器,添加結果樹,運行后,查看cookie取值情況。(圖六)
- 根據取值信息,添加bell預處理程序設置參數,以用於使用獲取的cookie值。(圖七)
- 設置全局作用的HTTP COOKIE managment ,並使用第3步獲取的cookie值(圖八)
(圖四)
(圖五)
(圖六)
(圖七)
(圖八)
- 設置好cookie以后,就開始正式使用,添加線程組,之前錄制的頁面、接口等移動進來(圖九)。
- 添加結果樹,查看接口是否請求成功、添加調試取樣器,查看是否生產cookie信息(有取到具體cookie信息,才能返回cookie信息。)。(圖九、圖十)
- 接口信息返回正確。如圖說示(圖十一)
- 如果沒有cookie信息,會跳轉到登錄頁面(圖十二)
(圖九)
(圖十)
(圖十一)
(圖十二)