iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
1
自我挑戰組

DevOps學習之旅系列 第 20

Day 20 Jmeter 壓力測試工具

簡介

Apache JMeter 是 Apache 開發的壓力測試套件,程式是以JAVA寫成,可以在 Unix-Like 上執行,也可以在 MS-Windows 上執行,本篇是在 Mac OS X 上執行。

安裝

  • Oracle JAVA
  • Apache JMeter下載網址
    解壓縮檔案後,執行 bin 目錄下的 jmeter.bat ,Unix/Mac OS X 請執行 jmeter.sh
    (不保證舊版或新版JMeter畫面和此版相同)

執行

點選 Jmeter.sh 開啟程式
螢幕快照 2018-07-27 上午10.45.18.png

螢幕快照 2018-07-27 上午10.47.17.png

step 1 設定 Thread Group 群組

在 Test Plan 上點右鍵, Add → Threads (Users) → Thread Group

螢幕快照 2018-07-27 上午10.48.50.png

step 2

Thread Properties

  • Number of Threads(users) 設定會有幾個使用者來存取 (測試) 我們的服務
  • Ramp-Up Period (in seconds) 指得是「在幾秒內達到所設定的使用者人數」,可以讓受測服務一開始不會接受到太過巨量的 Requests

螢幕快照 2018-07-27 上午10.52.58.png

step 3 模擬 每個使用者,都會對我們的服務存取一定的次數

在 Thread Group 上點右鍵, Add → Logic Controller → Loop Controller

螢幕快照 2018-07-27 上午10.54.17.png

設定 Loop count (迴圈/重複執行次數)為 100 次

螢幕快照 2018-07-27 上午10.58.56.png

設定完 Thread Group 和 Loop Count 後,也就等於控制了對受測服務所發出的 request 數量,這邊作個簡單的計數的話就是:
100 (Users) * 100 (Loop Count) = 10,000 (Requests)
也就是我們的服務將接受 10,000 次 requests 的測試。

step 4 設定要測試的 http request 資料

建立一個 HTTP Request。在 Loop Controller 上點右鍵, Add → Sampler → HTTP Request

螢幕快照 2018-07-27 上午11.00.00.png

輸入要測試的內容值
設定 API 參數:
IP: 127.0.0.1
Method: POST
Path: /api/v1/member
勾選 Use multipart/form-data for POST
Send Parameters With the Requests:

  • account: ${__V(TestA10${__Random(100000,100000000000,)}@gmail.com)}
    亂數產生 TestA10 {亂數100000-100000000000} @gmail.com
  • password: 123456
  • nickname: ${__RandomString(10,abcdefghijklmnopqrstuvwxyz,)}
    隨機10個英文字
  • device_id: ${__UUID} 隨機產生 UUID
    設到這裡基本上就可以開始測試了,接下來要設的是針對壓力測試結果的報表。
    螢幕快照 2018-07-27 上午11.03.59.png

step 5 View Results Tree

Loop Controller 上點右鍵, Add → Listener → View Results Tree 加入 View Results Tree 來記錄每一筆 Request 的結果

螢幕快照 2018-07-27 上午11.13.34.png
Loop Controller 上點右鍵, Add → Listener → Summary Report 加入 Summary Report 來統計 Request 的結果

螢幕快照 2018-07-27 上午11.15.42.png

Loop Controller 上點右鍵, Add → Listener → Graph Results 加入 Graph Results 以圖表顯示執行的結果

螢幕快照 2018-07-27 上午11.16.17.png

step 6 開始測試

點選綠色向右的三角形執行
螢幕快照 2018-07-27 上午11.16.58.png
執行結束,Summary Report
螢幕快照 2018-07-27 上午11.33.50.png

Graph Results 的結果長醬子,由於是存取localhost 所以大多request是 7.9秒 就處理完成。
螢幕快照 2018-07-27 上午11.38.04.png

View Results Tree 裡可以看到實際傳回的 request 和 response data.
螢幕快照 2018-07-27 上午11.34.12.png

step 8 清除任務,重新開始

點選齒輪掃把圖示來清楚記錄,清除完成後再點選三角形執行
螢幕快照 2018-07-27 上午11.23.36.png

常用 Debug

設定 一個使用者 ,一個迴圈,來測試
使用 View Results Tree 來查看 Request 是否正常
螢幕快照 2018-07-27 上午11.26.39.png

Sampler result
螢幕快照 2018-07-27 上午11.29.58.png
Request
螢幕快照 2018-07-27 上午11.30.06.png
Response data
螢幕快照 2018-07-27 上午11.30.12.png

常見問題

問題:You should save your test plan before running it.
解決:執行前要先儲存專案
螢幕快照 2018-07-27 上午11.20.51.png

參考資料

Jmeter 基本介紹


上一篇
Day 19 專案 Docker Compose
下一篇
Day 21 Jenkins 整合 Slack 通知
系列文
DevOps學習之旅30

尚未有邦友留言

立即登入留言