JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)
主要內容
- JMeter錄製指令碼並進行壓力測試使用者登陸場景,並以CAS SSO單點登陸為例
環境與參考
jvm版本: 1.8.0_65
jmeter版本: 2.13
firefox版本: 39.0.3
參考來源:
51testing: Jmeter 快速入門教程(四)--錄製複雜web測試指令碼
準備
請參照JMeter (1) —— JMeter與WebDriver安裝與測試(101 Tutorial) 安裝好JMeter。
需要注意的是:
- JMeter的版本
- jar依賴衝突
- firefox版本
待測試的CAS環境
架構
配置
請參照以下文章搭建配置好CAS單點登陸的本地環境。
測試
注意:我們這裡只是以CAS單點登陸為應用場景進行測試,此測試可以推廣到其他的web應用的登陸場景,也可以擴充套件到更為豐富的流程或場景中。
準備
修改JMeter配置jmeter.properties
/usr/local/Cellar/jmeter/2.13/libexec/bin
關鍵配置 CookieManager.save.cookies=true
# CookieManager behaviour - should cookies with null/empty values be deleted? # Default is true. Use false to revert to original behaviour #CookieManager.delete_null_cookies=true # CookieManager behaviour - should variable cookies be allowed? # Default is true. Use false to revert to original behaviour #CookieManager.allow_variable_cookies=true # CookieManager behaviour - should Cookies be stored as variables? # Default is false #CookieManager.save.cookies=false # Richard modify 2016-01-06 CookieManager.save.cookies=true
也可以順便將需要的log開啟
log_level.jmeter=INFO log_level.jmeter.junit=DEBUG #log_level.jmeter.control=DEBUG #log_level.jmeter.testbeans=DEBUG #log_level.jmeter.engine=DEBUG #log_level.jmeter.threads=DEBUG #log_level.jmeter.gui=WARN #log_level.jmeter.testelement=DEBUG #log_level.jmeter.util=WARN #log_level.jmeter.protocol.http=DEBUG # For CookieManager, AuthManager etc: # Richard modify 2016-01-06 log_level.jmeter.protocol.http.control=DEBUG #log_level.jmeter.protocol.ftp=WARN #log_level.jmeter.protocol.jdbc=DEBUG #log_level.jmeter.protocol.java=WARN #log_level.jmeter.testelements.property=DEBUG log_level.jorphan=INFO
記得在配置儲存後重啟jmeter
在工作站(WorkBench)下新增“HTTP(S) Test Script Recorder”
配置“HTTP(S) Test Script Recorder”
配置瀏覽器代理
Firefox -> Preferences -> Advanced -> Network -> Connection -> Settings... ->
錄製
點選“HTTP(S) Test Script Recorder”最下面的Start按鈕
確認
直接用我們配置好的瀏覽器訪問供測試的CAS環境。
錄製完成後,我們會在選擇好的目標控制器(Test Controller)下找到錄製好的配置:
完成後點選“Stop”按鈕
修改
仔細的童鞋發現,Recorder會將很多http請求都錄製下來,包括對css和js檔案的請求,我們可以去掉一些不必要的。修改完成後的執行緒組http請求配置如下圖:
測試
配置執行緒組
新增監聽器Listener(Test Plan -> Add -> Listener -> *)
View Results Tree
Graph Results
Summary Report
Response Time Graph
點選執行
結果
View Results Tree
Graph Results
Summary Report
Response Time Graph
錄製測試cnblogs登陸
我們同樣可以cnblogs為目標系統,用JMeter來錄製並測試cnblogs的登陸過程,在此不贅述,感興趣的童鞋自己嘗試一下。
問題
擴充套件
在使用“HTTP(S) Test Script Recorder”這種方式錄製好指令碼,並修改後可以模擬一個瀏覽器客戶端向伺服器傳送請求,由於每個執行緒傳送請求的過程不依賴於某個特定配置好的Web Driver,所以不會存在“併發或重複執行中Cookie Session無法清除的問題 ”。當我們將併發執行緒數增加(),迴圈次數也增加時(),就會遇到文章Sahi (3) —— 壓力測試Load Test以CAS SSO登陸場景為例(103 Tutorial) 中提到這個4.1.3版本CAS Server的一個bug。