Skip to content
Latchkey

k6 vs JMeter: CIの負荷テストツールにはどちらを選ぶ?

k6はCI向けに作られたスクリプタブルでcode-firstな負荷テストツールで、JMeterは幅広いプロトコルに対応した成熟したGUI主導のJava標準です。

k6(Grafana製)は負荷テストをJavaScriptで定義し、単一の軽量なGoバイナリとして動作し、自動化とCIのために設計されています。JMeterはGUI、プラグイン、非常に幅広いプロトコル対応を備えた、長年使われているJavaツールです。

k6JMeter
スクリプティングJavaScript(code-first)GUI + XML(.jmx)、スクリプタブル
ランタイム単一のGoバイナリJVM
リソース効率高い(低オーバーヘッド)重め(ユーザーごとにスレッド)
プロトコルの広さHTTP、gRPC、WebSocketなど非常に幅広い(JDBC、JMSなど)
CIへの適合性優秀(CLIネイティブ)良好(CLIモード)、オーサリングはGUI

CIでは

k6はパイプライン向けに作られています。小さなバイナリ、アプリと一緒にバージョン管理できるcode-firstなテスト、リグレッション時にビルドを失敗させるthreshold、そしてVUあたりの低オーバーヘッドにより、単一のrunnerでより多くの負荷を生成できます。JMeterは膨大な範囲のプロトコルをカバーし、豊富なプラグインエコシステムとオーサリング用のGUIを備えています。CIではCLI経由でheadlessに実行します。CIでのHTTP/API性能ゲートには、k6が通常より軽量で自動化に適した選択肢です。

パイプライン向けの選び方

pass/failのthresholdでCIに組み込むcode-firstなHTTP/API負荷テスト: k6。幅広いプロトコル対応(JDBC、JMS、レガシー)、または既存のJMeterテストスイート: JMeter。どちらもheadlessで実行し、結果をartifactとして保存しましょう。

結論

code-firstでCIネイティブなHTTP/API負荷テスト: k6。幅広いプロトコル対応、または既存の.jmxスイート: JMeter。パイプラインの性能ゲートには、k6の低オーバーヘッドとthresholdがきれいに収まります。

関連ガイド