ストーリー
高橋アーキテクトが問いかけた。
4つの負荷テスト
1. ロードテスト(Load Test)
想定される通常の負荷をかけて、システムが要件を満たすか確認するテストです。
// ロードテストの特性
const loadTest = {
purpose: '通常負荷での性能確認',
pattern: '段階的に負荷を上げ、一定時間維持し、下げる',
duration: '10-30分',
targetRPS: '通常時の想定負荷(例: 1000 RPS)',
checkPoints: [
'レスポンスタイムがSLA内か',
'エラー率が許容範囲か',
'リソース使用率が適切か',
],
};
VU数
100│ ┌────────────┐
│ ╱ ╲
50│ ╱ ╲
│ ╱ ╲
0│╱ ╲
└──────────────────── 時間
0 5 10 15 20 25分
2. ストレステスト(Stress Test)
システムの限界を超える負荷をかけて、限界値と崩壊パターンを確認するテストです。
const stressTest = {
purpose: 'システムの限界値と崩壊時の挙動確認',
pattern: '限界を超えるまで段階的に負荷を上げ続ける',
duration: '30-60分',
targetRPS: '想定負荷の150-300%',
checkPoints: [
'限界RPS(飽和点)はいくつか',
'限界を超えた時にグレースフルに劣化するか',
'エラーメッセージは適切か',
'リカバリーにかかる時間は',
],
};
VU数
500│ ╱ ← 限界突破
│ ╱
300│ ╱
│ ╱
100│ ╱
│ ╱
0│──╱
└──────────────── 時間
3. スパイクテスト(Spike Test)
突然の急激なトラフィック増加に対するシステムの回復力を確認するテストです。
const spikeTest = {
purpose: '突発的なトラフィック急増への耐性確認',
pattern: '通常負荷 → 突然ピーク → 通常負荷に戻す',
duration: '15-30分',
targetRPS: '通常の5-10倍のスパイク',
checkPoints: [
'スパイク時にシステムが落ちないか',
'オートスケーリングが正しく機能するか',
'スパイク後に正常に戻るか',
'スパイク中のエラー率はどの程度か',
],
};
VU数
500│ ╱╲
│ ╱ ╲
300│ ╱ ╲
│ ╱ ╲
100│╱ ╲─────────
│
0│
└──────────────────── 時間
0 5 10 15分
4. ソークテスト(Soak Test / Endurance Test)
長時間にわたって通常負荷をかけ続け、メモリリークや性能劣化を検出するテストです。
const soakTest = {
purpose: '長時間運用での安定性確認',
pattern: '通常負荷を長時間維持',
duration: '4-24時間',
targetRPS: '通常時の想定負荷',
checkPoints: [
'メモリ使用量が時間とともに増加していないか',
'レスポンスタイムが徐々に悪化していないか',
'コネクションリークはないか',
'ログファイルの肥大化で問題が起きないか',
],
};
VU数
100│ ┌──────────────────────────────────┐
│ │ │
50│ │ 長時間一定負荷を維持 │
│ │ │
0│─┘ └─
└───────────────────────────────────── 時間
0 2 4 6 8 10 12時間
テスト種類の選択ガイド
| テスト | いつ実施するか | 何が分かるか |
|---|---|---|
| ロードテスト | リリース前 | 通常運用で要件を満たすか |
| ストレステスト | 容量計画時 | 限界値とスケーリング計画 |
| スパイクテスト | セール・イベント前 | 急激な負荷増への耐性 |
| ソークテスト | 定期的(月1回) | メモリリーク、長期安定性 |
まとめ
| ポイント | 内容 |
|---|---|
| ロードテスト | 通常負荷で性能確認 |
| ストレステスト | 限界値と崩壊パターン確認 |
| スパイクテスト | 突発的な負荷急増への耐性 |
| ソークテスト | 長時間運用の安定性確認 |
| 選択 | 目的に応じて適切なテスト種類を選ぶ |
チェックリスト
- 4つの負荷テストの違いを説明できる
- それぞれの負荷パターン(グラフの形)をイメージできる
- テスト種類の選択基準を理解した
次のステップへ
次は「テストシナリオの設計」を学びます。現実的なテストシナリオをどう設計するかを理解しましょう。
推定読了時間: 25分