CTS-KB

テストピラミッド

てすとぴらみっど

Testing PyramidTest Pyramidテスト・ピラミッド
#テスト#テストモデル#配分戦略

単体テスト を基盤に、結合テスト ・ E2E テスト と上に行くほど少なくする古典的なテスト配分モデル。Mike Cohn が著書『Succeeding with Agile』(2009) で提唱した。

概要

       /\
      /E2\        ← 少なめ(数十)/ 遅い・高コスト
     /----\
    / 結合 \      ← 中くらい(数百)/ 中速・中コスト
   /--------\
  /  単体   \    ← 多め(数千)/ 速い・低コスト
 /----------\

下に行くほど多く・速く・安く という三角形の配分。長年「テスト戦略の定石」として広く採用されている。

各層の目安

層件数速度カバー範囲
E2E数十数秒〜クリティカルなユーザーシナリオのみ
結合数百数百 msモジュール間の連携
単体数千数 ms個別のロジック・分岐・例外

なぜピラミッド型か

速度

E2E は 1 件で数秒〜数十秒。これを単体並みに大量実行すると CI が破綻する。 遅いテストほど少なくする のが基本。

コスト

E2E は環境構築・データ準備・実行が高コスト。単体は安い。 コスト効率を最大化 するピラミッド型が合理的。

バグ局在化

単体テストは「どこで壊れたか」がピンポイントで分かる。E2E は「どこかで壊れた」しか分からない。 デバッグ容易性 も下層を厚くする理由。

ピラミッドが向く場面

状況向き具合
バックエンド(純粋ロジック中心)◎
計算が多い領域(金融・在庫)◎
API 連携が薄い◎
動的型付け言語○

ピラミッドの限界

弱点内容
モック過剰単体テストを増やすと、結合点のモックが膨らむ
本番との乖離モックが本物と振る舞いが違うリスク
フロントエンドに合わないUI は結合・E2E でしか検証できない部分が多い

これらの弱点を補うために生まれたのが テストトロフィー (結合中心 + 静的解析基盤)。

AI 駆動開発との関係

AI 駆動開発では テストの実行速度がループ速度を決める 。ピラミッドの「単体多め」は、AI ループを高速化する点で理にかなう。

ただし、 単体だけで安心しない こと。AI が生成するコードは結合点で壊れやすいので、結合テストも必ず併走させる。

関連記事

関連用語

参考資料