iT邦幫忙

2

鼠年全馬鐵人挑戰 WEEK 29:負載性能測試 - JMeter (上)

         Photo on Hashedin by Sripathi Krishnan


前言

上週介紹了 Apache Bench 的性能測試工具
透過 ab 的指令來輕鬆快速地進行測試
而這週所要介紹的也與 Apache 有關
那就是 Apache 開發的另一個開源測試工具 Apache JMeter

Apache JMeter 是一種較常聽到的開源測試工具
而其測試又以負載測試和性能測試為主要功能
透過 JMeter 可以分析和衡量應用程式或其他服務的性能
針對多個併發的用戶流量測試應用程式


介紹 JMeter

Open Source:免費的 JMeter 允許開發人員使用源代碼進行開發
友善的 GUI:易於使用的 JMeter 圖形化使用者介面
多線程框架:通過單線程同時併發達成多線程
可視化報告:支援多種顯示格式的測試結果
快速安裝:容易安裝,快速啟用
支持多協議:包括 HTTP, JDBC, LDAP, SOAP, JMS 和 FTP
腳本測試:可以藉由 Bean Shell 和 Selenium 進行自動化測試

安裝 JMeter

  • 安裝 Java Developer Kit (JDK)

    因為 JMeter 是由 Java 寫成的
    所以必須先行安裝 Java Developer Kit
    JDK 的版本至少要 8 以上
    可以透過指令 $ java -version 來查看 java 版本

    Java SE-下載|Oracle技術網|甲骨文
    可以依照自己的作業系統,安裝想要的版本
    小弟是直接裝最新版的 Java SE 14

  • 安裝 JMeter

    前往 JMeter 的官方網站進行安裝
    Apache JMeter - Download Apache JMeter

    下載完成後點選檔案將其解壓縮
    就完成安裝囉~ (就是這麼的簡單)

快速使用 JMeter

接著透過指令來開啟 JMeter 的 GUI 介面
$ cd apache-jmeter-<version>/bin && sh jmeter

完成開啟後 就可以輕鬆的透過 GUI 介面來操作設定了~
而以下所以快速使用的測試案例是:在 Google 搜尋文章

  • 新增 Thread Group

    對左側預設的 Test Plan 按右鍵 接著依序選擇
    Add > Threads(Users) > Thread Group

  • 編輯 Thread Group 設定

    Number of Threads (users):執行緒數量,相當於使用者數量
    Ramp-up period (seconds):該時間內啟動完所有的執行緒
    Loop Count:上述兩樣的設定值,執行的重複次數

  • 新增 Http Request

    對左側的 Thread Group 按右鍵 接著依序選擇
    Add > Sampler > HTTP Request

  • 編輯 Http Request 設定

    依照所要執行的內容進行填寫
    Protocol [http]:通訊協定 以 http 與 https 較為常見
    Server Name or IP:主機名稱或 IP 位置
    HTTP Method:可以透過下拉式選單來選擇所用的 method
    Path:路徑

  • 新增 Results Tree 報告

    對左側的 Thread Group 按右鍵 接著依序選擇
    Add > Listener > View Results Tree

  • 新增 Aggregate Report 報告

    對左側的 Thread Group 按右鍵 接著依序選擇
    Add > Listener > Aggregate Report

  • 執行測試

    點擊上方工具列的綠色 Star 按鈕 執行 Test Plan

  • 查看測試結果

    點擊 View Results Tree 查看報告

    中間下方的部分 出現了 10 筆 HTTP Request (也就是剛剛所設定的筆數)
    任意點擊其中一筆 Request 可在右方的區塊中查看回傳結果的內容
    藉此確認回傳內容為測試的預期結果

    點擊 Aggregate Report 查看報告

    右方的部分 出現了測試結果的彙整數據
    Samples:發送請求筆數 (10筆)
    Average:平均回應時間 (1120ms)
    Median:回應時間的中間值 (830ms)
    90% Line:百分之 90 的最高回應時間 (2127ms)
    95% Line:百分之 95 的最高回應時間 (2127ms)
    99% Line:百分之 99 的最高回應時間 (2575ms)
    Min:回應時間的最小值 (322ms)
    Maximum:回應時間的最大值 (2575ms)
    Error %:執行的錯誤率 (0.00%)
    Throughput:吞吐量 (2.7/sec)
    Received KB/sec:下載速率 (718.29)
    Sent KB/sec:上傳速率 (1.05)

產生 Report

透過指令執行 GUI 所設置完的 jmx 檔案
也就是剛剛所存的 <scriptName>.jmx
$ sh jmeter -n -t <scriptName>.jmx -l <resultName>.jtl -e -o /<folderName>

-n:以非 GUI 的方式執行 JMeter,也就是以 CLI 進行操作
-t:執行測試腳本的路徑,副檔名為 .jmx (testScript.jmx)
-l:記錄測試結果的檔案路徑與名字,副檔名為 .jtl (testResult.jtl)
-e:測試腳本執行完後產生 html 報告
-o:測試腳本 html 報告的資料夾,資料夾必須不存在 (ReportFolder)

當執行過一次 如果在執行一次 將會跳錯誤提示
錯誤的錯誤原因是因為 資料夾已存在
An error occurred: Cannot write to '/<folderName>' as folder is not empty

這個時候就要在剛剛的指令加上 -f
$ sh jmeter -n -t <scriptName>.jmx -l <resultName>.jtl -f -e -o /<folderName>

-f:在開始執行測試腳本前強制刪除現有的測試結果文件

執行玩指令後 可以到 <folderName> 中找到 index.html 的檔案
下面截圖為小弟的執行結果


結尾

這週的內容小弟只是介紹了 JMeter 的皮毛
以一些較常被使用的基本操作與設定 來做介紹與分享

如果有疑問或是有錯誤,還請各位大哥大姐提點。
小弟將繼續往下週邁進。 ─=≡Σ((( つ•̀ω•́)つ


參考文獻

官方網站 (載點)

相關文章


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言