Skip to content
Latchkey

Artillery vs k6: 負荷テストツールの比較

高速な Go ベースのエンジン、JavaScript スクリプティング、CI でのしきい値ベースの合否判定を重視するなら k6 を、YAML ファーストのシナリオ、簡単な段階的負荷プロファイル、Playwright ベースのブラウザ負荷テストを重視するなら Artillery を選びましょう。

Artillery と k6 はどちらも CI に組み込めるモダンでスクリプト可能な負荷テストツールです。k6(Go で書かれ、JavaScript でスクリプト記述)は効率性と、結果をビルドの合否に変換する明確なパフォーマンスしきい値で知られています。Artillery はシナリオと負荷フェーズの定義に YAML を使用し(カスタムロジックには JavaScript)、Playwright を介したブラウザレベルの負荷テストや分散実行をサポートします。

Artilleryk6
スクリプティングYAML シナリオ + JS フックJavaScript テストスクリプト
エンジンNode.js ベースGo ベース(効率的)
プロトコルHTTP、WebSocket、その他; ブラウザは Playwright 経由HTTP、WebSocket、gRPC など
合否判定しきい値とプラグイン組み込みのしきい値
スケーリング分散(クラウド含む)単一ノードで強力; クラウド/k8s オプション
最適な用途手早い YAML シナリオ、ブラウザ負荷高効率なプロトコル負荷テスト

それぞれが本当に優れている点

k6 はノードあたりの効率性と、プロトコルレベルの負荷に対する使いやすさで優れています。Go エンジンは控えめなハードウェアから多くの負荷を生成でき、しきい値によって CI のゲーティングがクリーンになります。Artillery は宣言的な YAML シナリオを好む場合、シンプルな段階的なランプアップが必要な場合、またはブラウザレベルの負荷テストが必要な場合(Playwright を介して実際のブラウザを駆動できます)に優れており、プラグインモデルは柔軟です。

CI での活用

どちらもしきい値が失敗すると非ゼロで終了するため、パフォーマンス回帰でビルドを失敗させることができます。k6 の単一バイナリの効率性により、プロトコルテストでの runner 使用量を低く抑えられます。Artillery は Node ベースのパイプラインとよく統合し、1つの runner では不十分な場合に分散負荷をサポートします。重いテストと同様に、大規模な負荷シナリオはコストを抑えるため、すべての PR ではなくスケジュールまたは専用の job で実行しましょう。

正直な注意点

k6 はコードファースト(JavaScript)なので YAML のショートカットはなく、非常に大規模な分散テストではクラウドや k8s のセットアップが必要になる場合があります。Node 上の Artillery は、純粋なプロトコル負荷において k6 の Go エンジンよりも仮想ユーザーあたりのリソースを多く使う可能性があるため、1台のマシンから最大のスループットを得るには k6 が有利なことが多いです。

結論

効率的でコードファーストなプロトコル負荷テストとクリーンな CI しきい値を求めるなら k6 を選びましょう。YAML ファーストのシナリオ、簡単な負荷フェーズ、ブラウザレベルの負荷テストには Artillery を選びましょう。

関連ガイド