安裝 k6
1 2 3 4 5 6 7 8 9 10 11
| sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
|
建立檔案 script.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import http from 'k6/http'; import { sleep } from 'k6';
export default function () { let url = '[目標 API]';
let payload = JSON.stringify([請求物件]);
let params = { headers: { 'accept': 'application/json, text/plain, */*', 'authorization': '[JWT 認證]', 'content-type': 'application/json' }, };
let res = http.post(url, payload, params); }
|
測試情境
迭代測試:
情境: 2 個用戶總共執行 2 次
1
| k6 run test.js --vus 2 --iterations 2
|
冒煙測試: 確認服務基本可用
情境: 3 個用戶 1 分內持續執行
1
| k6 run test.js --vus 3 --duration 1m
|
負載測試: 確認在預測用戶下的執行效能
情境: 5 分鐘內增加至 100 人,在持續 30 分鐘後,用 5 分鐘內清空人數
1
| k6 run test.js --stage "5m:100,30m:100,5m:0"
|
壓力測試: 確認流量平緩增加執行的效能
情境: 10 分鐘內增加至 200 人,在持續 30 分鐘後,用 5 分鐘內清空人數
1
| k6 run test.js --stage "10m:200,30m:200,5m:0"
|
峰值測試: 確認流量瞬間湧入執行的效能
情境: 2 分鐘內增加至 2000 人後,用 1 分鐘內清空人數
1
| k6 run test.js --stage "2m:2000,1m:0"
|
浸泡測試: 確認長時間持續執行的效能
情境: 5 分鐘內增加至 100 人,在持續 8 小時後,用 5 分鐘內清空人數
1
| k6 run test.js --stage "5m:100,8h:100,5m:0"
|
斷點測試: 確認資源消耗至最大後的效能
2 小時內,用戶增加至 20000 人
1
| k6 run test.js --stage "2h:20000"
|
結果顯示
JSON 格式
1
| k6 run --stage 30s:10 --out json=test-result.json test.js
|
儀錶板
1 2 3
| K6_WEB_DASHBOARD='true' \ K6_WEB_DASHBOARD_EXPORT='html-report.html' \ k6 run --stage 30s:10 test.js;
|