探索軟體測試領域: 負載測試與K6工具

在軟體測試領域很常會聽到各種測試,包括以下:
  • 效能測試(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 語言編寫的高效能負載測試工具,具有以下特點:

  1. JavaScript 嵌入:K6 內嵌了 JavaScript 執行時,讓你可以使用 JavaScript ES2015/ES6 來編寫指令碼。
  2. 強大的 CLI 工具:K6 提供強大的命令列介面,方便設定和執行測試。
  3. Checks 和 Thresholds:透過 Checks 和 Thresholds,你可以更輕鬆地設定面向目標的自動化負載測試。

為什麼要選用 K6 呢?

K6 使用 JavaScript 進行負載測試,對於專注於 JavaScript 的開發人員來說非常方便。
統一語言:如果團隊中能夠統一一種語言,不管是在測試、開發上,能降低學習成本並提高協作效率。
學習曲線:在工作中,若評估學習新語言的時間成本很高,統一語言去開發會更好。

安裝 K6:

  • MacOS:使用 Homebrew 安裝:
  • Windows:有兩種安裝方式:
    • 使用 Chocolatey package manager 安裝:
    • 或直接下載官方提供的安裝檔(latest official .msi package)。

K6 能做到哪些負載測試?

K6 支援多種負載測試類型,包括:
  1. Smoke Testing(煙霧測試):測試基本功能是否正常。
  2. Load Testing(負載測試):預想用戶數量與吞吐量下的系統效能。
  3. Stress Testing(壓力測試):測試系統的極限。
  4. Spike Testing(尖峰測試):模擬瞬間高併發流量。
  5. Soak Testing(浸泡測試):測試長時間運作下的穩定性。


小試身手:

1. 建立一個 k6 專案,新增一個 script.js 檔案。
2. 在 script.js 中,編寫以下測試腳本:

3. 在命令列介面中執行:


觀察測試結果,包括平均回應時間和 Throughput。


恭喜你已經完成了一個簡單的負載測試腳本!如果你想深入了解更多,可以參考 K6 的官方文件。🚀

參考文章:

張貼留言

較新的 較舊