k6 2.3.0 把壓測搬進流水線:腳本寫 JavaScript,門檻值決定過不過
摘要
引擎用 Go 寫的 k6,測試腳本用 JavaScript 或 TypeScript 寫;門檻值沒達到就整輪判失敗,結果能送進 Grafana 看板,目前版本 2.3.0。
推薦- 軟體名稱
- k6
- 版本
- 2.3
- 收費
- 免費
- 開源
- 開源
- 作業系統
- WindowsLinuxmacOS
- 更新時間
- 2026-10-21 12:40
k6 是一個開源負載測試工具,引擎用 Go 寫,測試腳本用 JavaScript 或 TypeScript 寫。它把效能測試當成軟體工程的一部分:腳本進程式碼倉庫,門檻值寫進腳本,跑完給出通過或失敗的結論,直接接在流水線上。
一個執行檔,一份腳本
k6 的分發形式與命令列工具一樣:Linux 的 deb、rpm 與 tar 包,macOS 的 x64 與 arm64 壓縮包,Windows 的 msi 與 zip,一個執行檔放進環境就能跑。專案由 Grafana Labs 維護,2016 年起步,2021 年隨新創公司一起併入 Grafana Labs,授權是 GNU AGPL 第三版。
腳本是一個 JavaScript 模組,匯出的預設函式就是每個虛擬使用者要執行的一輪;設定寫在 options 物件裡,也可以從命令列覆蓋。TypeScript 同樣能寫。引擎本身是 Go,單一行程能用很少的記憶體拉起大量虛擬使用者,這是它一直在強調的地方。

門檻值:把 SLO 寫成判據
門檻值是這個工具和「跑一遍看看」的分界線。它給指標定一條通過線,測試結束時不滿足就回傳失敗狀態。文件舉的例子很具體。
判據 | 文件中的門檻值示例 |
|---|---|
錯誤率 | 低於百分之一 |
百分之九十五的請求 | 回應時間低於 200 毫秒 |
百分之九十九的請求 | 回應時間低於 400 毫秒 |
某個特定端點 | 始終在 300 毫秒以內 |
自訂指標同樣能設門檻值。因為退出碼會跟著變,門檻值就成了流水線裡的開關。官方給的自動化三步是:先給測試寫門檻值,再把執行自動化,最後為失敗配告警——之後只在系統沒達標時才需要人插手。
檢查:不中止的斷言
檢查驗的是布林條件,比如狀態碼是不是 201、回應主體大小對不對。它和多數測試框架裡的斷言長得像,但有個關鍵差別:檢查失敗不會讓測試中止,也不會讓整輪判定為失敗,它只把失敗率記成一個指標。
想讓檢查真正攔住流程,得和門檻值配對:檢查負責記錄事實,門檻值負責下結論。這個分工讓一次壓測既能收集全部異常樣本,又能在收尾時給出一個明確的是非。
情境:一場測試裡跑幾種流量
情境描述虛擬使用者和迭代怎麼調度。同一個腳本裡可以宣告多個情境,每個跑不同的函式、用不同的執行器,彼此獨立並行;把各情境的開始時間錯開,就能排出先後順序。每個情境還能單獨掛環境變數與標籤,結果彙總時按標籤切開看。
這套機制對應的是真實流量的形狀:穩態的固定並行、逐步加壓的爬坡、按到達率而不是並行數施壓、以及尖峰與浸泡。壓測腳本因此不必為每種形態重寫一份。
協定與擴充
開箱支援的協定有四個:HTTP/1.1、HTTP/2、WebSocket 與 gRPC。HTTP/2 是自動升級的——先按 HTTP/1.1 連,伺服端宣告支援就換過去,腳本不用改。
要測別的協定得自己編一個二進位。專案提供一個叫 xk6 的建置工具,社群已經用它接上了 SQL、Kafka、ZeroMQ、Redis 這些協定。擴充分四類:JavaScript 擴充給腳本加介面,輸出擴充把指標送到自訂格式或服務,密鑰擴充負責給測試提供憑據,子命令擴充在 k6 的命名空間下加自訂命令。
結果去哪兒
預設跑完印一份收尾彙總,給的是聚合統計。要細到每個資料點,可以打開即時串流輸出,寫進 JSON 檔或者直接推給後端。官方列出的落點包括 Prometheus、Mimir、Datadog、New Relic、Timescale 這類時序與分析系統,也能用內建的網頁看板現場看曲線。
這條鏈路和 Grafana 的定位接得很緊:k6 造的是合成流量,Grafana 那邊收的是指標、日誌與鏈路,兩邊拼起來就是「上線前主動壓一遍」和「上線後被動看真實流量」的同一條時間線。
2.x 改了什麼
2.0 是一次清理:把長期廢棄的命令與參數摘掉,Go 模組路徑換成帶 v2 的新位址,所有擴充都得跟著改匯入路徑。這是會打斷相容的升級,發行說明裡寫得很清楚。
2.3.0(2026 年 9 月 21 日)加的東西偏實用:一個 scenario 參數,不改腳本就能只跑測試裡的某幾個情境;一個 once 參數,讓壓測腳本可以直接當冒煙測試與功能測試用;非同步群組的實驗性支援,讓指標在 await 之後仍歸到正確的群組裡。另有一條 1.8.2(10 月 12 日)只修依賴裡的安全問題、不添功能——兩條版本線並行,一條往前走,一條只打補丁。
誰適合用它
已經在用 Grafana 那套可觀測性堆疊的團隊,接 k6 幾乎沒有摩擦:指標能進同一套儲存,看板也能共用。習慣把測試寫進程式碼倉庫的開發者會覺得它比圖形化壓測工具順手——腳本能審查、能重現、能進流水線。
反過來,只想臨時壓一下介面看個數字,命令列加一份幾十行的腳本仍然是最短路徑;但它沒有視覺化編排介面,也不打算做。它的假設是:效能測試和單元測試一樣,應該由寫程式的人來寫。
k6 把效能測試往「程式碼」這一側拉:腳本是程式碼,判據是程式碼裡的門檻值,結論是行程退出碼。Go 引擎用盡量少的資源造出流量,Grafana 那套後端把流量變成能看的曲線。專案 2016 年起步、2021 年併入 Grafana Labs、倉庫三萬一千多顆星、授權 AGPL 第三版,走的是「像單元測試那樣測效能」這條路。