簡介
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畫面和此版相同)
執行
step 1 設定 Thread Group 群組
在 Test Plan 上點右鍵, Add → Threads (Users) → Thread Group
step 2
Thread Properties
- Number of Threads(users) 設定會有幾個使用者來存取 (測試) 我們的服務
- Ramp-Up Period (in seconds) 指得是「在幾秒內達到所設定的使用者人數」,可以讓受測服務一開始不會接受到太過巨量的 Requests
step 3 模擬 每個使用者,都會對我們的服務存取一定的次數
在 Thread Group 上點右鍵, Add → Logic Controller → Loop Controller
設定 Loop count (迴圈/重複執行次數)為 100 次
設定完 Thread Group 和 Loop Count 後,也就等於控制了對受測服務所發出的 request 數量,這邊作個簡單的計數的話就是:
100 (Users) * 100 (Loop Count) = 10,000 (Requests)
也就是我們的服務將接受 10,000 次 requests 的測試。
100 (Users) * 100 (Loop Count) = 10,000 (Requests)
也就是我們的服務將接受 10,000 次 requests 的測試。
step 4 設定要測試的 http request 資料
建立一個 HTTP Request。在 Loop Controller 上點右鍵, Add → Sampler → HTTP Request
輸入要測試的內容值
設定 API 參數:
IP: 127.0.0.1
Method: POST
Path: /api/v1/member
勾選 Use multipart/form-data for POST
Send Parameters With the Requests:
設定 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
設到這裡基本上就可以開始測試了,接下來要設的是針對壓力測試結果的報表。
step 5 View Results Tree
Loop Controller 上點右鍵, Add → Listener → View Results Tree 加入 View Results Tree 來記錄每一筆 Request 的結果
Loop Controller 上點右鍵, Add → Listener → Graph Results 加入 Graph Results 以圖表顯示執行的結果
step 6 開始測試
step 8 清除任務,重新開始
常用 Debug
進階應用
websocket
流程測試
- 計時器 counter 使用
- 創建會員 依據計時器來創建依序的會員
- 登入 輸入帳號密碼,取得使用者 ID and Token