開發工程師進行開發時,他們的最終成果往往就是 Web/APP 或 系統本身,大多都是肉眼可見,非常實際的結果。
但進行測試時就會相反,因為測試是建構於已有的產品之上,所以很難被人發現成果。
所以當我們進行自動化測試時,最好證明方式就是測試報告 or 推播訊息。
講了這麼多,就是要將前幾篇的 K6 實作並透過測試報表 + 推播來更好幫助團隊。
以下有兩種操作方式
登入後,它會直接顯示 dashboard
點擊【CRATE NEW TEST】
接著點擊 【START SCRIPTING】
就會出現官方提供預設的腳本
import { sleep } from 'k6'
import http from 'k6/http'
// See https://k6.io/docs/using-k6/options
export const options = {
stages: [
{ duration: '1m', target: 20 },
{ duration: '3m', target: 20 },
{ duration: '1m', target: 0 },
],
thresholds: {
http_req_failed: ['rate<0.02'], // http errors should be less than 2%
http_req_duration: ['p(95)<2000'], // 95% requests should be below 2s
},
//注意腳本中這段 code,因為是直接再 k6 cloud 上執行執行腳本,所以才需要填寫時區
ext: {
loadimpact: {
distribution: {
'amazon:us:ashburn': { loadZone: 'amazon:us:ashburn', percent: 100 },
},
},
},
}
export default function main() {
let response = http.get('https://test-api.k6.io/public/crocodiles/')
sleep(1)
}
點擊【CREATE RUN】
最後跑完後就會顯示下方的圖形表
k6 login cloud --token <YOUR_K6_CLOUD_API_TOKEN>
上方 k6 login
是將 API token 存在本地端中
但除非你是要在多個 k6 cloud 帳號上分別運行測試。不然通常這樣就不用再次登入了。
code sample
import { group, check } from 'k6';
import http from 'k6/http';
export const options = {
vus: 30,
duration: '5s',
//注意腳本中這段 code,因為本地端的 code,所以需要填寫ID跟專案名稱來辨識報表要顯示在哪裡
ext: {
loadimpact: {
// k6 cloud 上的 ID
projectID: YOUR_ID,
// k6 cloud 上的專案名稱
name: "My First Test"
}
}
};
export default function () {
http.get('https://test-api.k6.io/public/crocodiles/1/');
}
再接著執行
k6 cloud script.js
就會直接把測試結果同步上傳到 k6 cloud 囉~
點擊左側菜單中的【Notifications】,找到 slack 後並點擊【CREATE】
輸入 slack 相關資訊後點擊【SAVE WEBHOOK】
Webhook URL (slack webhook)
建立機器人
Incoming Webhooks
(請在你的 workspce 中建立一個【專門測試用的】,建立頻道的方式可參考: 建立頻道)
Notification events (推播事件)
事件列表 | 回傳指標 | 觸發推播時機 |
---|
Test started | test.started.manual
| 手動開始執行測試
Scheduled test started | test.started.scheduled
| 已設定好的排程開始自動執行
Test finished | test.finished.finished
| 測試完成
Test finished successfully | test.finished.success
| 所有測試都執行成功
Test failed | test.finished.failed
| 有任一測試執行失敗
Test timed out | test.finished.timed_out
| 執行的測試超時
Test aborted (by user) | test.finished.aborted_user
| 由用戶手動中止測試
Test aborted (by system) | test.finished.aborted_system
| 因系統本身錯誤而發出的中止測試
Test aborted (script error) | test.finished.aborted_script_error
| 因為腳本錯誤而發出的中止測試
Test aborted (by threshold) | test.finished.aborted_threshold
| 因為達到 threshold 值而中止測試
Test aborted (by limit) | test.finished.aborted_limit
| 因達到值行上限而中止測試
我們先選擇簡單的 Test started、Test finished、Test finished successfully、Test failed 即可
Notification name (推播名稱)
這部分可隨意命名,在此先命名為【myk6cloud】
最終資訊為
儲存後就會看到列表多一個推播設定
測試是否設定成功,檢查 slack 推播是否真的有設定成功
檢查 slack
先前往 slack 當初建設的頻道【專門測試用的】,就會發現有個 【K6Bot】 被成功加入頻道了
值行 k6 進行測試
回到本地端再次值行
k6 cloud script.js
因為我的 k6 去年就下載過了,一直尚未更新,所以執行 k6 cloud 時會出現 Outdated k6 Release Used,如下圖
因為 k6 cloud 會希望你的本地 k6 版本要更新至最新
當時我的版本是 0.34.1,目前最新版本為 0.40.0
可看 [Day23][負載測試] K6 基本介紹、安裝及實作,輕鬆上手!,就只需再次更新一下即可。