DEV Community

Cover image for 最高のk6代替ツール
Akira
Akira

Posted on • Originally published at apidog.com

最高のk6代替ツール

Grafana k6は、GoエンジンとJavaScriptスクリプトを備えたオープンソースのロードテストツールです。AGPL-3.0で公開され、CIにも組み込みやすく、VUの段階的増加、ソークテスト、スパイクプロファイル、Grafana Cloud経由の分散トラフィック生成など、本格的な負荷テストに強みがあります。

今すぐApidogを試す

ただし、k6を「APIが正しく動くことを確認するためのCI対応テストツール」として使っている場合、運用コストが目立ち始めます。リクエスト、アサーション、デバッグ手順をすべてJavaScriptで管理し、結果を可視化するにはGrafanaスタックまたはクラウドプランが必要です。APIをGUIで試す、仕様から検証する、モックを提供する、ドキュメントを公開するといったAPI開発ワークフローも、k6単体ではカバーしません。

結論から言うと、主な目的がAPI機能テストであれば、Apidogは有力なk6代替候補です。設計、デバッグ、テスト、モック、ドキュメントを1つのアプリケーションで扱え、CI向けCLIと最大100仮想ユーザーのパフォーマンステストも提供します。一方で、大規模な負荷生成が目的なら、k6を使い続けるべきです。

k6が優れている点

k6を継続すべきケースを先に整理します。

  • テストをコードとして管理できる

    JavaScriptスクリプトをGitでバージョン管理し、コードレビューとAPI実装の変更を同じ開発フローに載せられます。

  • 詳細な負荷モデルを定義できる

    シナリオ、エクゼキューター、段階的なVU増加、閾値、カスタムメトリクスを使い、到着率やソークプロファイルを細かく表現できます。k6ロードテストチュートリアルも参照してください。

  • CIでシンプルに実行できる

    次のように実行でき、閾値ベースでパイプラインを失敗させられます。

  k6 run script.js
Enter fullscreen mode Exit fullscreen mode
  • 大規模・分散ロードテストに対応する Grafana Cloud k6では20以上の地域から分散テストを実行でき、Enterprise版では最大100万の同時仮想ユーザーをサポートします。

この要件が日常的に必要なら、k6は適切な選択です。

k6のワークフローが苦しくなる点

k6を負荷生成専用ではなく、チーム共通のAPIテスト基盤として使うと摩擦が生じます。

探索から実行まで、すべてがコードになる

k6にはGUIのリクエストクライアントがありません。URLを貼り付け、ヘッダーを調整し、送信ボタンでレスポンスを確認する代わりに、スクリプトを書いて実行し、ターミナルを確認します。

例えば、単一エンドポイントの確認でも次のようなコードが必要です。

import http from 'k6/http';
import { check } from 'k6';

export default function () {
  const res = http.get('https://api.example.com/users/123');

  check(res, {
    'status is 200': (r) => r.status === 200,
    'response has id': (r) => JSON.parse(r.body).id !== undefined,
  });
}
Enter fullscreen mode Exit fullscreen mode

失敗したレスポンスを調査するたびに、スクリプトの編集、再実行、ターミナル確認を繰り返すことになります。

機能アサーションを手作業で維持する必要がある

k6のcheck()は柔軟ですが、レスポンススキーマを自動検証するものではありません。API契約に対する検証を行うには、各エンドポイントに対して独自の判定ロジックを書き、仕様変更に合わせて更新する必要があります。

API仕様がすでにOpenAPIとして存在する場合は、仕様ベースの自動スキーマ検証を使えるツールの方が、手書きチェックを減らせます。

結果の可視化には追加の構成または費用が必要になる

k6 OSSのCLIは実行後にターミナルサマリーを表示します。トレンドグラフ、実行履歴、共有ダッシュボードが必要なら、次のいずれかが必要です。

  1. Grafanaと時系列データベースをセルフホストする
  2. Grafana Cloud k6を利用する

Grafana Cloud k6は月額500VUhまで無料で、その後はProプランで1VUhあたり0.15ドルと月額19ドルのプラットフォーム料金がかかります。ロードテスト基盤としては妥当でも、日常的なスモークテストだけに必要な構成としては重くなる場合があります。

APIライフサイクルをカバーしない

