Skip to content
Latchkey

パフォーマンステストとは?

パフォーマンステストは、さまざまな条件下でシステムの速度、応答性、安定性を測定する包括的なプラクティスです。

パフォーマンステストは、load、stress、soak、spikeテストを含む幅広いファミリーです。その役割は、非機能的な問いに答えることです。どれだけ速いか、同時にどれだけの数か、どれだけの時間か、そして限界でどう振る舞うか。機能テストが正しさを確認するのに対し、パフォーマンステストは、技術的にはすべて動作していても、ユーザーが感じる品質を確認します。

パフォーマンステストのファミリー

  • load testing: 想定トラフィック下での挙動。
  • stress testing: 限界を超えた挙動。
  • soak testing: 時間をかけた持続的な負荷下での挙動。
  • spike testing: 突然の急増下での挙動。

主要な指標

パフォーマンスはlatencyパーセンタイル(p50、p95、p99)、throughput(秒あたりのリクエスト数)、負荷下でのエラー率、リソース使用率で測定されます。最も遅いリクエストが最悪のユーザー体験を形作るため、テールlatencyは平均値よりも重要です。

目標値の設定

パフォーマンステストは目標値に対してのみ意味を持ち、しばしばサービスレベル目標として表現されます。例えば「秒あたり500リクエストでp95が200ms未満」のように。目標値がなければ数字は単なる雑学ですが、目標値があれば合否のシグナルになります。

簡単な例

パフォーマンスのthresholdは、テールlatencyが合意された目標値を超えるとテストを自動的に失敗させます。

A performance threshold
thresholds: {
  http_req_duration: ["p(95)<200"], // p95 must stay under 200ms
}

CIにおけるパフォーマンステスト

軽量なパフォーマンスチェックは、リグレッションが本番に届く前に捕まえるためpull requestのゲートにでき、より重い実行はスケジュールに回します。信頼できる結果は一貫したハードウェアに依存するため、ノイズが多く変動するrunnerは数字を歪めます。パフォーマンスjobを高速で一貫したrunnerで実行することで、build間の比較を公平に保てます。

重要なポイント

  • パフォーマンステストはload、stress、soak、spikeテストをカバーします。
  • テールlatencyのパーセンタイル、throughput、エラー率を測定します。
  • 結果が合否になるよう、明示的な目標値に対してテストします。

関連ガイド