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。