k6はテストツールであり、以下を提供することを目的としていません。

  • API仕様エディタ
  • モックサーバー
  • 公開APIドキュメント
  • チーム向け共有ワークスペース
  • GUIベースのリクエストデバッグ

そのため、チームはk6に加えてPostman、Swagger UI、モックライブラリなどを併用しがちです。この分断は、Locustの代替に関する記事で扱ったPythonベースの負荷テストでも同様に発生します。

Apidogを使う場合のワークフロー

Apidogは、APIの設計、デバッグ、自動テスト、モック、ドキュメントをまとめて扱うAPI開発プラットフォームです。1つの仕様を中心に、リクエストクライアント、テスト、モック、ドキュメントを連携させます。

k6から移行する際に重要になる違いは次の4点です。

  1. テストをビジュアルシナリオとして管理できる

    リクエストをステップとして連結し、前のレスポンスから変数を抽出し、ステータス、ヘッダー、ボディを検証します。OpenAPI仕様があれば、レスポンスをスキーマに対して検証できます。

  2. リクエストのデバッグをGUIで行える

    エンドポイントを送信し、レスポンスを確認し、そのままAPI定義やテストシナリオに保存できます。探索用のスクリプトを毎回書く必要がありません。

  3. 日常的な同時実行チェックを実行できる

    シナリオを最大100仮想ユーザー、ランプアップ時間、実行時間を指定したパフォーマンステストとして実行できます。総リクエスト数、RPS、平均・最大・最小応答時間、失敗率などを確認できます。詳細はApidogのパフォーマンステストドキュメントを参照してください。

  4. CLIでCIに組み込める

    Apidog CLIを使い、ワークスペースのシナリオをパイプラインで実行できます。

Apidogのパフォーマンステストは、アプリケーションを実行しているマシンから負荷を生成します。そのため、「このAPIは通常の同時アクセスに耐えられるか」を確認する用途には適していますが、大規模・分散型の負荷生成ツールを置き換えるものではありません。

機能ごとの移行方法

機能APIテスト

k6のスクリプトを、リクエストごとのステップを持つテストシナリオに分解します。

たとえば、以下のk6テストを考えます。

import http from 'k6/http';
import { check } from 'k6';

export default function () {
  const loginRes = http.post(
    'https://api.example.com/login',
    JSON.stringify({
      email: 'dev@example.com',
      password: 'password',
    }),
    {
      headers: { 'Content-Type': 'application/json' },
    }
  );

  check(loginRes, {
    'login succeeded': (r) => r.status === 200,
  });

  const token = JSON.parse(loginRes.body).token;

  const profileRes = http.get('https://api.example.com/me', {
    headers: {
      Authorization: `Bearer ${token}`,
    },
  });

  check(profileRes, {
    'profile succeeded': (r) => r.status === 200,
  });
}
Enter fullscreen mode Exit fullscreen mode

Apidogでは、次のようなステップに置き換えます。

  1. POST /login を作成する
  2. ステータスコードが200であることをアサートする
  3. レスポンスボディのtokenを変数として抽出する
  4. GET /meAuthorizationヘッダーに抽出した変数を設定する
  5. ステータスコードとレスポンススキーマを検証する

OpenAPI仕様をインポート済みなら、手書きのボディ検証の多くをスキーマ検証に置き換えられます。CSVデータを使用するデータ駆動テストも、カスタムループではなくシナリオ設定として扱えます。

パフォーマンステスト

機能テスト用に作成したシナリオを再利用し、以下を設定します。

  • 仮想ユーザー数: 最大100
  • ランプアップ時間
  • 実行時間
  • 実行時に確認するメトリクス

「50人の同時ユーザーで正常に応答できるか」を確認する目的なら、このワークフローで十分な場合があります。実行履歴とレポートがワークスペースに保存されるため、別途ダッシュボードを構築する必要もありません。

一方、到着率モデル、長時間ソーク、数千VU、マルチリージョンは対象外です。具体的な手順はAPIパフォーマンステストチュートリアルを参照してください。

CIと自動化

k6のCI実行が次の形式なら、

k6 run script.js
Enter fullscreen mode Exit fullscreen mode

ApidogではCLIを使ってワークスペースのテストシナリオを実行します。重要なのは、ローカルで編集するテストとCIが実行するテストを同じワークスペースで管理できる点です。

