這個指標(Metrics)等同於就是我們測試完的數據,只是透過指標(Metrics)的方式可以更清楚知道測試結果要落於什麼樣的標準內才算預期。
主要介紹幾個較常用的
http_req_receiving、http_req_sending、http_req_waiting 三者關係圖
上述的參數,主要可以分析整個測試的過程,同時也可以了解該 API 的詳細資料針對響應速度、等待回應時間等等,好讓相關團隊可以進行優化分析。
其實就是類似斷言。僅會返回 通過(pass)或失敗(fail)
但這邊的斷言是,不論成功或失敗,腳本皆仍會繼續執行。
smaple code
export default function () {
const res = http.get('http://test.k6.io/');
check(res, {
'is status 200': (r) => r.status === 200,
});
}
or
export default function () {
const res = http.get('http://test.k6.io/');
check(res, {
'is status 200': (r) => r.status === 200,
'body size is 11,105 bytes': (r) => r.body.length == 11105,
});
}
但如果要需要特別處理錯誤情境時,可以使用 Thresholds。
強烈建議多參考: 官方文檔,寫得非常清楚。
主要是可以為測試的結果自訂一個標準限制,中文稱為【門檻值】(翻譯是這樣說XD
可以針對 各個指標 限制於某個條件,相對來說會更彈性,測試會更為準確。
smaple code
import http from 'k6/http';
export const options = {
thresholds: {
http_req_failed: ['rate<0.01'], // http request 失敗的總比例要低於 1% 才能算通過
http_req_duration: ['p(95)<200'], // 95% 的 requests 數回傳時間都要低於 200ms 以內才算通過
},
};
export default function () {
http.get('https://test-api.k6.io/public/crocodiles/1/');
}
回傳結果為
其中 http_req_duration
的 p(95)
高於 200ms 了,所以它就會顯示 some thresholds have failed
Threshold 其實與 Check 有點類似,但差別在於
aborting smaple code(可自行設定中斷點 smaple code)
export const options = {
vus: 30,
duration: '2m',
thresholds: {
http_req_duration: [{ threshold: 'p(90) < 400', abortOnFail: true }] //90% 的 requests 數回傳時間都要低於 400ms 以內才算通過,只要一旦高於 400ms 就會直接中斷測試
}
};
export default function () {
http.get('https://test-api.k6.io/public/crocodiles/1/');
}
回傳結果為
其中 http_req_duration
的 p(90)
高於 400ms 了,所以它就會顯示 some thresholds have failed