コンテンツにスキップ

[章番号]: [機能名/シナリオ名] パフォーマンステスト仕様書

このテンプレートの目的

このファイルは、システムの性能(応答時間、スループット、リソース使用率など)を検証するためのパフォーマンステストの仕様を定義するためのテンプレートです。 負荷シナリオや性能目標(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

6. 関連ドキュメント