テスト戦略 レッスン1

テストピラミッド

単体テスト・結合テスト・E2Eテストのバランスを示すテストピラミッドの考え方と、その意義を学ぶ

テストピラミッドとは

テストピラミッドは、テストの種類ごとに「どれくらいの数を書くべきか」を示す考え方です。 下に行くほど実行が速く安定していて数を多く書き、上に行くほど実行が遅く壊れやすいため数を絞ります。

E2E テスト(少数)
結合テスト(中程度)
単体テスト(最多)

もし逆三角形(E2Eばかり多い「アイスクリームコーン型」)になっていると、 テスト全体の実行が遅くなり、失敗原因の特定にも時間がかかるようになります。

各層の役割と特徴

単体テスト(Unit Test)

1つの関数・クラスを他の依存から切り離して検証する。実行時間はミリ秒単位。 失敗した場合、原因箇所がほぼ一意に特定できる。

結合テスト(Integration Test)

複数のモジュール、あるいはDBやAPIなど実際の依存を組み合わせて連携を確認する。 単体では見つからない「境界の不整合」を検出できる。

E2Eテスト(End-to-End Test)

実際のブラウザ操作などユーザー視点でシステム全体を通しで検証する。 最も現実に近いが、実行が遅く、環境要因でフレーキー(不安定)になりやすい。

なぜバランスが大切なのか

E2Eテストだけに頼ると、1つのバグを特定するのに広い範囲を疑わなければならず、 テストスイート全体の実行にも時間がかかります。一方で単体テストだけでは、 モジュール間の連携部分に潜むバグを見逃す可能性があります。

逆三角形になった場合の問題

  • • テストスイート全体の実行に数十分〜数時間かかる
  • • 失敗時にどのモジュールが原因か特定しづらい
  • • 環境依存でフレーキーになりやすく、信頼を失う

ピラミッド型を保つ利点

  • • 大半のバグを高速な単体テストで即座に発見できる
  • • E2Eは主要なユーザーフローに絞ることで安定運用できる
  • • 開発速度とテストの信頼性を両立できる

ポイント

  • • 単体テストを土台に多く書き、結合・E2Eは徐々に絞り込む
  • • 各層は実行速度・安定性・検出できる問題の種類が異なる
  • • E2Eテストだけに偏る「アイスクリームコーン型」は避ける
  • • バランスの取れたピラミッドが開発速度と信頼性を両立させる

確認クイズ

1 / 3

テストピラミッドが推奨する構成として適切なものはどれか?