一般的なCIの導入手順は次のとおりです。

  1. API仕様とテストシナリオをワークスペースに保存する
  2. CI用の認証情報をシークレットとして登録する
  3. Apidog CLIをCIランナーにインストールする
  4. テストシナリオを実行するコマンドを追加する
  5. 終了コードを使って成功・失敗を判定する

継続的なパフォーマンステストの設計については、継続的パフォーマンステストツールも参考になります。

テスト以外のAPI作業

Apidogを使う場合、テスト以外にも同じプロジェクトで次を扱えます。

  • OpenAPIをGUIまたはコードで編集する
  • バックエンド完成前にスキーマ対応モックを提供する
  • インタラクティブなAPIドキュメントを公開する
  • APIリクエストをチームで共有・再利用する

APIクライアントも統合したい場合は、最高のPostman代替ツールも確認してください。

k6 vs Apidog:一目でわかる比較

Grafana k6 Apidog
形式 CLI + JavaScriptスクリプト デスクトップアプリ + Web + CLI
テスト作成 コードのみ ビジュアルシナリオ、スクリプト作成も可能
機能アサーション 手書きのcheck()呼び出し ノーコードアサーション + 自動スキーマ検証
負荷能力 シナリオ、エグゼキューター、ソーク、スパイク、クラウドで最大100万VU 1実行あたり最大100VU、ランプアップ、ライブメトリクス
分散・マルチリージョン負荷 はい(Grafana Cloud、20以上のリージョン) いいえ
結果 ターミナルサマリー。ダッシュボードにはGrafanaスタックまたはCloudが必要 ライブチャート + 保存された実行履歴
CI実行 無料、単一バイナリ Apidog CLI経由で無料
クラウド従量課金 月額500VUh無料、その後1VUhあたり0.15ドル + 月額19ドル 従量課金なしのランナー、無料プランは4ユーザーまで
API仕様エディタ なし ビジュアル + コードのOpenAPIエディタ
モックサーバー なし スキーマ対応スマートモック
APIドキュメント なし 公開インタラクティブドキュメント、カスタムドメイン
非コーダー向け いいえ はい

コストを比較する際の考え方

k6 OSSは無料です。ターミナルのサマリーだけで十分なら、直接費用は発生しません。ただし、実際には次のコストを考慮する必要があります。

  1. 結果基盤のコスト

    Grafanaと時系列データベースを自前で運用するか、Grafana Cloud k6を使う必要があります。

  2. APIライフサイクル用ツールのコスト

    APIクライアント、モック、ドキュメントホストを別々に導入している場合、k6が無料でもツール全体の費用は無料ではありません。

たとえば、50VUで30分の夜間テストを毎日実行する場合、約25VUh/日です。3週間未満で月間500VUhの無料枠に達し、その後はProプランで月額約110ドルになります。

Apidogの無料プランでは、最大4ユーザーでシナリオ、パフォーマンステスト、モック、ドキュメントを利用できます。有料プランは月額9ドル/ユーザーからです。

本格的な負荷生成も必要な場合、選択肢は「k6かApidogか」の二択ではありません。

  • 日常的なAPIテスト、モック、ドキュメント、CI: Apidog
  • 高負荷・分散・長時間テスト: k6 OSSまたはGrafana Cloud k6

このように役割を分けるのが現実的です。より広い比較はロードテストツールまとめを参照してください。

k6からApidogへ移行する手順

k6スクリプトはJavaScriptプログラムであり、API仕様ではないため、ワンクリックでの完全インポートはできません。ただし、以下の順序で進めると移行しやすくなります。

1. API定義をインポートする

次の形式でAPIを取り込みます。

  • OpenAPI / Swagger
  • Postmanコレクション
  • cURLコマンド

仕様がない場合は、リクエストをGUIで送信して保存しながらAPI定義を作成できます。

2. k6スクリプトをシナリオへ分解する

k6の各リクエストをテストステップとして再作成します。

k6の要素 Apidogでの置き換え
http.get() / http.post() リクエストステップ
check() アサーション
JSON.parse(...).token レスポンスからの変数抽出
ヘッダーへのトークン設定 環境変数・シナリオ変数
手書きボディ検証 スキーマ検証またはアサーション

