テスト戦略 レッスン1
テストピラミッド
単体テスト・結合テスト・E2Eテストのバランスを示すテストピラミッドの考え方と、その意義を学ぶ
テストピラミッドとは
テストピラミッドは、テストの種類ごとに「どれくらいの数を書くべきか」を示す考え方です。 下に行くほど実行が速く安定していて数を多く書き、上に行くほど実行が遅く壊れやすいため数を絞ります。
E2E テスト(少数)
結合テスト(中程度)
単体テスト(最多)
もし逆三角形(E2Eばかり多い「アイスクリームコーン型」)になっていると、 テスト全体の実行が遅くなり、失敗原因の特定にも時間がかかるようになります。
各層の役割と特徴
単体テスト(Unit Test)
1つの関数・クラスを他の依存から切り離して検証する。実行時間はミリ秒単位。 失敗した場合、原因箇所がほぼ一意に特定できる。
結合テスト(Integration Test)
複数のモジュール、あるいはDBやAPIなど実際の依存を組み合わせて連携を確認する。 単体では見つからない「境界の不整合」を検出できる。
E2Eテスト(End-to-End Test)
実際のブラウザ操作などユーザー視点でシステム全体を通しで検証する。 最も現実に近いが、実行が遅く、環境要因でフレーキー(不安定)になりやすい。
なぜバランスが大切なのか
E2Eテストだけに頼ると、1つのバグを特定するのに広い範囲を疑わなければならず、 テストスイート全体の実行にも時間がかかります。一方で単体テストだけでは、 モジュール間の連携部分に潜むバグを見逃す可能性があります。
逆三角形になった場合の問題
- • テストスイート全体の実行に数十分〜数時間かかる
- • 失敗時にどのモジュールが原因か特定しづらい
- • 環境依存でフレーキーになりやすく、信頼を失う
ピラミッド型を保つ利点
- • 大半のバグを高速な単体テストで即座に発見できる
- • E2Eは主要なユーザーフローに絞ることで安定運用できる
- • 開発速度とテストの信頼性を両立できる
ポイント
- • 単体テストを土台に多く書き、結合・E2Eは徐々に絞り込む
- • 各層は実行速度・安定性・検出できる問題の種類が異なる
- • E2Eテストだけに偏る「アイスクリームコーン型」は避ける
- • バランスの取れたピラミッドが開発速度と信頼性を両立させる
確認クイズ
1 / 3テストピラミッドが推奨する構成として適切なものはどれか?