テストピラミッド

単体テスト、結合テスト、E2E テストの比率を示すテスト戦略のモデル

テスト品質

テストピラミッドとは

テストピラミッドは、Mike Cohn が提唱したテスト戦略のモデルで、下層 (単体テスト) を多く、上層 (E2E テスト) を少なくする。下層ほど高速・安定・低コストで、上層ほど低速・不安定・高コスト。

ピラミッド

        /  E2E  \        少数、遅い、不安定
       / 結合テスト \
      / 単体テスト    \    多数、速い、安定
レベル 速度 安定性 コスト 比率
単体テスト 最速 高い 低い 70%
結合テスト 中程度 中程度 中程度 20%
E2E テスト 遅い 低い 高い 10%

各レベルの役割

レベル テスト対象 ツール
単体テスト 関数、クラス、モジュール Vitest
結合テスト モジュール間の連携、API Vitest + supertest
E2E テスト ユーザーフロー全体 Playwright

アンチパターン: アイスクリームコーン

  ┌──────────────┐
  │  手動テスト    │  ← 多い (遅い、高コスト)
  ├──────────────┤
  │  E2E テスト   │
  ├──────────────┤
  │  結合テスト    │
  ├──────────────┤
  │  単体テスト    │  ← 少ない
  └──────────────┘

手動テストや E2E テストに依存し、単体テストが少ない状態。テストが遅く不安定で、フィードバックが遅い。

テスティングトロフィー (Kent C. Dodds)

        /  E2E  \
       / 結合テスト \      ← 結合テストを最も重視
      / 単体テスト    \
     / 静的解析        \    ← TypeScript, ESLint

フロントエンド開発では、結合テスト (コンポーネントテスト) を最も重視する。

Lambda のテスト戦略

レベル テスト内容
単体テスト ビジネスロジック (純粋関数)
結合テスト Lambda ハンドラー + モック DB
E2E テスト API Gateway → Lambda → DynamoDB (dev 環境)

テストカバレッジの目安

カバレッジ 評価
80%+ 良好
60〜80% 許容
60% 未満 改善が必要

100% を目指す必要はない。重要なビジネスロジックとエッジケースをカバーする。

テストピラミッドの背景や設計思想は関連書籍に詳しい。

関連用語