3. CSVなどのテストデータを移す

k6でCSVを読み込んでいる場合は、データセットをシナリオに紐付けます。ランダムまたは順番に行を選択するデータ駆動テストとして実行できます。

4. 日常的な負荷チェックを再作成する

既存のシナリオに対して、以下を設定してパフォーマンステストを作成します。

  • VU数
  • ランプアップ時間
  • 実行時間

大規模な負荷プロファイルはk6に残します。

5. CIステップを置き換える

既存のk6 runステップをApidog CLIの実行ステップに置き換えます。CIとローカル環境で同一のシナリオを使うことで、テスト定義のずれを減らせます。

k6を使い続けるべき場合

次のような要件がある場合は、k6を使い続けてください。

  • 到着率ベースの段階的負荷増加
  • 数時間以上のソークテスト
  • スパイクプロファイル
  • 数百VUを超える大規模テスト
  • 複数リージョンからの分散負荷生成
  • カスタムメトリクスを使った閾値判定
  • レビュー可能なコードとしてのテストを必須とする運用
  • ブラウザベースのパフォーマンステスト

Apidogの最大100VU・単一マシンからのパフォーマンステストは、これらの要件を対象にしたものではありません。この線引きはArtilleryautocannonとの比較でも同様です。

専用ロードテストツールを比較したい場合は、最高のJMeter代替ツール最高のGatling代替ツールも参考にしてください。

よくある質問

k6は無料ですか?

k6 OSSはAGPL-3.0ライセンスで公開されている無料のオープンソースソフトウェアです。

ホスト型ダッシュボードと20以上のリージョンからの分散負荷を提供するGrafana Cloud k6は、仮想ユーザー時間(VUh)で使用量が計測されます。月額500VUhまでは無料で、その後はProプランで1VUhあたり0.15ドルと月額19ドルのプラットフォーム料金がかかります。

Grafanaスタックをセルフホストすれば、ライセンス費用を抑えつつダッシュボードを運用できますが、運用コストは別途発生します。k6ロードテストガイドも確認してください。

Apidogはロードテストでk6を置き換えられますか?

日常的な同時実行チェックには対応できます。既存シナリオを再利用し、ランプアップとライブメトリクスを設定して最大100仮想ユーザーのパフォーマンステストを実行できます。

ただし、数千VU、マルチリージョン、長時間ソークテスト、詳細な到着率モデルには対応していません。それらが必要なら、k6またはロードテストツールまとめで紹介している専用ツールを使ってください。

k6スクリプトをApidogにインポートできますか?

直接インポートはできません。k6スクリプトはJavaScriptプログラムであり、API定義ではないためです。

代わりにOpenAPI仕様またはPostmanコレクションをインポートし、k6スクリプトのリクエストフローをビジュアルシナリオとして再構築します。check()はノーコードアサーションまたはスキーマ検証に置き換え、CSVデータはシナリオのデータセットとして利用します。

Apidogはk6のようにCIで動作しますか?

はい。Apidog CLIを使うと、GitHub Actions、GitLab CI、Jenkinsなどのパイプラインでテストシナリオを実行できます。

シナリオは共有ワークスペースに保存されるため、CIではチームが最新に更新したテスト定義を実行できます。

Apidogにないk6の機能は何ですか?

主に詳細な負荷モデリング機能です。

  • シナリオとエグゼキューター
  • 到着率の段階的増加
  • カスタムメトリクスに基づく閾値
  • ブラウザベースのパフォーマンステスト
  • 最大100万VUのクラウド分散負荷生成

これらが必須なら、k6が適切なツールです。

APIチェックのためのスクリプトを減らす

k6スクリプトの大半が1VUでAPIレスポンスを検証しているなら、それは実質的にAPI機能テストスイートです。その場合は、APIテスト向けのワークフローへ移行する価値があります。

Apidogでは、次の作業を同じ仕様から始められます。

  • ビジュアルテストシナリオの作成
  • 自動スキーマ検証
  • 従量課金なしのテスト実行
  • 最大100VUのパフォーマンステスト
  • モックサーバーの作成
  • APIドキュメントの公開

Apidogをダウンロードするか、ブラウザから開始してください。最初にインポートしたAPI仕様を、テスト、モック、ドキュメントの共通基盤として利用できます。

Top comments (0)