JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

Richaaaard發表於2016-01-09

JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)


主要內容

  • JMeter錄製指令碼並進行壓力測試使用者登陸場景,並以CAS SSO單點登陸為例

環境與參考

jvm版本: 1.8.0_65

jmeter版本: 2.13

firefox版本: 39.0.3

參考來源:

jmeter官方網站

cnblogs: JMeter基礎之—錄製指令碼

51testing: Jmeter 快速入門教程(四)--錄製複雜web測試指令碼

準備

請參照JMeter (1) —— JMeter與WebDriver安裝與測試(101 Tutorial) 安裝好JMeter。

需要注意的是:

  • JMeter的版本
  • jar依賴衝突
  • firefox版本

待測試的CAS環境

架構

JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

配置

請參照以下文章搭建配置好CAS單點登陸的本地環境。

測試

注意:我們這裡只是以CAS單點登陸為應用場景進行測試,此測試可以推廣到其他的web應用的登陸場景,也可以擴充套件到更為豐富的流程或場景中。

準備

  1. 修改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

  2. 在工作站(WorkBench)下新增“HTTP(S) Test Script Recorder”

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  3. 配置“HTTP(S) Test Script Recorder”

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  4. 配置瀏覽器代理

    Firefox -> Preferences -> Advanced -> Network -> Connection -> Settings... ->

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

錄製

  1. 點選“HTTP(S) Test Script Recorder”最下面的Start按鈕

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

    確認

    直接用我們配置好的瀏覽器訪問供測試的CAS環境。

    錄製完成後,我們會在選擇好的目標控制器(Test Controller)下找到錄製好的配置:

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  2. 完成後點選“Stop”按鈕

修改

仔細的童鞋發現,Recorder會將很多http請求都錄製下來,包括對css和js檔案的請求,我們可以去掉一些不必要的。修改完成後的執行緒組http請求配置如下圖:

JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

測試

  • 配置執行緒組

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  • 新增監聽器Listener(Test Plan -> Add -> Listener -> *)

    • View Results Tree

    • Graph Results

    • Summary Report

    • Response Time Graph

  • 點選執行

結果

  • View Results Tree

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  • Graph Results

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  • Summary Report

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

  • Response Time Graph

    JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

錄製測試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。

JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

JMeter (3) —— JMeter錄製指令碼並壓力測試使用者登陸場景以CAS SSO為例(101 Tutorial)

結束

相關文章