パフォーマンステストとは?
パフォーマンステストは、さまざまな条件下でシステムの速度、応答性、安定性を測定する包括的なプラクティスです。
パフォーマンステストは、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、エラー率を測定します。
- 結果が合否になるよう、明示的な目標値に対してテストします。
関連ガイド
What Is Load Testing?Load testing explained: how it checks behavior under expected traffic, key metrics, a tool example, and how l…
What Is Stress Testing?Stress testing explained: pushing a system past its limits to find the breaking point and how it fails, an ex…
What Is Visual Regression Testing?Visual regression testing explained: catching unintended UI changes by comparing screenshots to a baseline, a…
What Is Continuous Testing?Continuous testing explained: running automated tests throughout the delivery pipeline for constant feedback,…