要約
ReadyAPIには負荷テスト用のLoadUI Proが含まれていますが、その費用はすでに高価なユーザーあたりのライセンスにバンドルされており、ツールはRESTが比較的新しかった頃に設計されています。最新のRESTおよびGraphQL APIをテストするチームにとって、k6とGatlingはより高性能で無料の代替ツールです。Apidogは、パフォーマンス テスト用にk6と自然に連携する、機能APIテスト層を処理します。
はじめに
実際のユーザーにサービスを提供するAPIにとって、負荷テストは必須です。100人のユーザーが同時に検索エンドポイントにアクセスしたときや、バックグラウンドジョブが同時に500のデータベース書き込みをトリガーしたときに何が起こるかを知る必要があります。本番環境で大変な思いをして知るのは高くつきます。
ReadyAPIには、LoadUI Proコンポーネントを介して負荷テストが組み込まれています。すでにReadyAPIを機能テストに使用しているチームにとって、統合された負荷テスト機能は魅力的です。同じツールを使用し、同じテスト定義を再利用し、すべてを一箇所で管理できます。
実際には、状況はより複雑です。LoadUI Proには特定の設計思想とトレードオフがあります。一部のチームにとっては適切な選択ですが、他のチームにとっては、最新のオープンソースの代替ツールの方が高性能で費用対効果が高く、今日の開発者の働き方により適しています。
この記事では、LoadUI Proが何をするのか、k6やGatlingとどのように比較されるのか、そしてApidogが現代の負荷テストワークフローにどのように統合されるのかについて説明します。
LoadUI Proの実際の機能
LoadUI ProはReadyAPIの負荷テストモジュールです。設定可能な仮想ユーザー数、ランプアッププロファイル、期間設定を用いて、テストケースを大規模に実行できるようにすることで、ReadyAPIの機能テスト機能を拡張します。
LoadUI Proの主な機能:
機能テストを負荷テストに変換する。既存のReadyAPIテストケースを、負荷テストとして書き直すことなく、負荷の下で実行できます。これはLoadUI Proの最も魅力的な機能です。すでに機能テストを作成している場合、それらを直接使用できます。
負荷プロファイルとシナリオ。LoadUI Proは、仮想ユーザーの単純なスケーリング、バースト負荷、時間経過によるランプアップ、カスタムプロファイルなど、さまざまな負荷シミュレーション戦略をサポートしています。これらはGUIを通じて設定します。
応答時間とスループットのメトリック。負荷実行中、LoadUI Proは応答時間、エラー率、スループット、仮想ユーザー数のライブメトリックを表示します。実行後、レポートを生成します。
負荷中のアサーション。95パーセンタイルの応答時間が2000ms未満であることなど、負荷テスト中に満たされなければならないアサーションを定義し、違反した場合はテストを失敗させることができます。
LoadUI Proの制限事項:
デフォルトでは単一のマシンから実行されます。複数の地理的場所から、または単一のマシンが維持できるよりも高い仮想ユーザー数で負荷を生成する必要がある分散負荷テストは、サポートされていないか、追加のインフラストラクチャが必要です。
GUI主導のアプローチは、コードレビューされたテスト定義には適していません。負荷テストの設定は、バージョン管理されたコードファイルではなく、ReadyAPIのプロジェクトファイル形式で保存されます。
スクリプトモデルはGroovyを使用します。負荷テストの動作をカスタマイズするにはGroovyが必要ですが、ほとんどの開発者はGroovyを知りません。
最新の負荷テストツールと比較したパフォーマンスは、ReadyAPIが使用するJVMスレッドモデルによって制約されます。k6のようなツールは、同等の負荷レベルでより少ないオーバーヘッドで、同じハードウェア上でより多くの仮想ユーザーをシミュレートできます。
k6:現代のオープンソースの代替ツール
k6はGrafana Labsによって開発され、AGPL-3.0ライセンスでリリースされたオープンソースの負荷テストツールです。REST APIをテストするチームにとって、主要な現代の負荷テストツールとなっています。
k6が魅力的な理由:
負荷テストはコードです。k6テストはJavaScriptファイルです。アプリケーションコードと一緒にGitリポジトリに保存されます。コードレビューを受けます。開発者は特殊なツールを学習することなく、それらを読み、変更することができます。
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 50,
duration: '30s',
};
export default function () {
const res = http.get('https://api.example.com/users');
check(res, {
'status is 200': (r) => r.status === 200,
'response time under 500ms': (r) => r.timings.duration < 500,
});
sleep(1);
}
このテストは、50の仮想ユーザーが30秒間実行され、それぞれがGETリクエストを送信し、ステータスコードと応答時間をアサートします。テスト全体はわずか18行のJavaScriptです。
k6のパフォーマンス。 k6はGo言語でJavaScriptランタイムとともに書かれています。非常に効率的です。k6を実行する単一のラップトップは、JVMベースのツールと同等の負荷レベルで、より低いリソースオーバーヘッドで数千の仮想ユーザーを生成できます。
しきい値。 k6のしきい値システムにより、CI/CDと自然に統合される合否基準を定義できます。
export const options = {
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};
このテストは、95パーセンタイルの応答時間が500msを超えた場合、またはリクエストの1%以上が失敗した場合に失敗します。しきい値が違反された場合、k6は非ゼロのコードで終了するため、CIと連携しやすいです。
Grafana k6 Cloud。 複数の地理的地域からの分散負荷テストのために、Grafanaは有料サービスとしてk6 Cloudを提供しています。オープンソースツールはローカル実行を処理します。クラウドサービスはグローバルな分散を処理します。どちらにも同じテストスクリプトを使用します。
k6の価格設定。 オープンソースツールは無料です。k6 Cloudの料金は、小規模なテストプランの場合、月額約49ドルから始まり、仮想ユーザー時間に応じてスケールします。
Gatling:Javaチーム向けのパフォーマンス テスト
Gatlingは、JavaおよびScalaの企業向けに構築されたオープンソースの負荷テストツールです。Javaを好むチーム向けに、シミュレーションDSL(Scala)とJava APIを備えています。
Gatlingの強み:
Gatlingのシミュレーションモデルは、ステートフルなプロトコル、セッション変数、複雑なユーザーの行動を伴う複雑なシナリオに強力です。ログイン、製品の閲覧、カートへの追加、購入の完了を必要とするチェックアウトフローは、GatlingのDSLで自然に表現できます。
HTMLレポートが優れています。Gatlingの組み込みレポート機能は、追加のツールなしで詳細で読みやすいHTMLダッシュボードを生成します。
レコーダーはブラウザのトラフィックをキャプチャし、Gatlingシミュレーションを生成できます。これはReadyAPIがRESTトラフィックを記録する方法と似ています。
Gatling Enterprise。 Gatlingは、分散実行、CI/CD統合、チームコラボレーション機能のためにGatling Enterprise(旧FrontLine)を提供しています。これは有料製品です。ローカル負荷テストのみが必要なチームにとっては、オープンソース版で十分です。
Gatlingとk6の比較。 GatlingはJava/Scalaのバックグラウンドを持つチームにより適しています。k6はJavaScriptを多用するチームにより適しています。どちらもLoadUI ProのGUI主導のGroovyアプローチよりも開発者に優しいです。
LoadUI Pro vs k6:直接比較
| 機能 | LoadUI Pro | k6 |
|---|---|---|
| 価格 | ReadyAPIにバンドル(ユーザーあたり年間約749ドル以上) | 無料(オープンソース) |
| テスト定義 | ReadyAPI GUI/プロジェクトファイル | JavaScriptコードファイル |
| バージョン管理 | 限定的(プロジェクトXML) | 完全(コードファイル) |
| スクリプト言語 | Groovy | JavaScript |
| プロトコルサポート | REST、SOAP、HTTP | REST、WebSocket、gRPC(ベータ版) |
| 分散負荷 | 限定的 | k6 Cloud経由 |
| CI/CD統合 | Testrunnerコマンド | k6 CLI |
| 仮想ユーザー効率 | 中程度(JVM) | 高い(Goランタイム) |
| 機能テストの再利用 | 可能(主要な強み) | 個別のテストファイル |
| コミュニティ | 小規模 | 大規模、活発 |
LoadUI Proがk6に対して明確な優位性を持つ唯一の点は、ReadyAPIの機能テストケースを負荷テストとして直接再利用できることです。大規模なReadyAPIテストスイートがあり、テストを書き直すことなく負荷の下で実行したい場合、これは重要です。
新しいプロジェクトを開始したり、最新のスタックに移行したりするチームにとって、k6のJavaScriptモデル、Gitとの親和性、および効率性は魅力的な利点です。
Apidog + k6がReadyAPI + LoadUI Proを置き換える方法
ReadyAPI + LoadUI Proの組み合わせは、機能APIテストと負荷テストを1つのツールでカバーします。これを置き換えるには、2つのツールが連携して動作する必要があります。
機能テストのためのApidog。 Apidogは、API設計、REST/GraphQL/gRPC/WebSocketテスト、Smart Mock、およびドキュメント作成を処理します。テストスクリプトはJavaScriptを使用します。CI/CD統合はApidog CLIを介して行われます。これは、SOAP/WS-Securityに依存しないチームにとって、ReadyAPIの機能テスト機能を置き換えます。
負荷テストのためのk6。 k6は負荷テストとパフォーマンス テストを処理します。テストはJavaScriptファイルです。ローカルまたはk6 Cloudで実行されます。CI/CD統合はk6 CLIを介して行われます。
これら2つのツールは、共通の信頼できる情報源であるOpenAPI仕様から動作します。Apidogは機能テストのために仕様をインポートします。k6スクリプトは負荷テストのために同じエンドポイントを呼び出します。APIが変更されたとき、両方のテストスイートは同じスキーマを参照します。
CI/CDパイプラインの例:
stages:
- functional-tests
- load-tests
functional-tests:
stage: functional-tests
script:
- apidog run collection.json --environment staging
only:
- merge_requests
load-tests:
stage: load-tests
script:
- k6 run load-tests/api-load.js --env BASE_URL=$STAGING_URL
only:
- main
機能テストはすべてのマージリクエストで実行されます。負荷テストはコードがメインにマージされたときに実行されます。このパターンにより、機能的なリグレッションに対する迅速なフィードバックと、本番デプロイのための定期的な負荷検証が得られます。
費用比較:
ReadyAPI + LoadUI Pro(10ユーザー):構成に応じて年間約7,490ドルから20,000ドル。
Apidog Basic(10ユーザー)+ k6オープンソース:年間約1,080ドル。
Apidog Basic(10ユーザー)+ k6 Cloud(基本プラン):年間約1,080ドル + 588ドル = 1,668ドル。
k6 Cloudを含めても、最新のスタックはReadyAPIとLoadUI Proよりも大幅に安価です。
よくある質問
k6はSOAP負荷テストをサポートしていますか?k6はXMLボディを持つHTTP POSTリクエストを送信できるため、技術的にはSOAPサービスに機能します。WSDLのインポートやSOAP固有のツールはありません。最新のREST APIの負荷テストにはk6が優れています。SOAP負荷テストにはLoadUI Proがより強力です。
既存のReadyAPI負荷テスト設定をk6に変換できますか?自動変換ツールはありません。負荷テストシナリオをk6スクリプトとして書き直す必要があります。経験豊富な開発者であれば、通常、シナリオごとに数時間かかります。ほとんどの場合、k6のスクリプトモデルはGroovyよりもシンプルです。
k6は標準的なラップトップで何人の仮想ユーザーを実行できますか?k6は、テストシナリオとリクエストレートにもよりますが、最新のラップトップで1,000〜10,000人の仮想ユーザーを実行できるほど効率的です。ReadyAPI/LoadUI Proは通常、JVMのメモリオーバーヘッドが制約になる前に数百人の仮想ユーザーで限界に達します。
GatlingはgRPC負荷テストをサポートしていますか?Gatlingはバージョン3.10+で実験的なgRPCサポートがあります。k6はコアJavaScript APIでgRPCサポートを提供しており、2026年現在、gRPC負荷テストにおいてより成熟しています。
クラウドサービスなしでk6テストを実行する方法はありますか?はい、k6のオープンソースツールは完全にローカルで実行されます。単一マシンでの負荷テストにはGrafana k6 Cloudは必要ありません。クラウドサービスは分散実行と履歴結果ストレージを追加します。
LoadUI ProはReadyAPIのユーザーあたりのライセンス数にカウントされますか?LoadUI Proは特定のReadyAPIエディションにバンドルされています。ユーザーあたりのカウントはバンドルに適用されます。LoadUI Proを持つReadyAPIユーザーが10人いる場合、それは10のライセンスユーザーです。負荷テストの実行自体は、通常、指名ユーザーライセンスにカウントされることなくCIエージェントで実行できますが、これはSmartBearとの契約で確認してください。
ReadyAPIのLoadUI Proは、ReadyAPIエコシステムにすでに投資しているチームにとっては有能な負荷テストツールです。オプションを評価しているチームや新たに開始するチームにとって、k6はAPI負荷テストに対してより開発者に優しく、費用対効果が高く、スケーラブルなアプローチを提供します。機能テストのためにk6をApidogと組み合わせることで、ReadyAPIとLoadUI Proの費用の一部で、完全な最新のAPIテストスタックを構築できます。
