テストピラミッド

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

テスト品質

テストピラミッドとは

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

ピラミッド

ピラミッドを図で示す。

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

各レベルの役割

各レベルの役割を以下にまとめる。

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

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

アンチパターン: アイスクリームコーンを図で示す。

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

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

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

テスティングトロフィー (Kent C. Dodds) を図で示す。

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

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

Lambda のテスト戦略

Lambda のテスト戦略を以下にまとめる。

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

テストカバレッジの目安

テストカバレッジの目安を以下に示す。

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

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

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

この記事は役に立ちましたか?

関連用語

関連する記事