![[2025年版] 負荷テストツールをまとめてみた](https://images.ctfassets.net/ct0aopd36mqt/1dD7b8HkT2sbiJzUIewMTD/e5cdc6f33c4fdd9d798f11a4564612ff/eyecatch_developersio_darktone_1200x630.jpg?w=3840&fm=webp)
[2025年版] 負荷テストツールをまとめてみた
2025.11.23
こんにちは。製造ビジネステクノロジー部の小林です。
最近、AWSクラウドへの負荷テストを計画しています。
負荷テストは、システムが大量のトラフィックに耐えられるかを確認するだけでなく、スケーリング設計やクォータ調整、運用時の安定性を評価するためにも欠かせない重要な工程です。
しかし、実際に負荷テストを行おうとすると、利用できるツールが多く、どれを選ぶべきか迷ってしまいます...
そこで本記事では、負荷テストツールについて、それぞれの特徴や得意分野を整理し、どのような用途で活用できるかをまとめました。
本記事で紹介するツールについて
本記事では、負荷テストで広く利用されることが多いツールについて、次の観点をもとにピックアップしています。
- 採用実績
GitHubスター数、コミュニティの活発さ、企業での利用事例など。 - 機能の幅広さ
大規模負荷、複雑なシナリオ記述、分散実行など、本格的な負荷テストに必要な機能を備えているか。
これらの基準を踏まえ、特徴の異なる OSS を中心に 10 のツールをピックアップしました。
本記事で整理する観点
- 大規模負荷への対応
数千〜数万リクエスト/秒を安定して生成できるか - 複雑なシナリオ記述
段階的な負荷増加・スパイク・長時間耐久テストが実行可能か - 複合シナリオ(2系統同時実行)
複数のAPIやシステム経路へ同時に負荷をかけ、相互影響を再現できるか - 費用
OSSか商用か
負荷テストツール一覧
- k6
- Locust
- Apache JMeter
- Distributed Load Testing on AWS
- Gatling
- Artillery
- Tsung
- Postman
- wrk
- Vegeta
k6
- 開発元:Grafana Labs
- 記述言語:JavaScript / TypeScript
特徴
- 高スループットを得意とするGo製エンジンを搭載した負荷テストツール。
- 大規模負荷(数千〜数万RPS)にも対応し、FargateやKubernetes上で分散実行が可能。
- k6の単一インスタンスは30,000~40,000の同時ユーザー(VU)を実行できる。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- 「scenarios」構文により、複数のAPIやエンドポイントへの同時負荷テストに対応。
費用
- オープンソース版は無料
- Grafana Cloudの有償プランあり
参考リンク
- Grafana k6 | Grafana k6 documentation
- Load testing for engineering teams | Grafana k6
- GitHub - grafana/k6: A modern load testing tool, using Go and JavaScript
Locust
- 開発元:オープンソースコミュニティ
- 記述言語:Python
特徴
- Pythonでシナリオを記述できる負荷テストツール。
- 分散構成(マスター+ワーカー)により大規模負荷に対応。
- 単一マシンで数千VU、分散構成で数万〜数十万VUの実行が可能。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- Pythonの制御構文(if文、for文など)を活用して、条件分岐や動的なロジックを含む柔軟なシナリオを実装可能。
- タスクの重み付けや複数ユーザークラスによって、複数のAPIやエンドポイントへの同時負荷テストに対応。
費用
- オープンソース版は無料
- Locust Cloud の有償プランあり
参考リンク
- https://docs.locust.io/en/stable/
- GitHub - locustio/locust: Write scalable load tests in plain Python 🚗💨
Apache JMeter
- 開発元:Apache Software Foundation
- 記述方法:GUI、 JMX(XML形式)、CLI
特徴
- GUI操作でテストシナリオを作成できる負荷テストツール。
- GUIモードはテスト作成とデバッグ用。実際の負荷テスト実行はCLIモードで行うことが推奨される。
- HTTP・MQTT・JDBCなど多様なプロトコルをサポート。
- 分散実行により大規模負荷にも対応。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- 複数の「スレッドグループ」を使用して、複数のAPIやエンドポイントへの同時負荷テストに対応。
費用
- 完全無料(オープンソース)
参考リンク
- Apache JMeter
- GitHub - apache/jmeter: Apache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services
Distributed Load Testing on AWS
- 提供元:Amazon Web Services
特徴
- AWS公式ソリューションとして提供されるサーバレス負荷テスト基盤。
- Fargateを使って負荷を分散生成し、CloudWatchでモニタリング。
- JMeter、k6、Locustのテストスクリプトをサポート。
- 複数テストを同時実行できるため、複数のAPIやエンドポイントへの同時負荷テストに対応。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- 1タスクあたり推奨200同時ユーザー。
- FargateのvCPU上限によってタスク数が制限される。
- FargateのvCPUクォータを引き上げることで、数万ユーザー規模の負荷テストにも対応可能。
費用
- ソリューション自体は無料で提供されているが、実行時にはFargateやCloudWatchなどのAWSサービス利用料が発生する。
参考リンク
Gatling
- 開発元:Gatling Corp
- 記述言語:Java、JavaScript、TypeScript、Scala、Kotlin
特徴
- 非同期I/O処理により高スループットを提供する負荷テストツール。
- 軽量メッセージベースのアーキテクチャで、最小限のシステムリソースで数千の同時ユーザーをシミュレート可能。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- HTTP、WebSocket、Server-Sent-Events、JMS、gRPC、MQTTなどプロトコルに依存しない設計で多様なプロトコルをサポート。
費用
- オープンソース版は無料
- 商用版(Gatling Enterprise)あり
参考リンク
Artillery
- 開発元:Artillery.io
- 記述言語:JavaScript、TypeScript、YAML
特徴
- Node.jsベースの負荷テストツール。Playwright E2Eテスト、負荷テスト、Synthetic monitoringを統合したプラットフォーム。
- YAMLの宣言的構文でテストシナリオを定義可能。JavaScriptやTypeScriptで柔軟な挙動制御にも対応。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- HTTP、WebSocket、Socket.IO、GraphQL、gRPC、AWS Kinesisなど多様なプロトコルをサポート。
- Playwrightエンジンを統合し、実ブラウザでのフロントエンドパフォーマンステストに対応。
- Serverless Artillery(別ツール)を使えば、AWS Lambdaでサーバーレス実行が可能。サーバースペックを意識せず高負荷テストを実施できる。
費用
- オープンソース版は無料
- Artillery Cloud(Proプラン)で高度なレポート機能、クラウドベースの負荷生成、チーム機能などを利用可能。
参考リンク
Tsung
- 開発元:ProcessOne(Erlangコミュニティ)
- 記述方法:XML
特徴
- Erlangで実装された高並列・分散負荷テストツール。
- Erlangは並行処理指向のプログラミング言語。
- 単一マシンで数千〜数十万の同時ユーザーをシミュレート可能。クラスタ構成では数百万まで対応。
- HTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP、MQTT、AMQP、XMPP/Jabberなど多様なプロトコルに対応。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- プロキシレコーダー機能により、ブラウザ操作を記録してXMLスクリプトに自動変換可能。
- リアルタイムWebダッシュボードとHTML形式のレポート生成機能を内蔵。
費用
- 完全無料(オープンソース)
参考リンク
Postman
- 開発元:Postman Inc.
- 記述方法:GUI
特徴
- 主にAPI機能テストツールとして利用されるが、パフォーマンステスト機能も搭載。
- Free/Basicプラン:最大100仮想ユーザー、月25回のテスト実行
- Professionalプラン:最大500仮想ユーザー、月250回のテスト実行
- Enterpriseプラン:最大500仮想ユーザー、月250回のテスト実行
- Newman CLIを使えば、コレクションを自動実行できる。
- CI/CDパイプライン(Jenkins、Travis CI等)への統合が可能。
- 段階的な負荷増加・スパイク・長時間耐久テストなどの複雑なシナリオを設定可能。
- パフォーマンステストはローカルマシンから実行されるため、システムリソースに依存。
- 大規模な負荷試験には不向きだが、小〜中規模環境でのAPI安定性チェックに有効。
費用
- 基本無料。
- 有償プラン(Basic $14/月、Professional $29/月、Enterprise $49/月)で仮想ユーザー数やテスト実行回数を拡張。
参考リンク
wrk
- 開発元:Will Glozer
- 記述方法:CLI(Luaスクリプトによる拡張可能)
特徴
- C言語で書かれたHTTPベンチマークツール。
- Luaスクリプトを用いることで、HTTP リクエスト生成、レスポンス処理、カスタムレポートが可能。
- 詳細なレイテンシ統計(平均、標準偏差、パーセンタイル)を出力。
- 単発の高負荷ベンチマークに特化。固定負荷を短時間(数秒〜数分)実行するのに適している。
- 段階的な負荷増加やスパイクテスト、長時間耐久テストには対応していない。
費用
- 完全無料(オープンソース)
参考リンク
Vegeta
- 開発元:Tomás Senart
- 記述方法:CLI(Goライブラリとしても利用可能)
特徴
- Go言語製のHTTP負荷テストツール。
- CLIツールとGoライブラリの両方として利用可能。
- 一定のリクエストレートを正確に維持するシンプルな設計。基本的には固定レートでの負荷テストに特化。
- 段階的な負荷増加などの複雑なシナリオは、シェルスクリプトやGoライブラリとして組み込むことが必要。
- 複数エンドポイントへの同時テストに対応。
- Prometheus Exporterを内蔵。攻撃実行中のメトリクスをPrometheusで収集・監視可能。
費用
- 完全無料(オープンソース)
参考リンク
おわりに
今回は、負荷テストツールについて調べてみました。調査を進める中で、ツールごとに得意分野や特性が大きく異なることが分かりました。この記事が皆様の負荷テストツール選定のお役に立てば幸いです。






