[章番号]: [機能名/シナリオ名] パフォーマンステスト仕様書
このテンプレートの目的
このファイルは、システムの性能(応答時間、スループット、リソース使用率など)を検証するためのパフォーマンステストの仕様を定義するためのテンプレートです。 負荷シナリオや性能目標(SLO)を具体的に記述します。 詳しい使い方は「テスト仕様の書き方ガイド」を参照してください。
1. はじめに
1.1. 目的
1.2. テスト範囲
- テスト対象:
- [例:
GET /users/{userId}APIエンドポイント] - [例: ピーク時の通常利用シナリオ全体]
- [例:
- テスト対象外:
- [例: サードパーティAPIの性能]
- [例: バッチ処理などの非同期ジョブ]
2. 性能目標 (SLO)
| 指標 (SLI) | 目標値 (SLO) |
|---|---|
| p95 応答時間 | 500ms 未満 |
| スループット | 200 RPS (Requests Per Second) 以上 |
| エラー率 | 0.1% 未満 |
| CPU使用率 | 80% 未満 |
3. テスト環境
| 項目 | 内容 |
|---|---|
| 実行環境 | [例: 本番環境と同等のスペックを持つ専用の性能検証環境] |
| 負荷生成ツール | [例: k6, Apache JMeter] |
| 監視ツール | [例: Prometheus, Grafana, Datadog] |
| テストデータ | [例: 本番相当のデータ量(ユーザー100万件、投稿1億件)] |
4. 負荷シナリオ
4.1. TC-LOAD-001: 負荷テスト - 通常ピーク時
- 目的: 通常のピーク時間帯に想定される負荷をシステムにかけ、性能目標を達成できるかを確認する。
- 負荷プロファイル:
- 仮想ユーザー (VUs): 100 VUs
- Ramp-up (負荷上昇期間): 5分かけて100 VUsまで増加
- Duration (負荷維持期間): 10分間、100 VUsを維持
- Ramp-down (負荷下降期間): 2分かけて0 VUsまで減少
- 実行する処理:
- ユーザーはログイン後、以下の操作をランダムに実行する。
- 投稿一覧の閲覧 (60%)
- 特定の投稿の閲覧 (30%)
- 新規投稿の作成 (10%)
- 各操作間に1〜3秒の思考時間(Think Time)を設ける。
- ユーザーはログイン後、以下の操作をランダムに実行する。
4.2. TC-LOAD-002: 負荷テスト - ストレステスト
- 目的: システムの限界性能と、過負荷からの回復能力を確認する。
- 負荷プロファイル:
- 仮想ユーザー (VUs): 10 VUsから開始し、エラー率が5%を超えるか、応答時間がSLOの3倍を超えるまで、1分ごとに10 VUsずつ増加させる。
- Duration: 限界点に達した後、5分間その負荷を維持する。
- Ramp-down: 5分かけて0 VUsまで減少させる。
- 期待される結果:
- システムが破綻する限界点(VUs, RPS)を特定できること。
- 負荷減少後、システムの応答時間やエラー率が正常値に復帰すること。
5. 測定対象メトリクス
- クライアントサイドメトリクス (負荷生成ツールで収集):
http_req_duration: リクエストごとの応答時間 (p95, p99, avg)http_reqs: 秒間リクエスト数 (RPS)http_req_failed: 失敗したリクエストの割合(エラー率)
- サーバーサイドメトリクス (監視ツールで収集):
- アプリケーション: CPU使用率, メモリ使用率, GC発生頻度
- データベース: CPU使用率, コネクション数, スロークエリ数
- インフラ: ネットワークI/O