在軟體測試領域很常會聽到各種測試,包括以下:
- 效能測試(Performance Testing): 評估系統的效能,例如響應時間、吞吐量和資源利用率。
- 負載測試(Load Testing) 和 壓力測試(Stress Testing): 模擬實際使用情境下的流量,以確定系統在不同負載下的表現。
- 浸泡測試(Soak Testing): 長時間運行測試,觀察系統是否穩定。
- 尖峰測試(Spike Testing): 模擬突然增加的流量,檢查系統是否能應對。
- 容量測試(Volumn Testing): 測試系統的容量,確定其最大可處理的流量。
- 可靠性測試(Reliability Testing): 測試系統的可靠性和持久性。
最近,我遇到了需要使用 K6 這套工具來進行負載測試的情境。K6 是一個現代化的開源負載測試工具,它可以幫助我們模擬大量的使用者流量,並觀察系統的表現。
在接下來的文章中,我將記錄下我學習 K6 工具的過程,並分享如何使用它進行負載測試。
負載測試
當系統或是服務開發完成以後,會需要預估可乘載的流量來進行測試,然後透過逐步增加對系統的流量,進一步觀察系統最終能承受的最大負載量。
情境:關於新功能的 API 需求,每秒 240 個請求 (RPS) 是一個具體的基礎要求。這意味著你的 API 需要能夠處理每秒 240 個用戶請求,並保持良好的性能。
在進行負載測試時,你可以使用工具如 K6 來模擬這些請求並觀察系統的表現。透過逐步增加請求量,你可以確定系統的最大負載能力,並找出可能的瓶頸。
K6
K6 是一個高效能的負載測試工具,是一個用 Go 語言編寫的高效能負載測試工具,具有以下特點:
- JavaScript 嵌入:K6 內嵌了 JavaScript 執行時,讓你可以使用 JavaScript ES2015/ES6 來編寫指令碼。
- 強大的 CLI 工具:K6 提供強大的命令列介面,方便設定和執行測試。
- Checks 和 Thresholds:透過 Checks 和 Thresholds,你可以更輕鬆地設定面向目標的自動化負載測試。
為什麼要選用 K6 呢?
K6 使用 JavaScript 進行負載測試,對於專注於 JavaScript 的開發人員來說非常方便。
統一語言:如果團隊中能夠統一一種語言,不管是在測試、開發上,能降低學習成本並提高協作效率。
學習曲線:在工作中,若評估學習新語言的時間成本很高,統一語言去開發會更好。
安裝 K6:
- MacOS:使用 Homebrew 安裝:
K6 支援多種負載測試類型,包括:
- Smoke Testing(煙霧測試):測試基本功能是否正常。
- Load Testing(負載測試):預想用戶數量與吞吐量下的系統效能。
- Stress Testing(壓力測試):測試系統的極限。
- Spike Testing(尖峰測試):模擬瞬間高併發流量。
- Soak Testing(浸泡測試):測試長時間運作下的穩定性。
小試身手:
1. 建立一個 k6 專案,新增一個 script.js 檔案。
2. 在 script.js 中,編寫以下測試腳本:
2. 在 script.js 中,編寫以下測試腳本:
恭喜你已經完成了一個簡單的負載測試腳本!如果你想深入了解更多,可以參考 K6 的官方文件。🚀