負荷テスト ふかてすと
負荷テストパフォーマンステストk6JMeterストレステストスケーラビリティ
負荷テストって何のためにやるの?
簡単に言うとこんな感じ!
負荷テストは「大勢が同時にアクセスしても壊れないか確認する」テストだよ!開発中は1人でテストするから問題ないのに、リリース後に1000人が同時アクセスしたら落ちた、なんてことを防ぐために事前にシミュレーションするんだ。
負荷テストとは
負荷テスト(Load Testing) とは、本番環境に想定される多数のユーザーが同時にアクセスする状況をシミュレーションし、システムのパフォーマンスと安定性を検証するテストです。
「どれだけの同時接続に耐えられるか」「応答時間が許容範囲内か」「メモリリークはないか」を事前に確認し、本番障害を防ぎます。
負荷テストの種類
| 種類 | 内容 |
|---|---|
| 負荷テスト(Load Test) | 想定される通常の負荷での動作確認 |
| ストレステスト(Stress Test) | 許容限界を超える負荷をかけて破壊点を探す |
| スパイクテスト(Spike Test) | 急激なアクセス増加への対応を確認 |
| ソークテスト(Soak Test) | 長時間の連続稼働での劣化(メモリリーク等)確認 |
| スケーラビリティテスト | スケールアウト時のパフォーマンス線形性確認 |
主な負荷テストツール
| ツール | 特徴 |
|---|---|
| k6 | モダンなJS記述・CI/CD統合が容易 |
| Apache JMeter | 最も普及したGUIベースのツール |
| Gatling | Scalaベース・レポートが優れる |
| Locust | Pythonで書けるOSSツール |
| Artillery | Node.jsベースのシナリオ型テスト |
主な評価指標
| 指標 | 内容 |
|---|---|
| レスポンスタイム(P50/P95/P99) | 50%・95%・99%のリクエストが返ってくる時間 |
| スループット(RPS/TPS) | 1秒あたりのリクエスト・トランザクション数 |
| エラー率 | 失敗したリクエストの割合 |
| 並行ユーザー数 | 同時接続できるユーザー数の上限 |
歴史と背景
- 2000年代:Apache JMeterが事実上の標準ツールとして定着
- 2019年:k6がGrafana Labsに買収され、モダンな負荷テストのデファクトに
- 現在:クラウドの分散実行(AWS/GCP上でk6を分散実行等)が普及