【てすとぴらみっど】

テストピラミッド とは?

最終更新:
💡 小さなテストで土台を作り、大きなテストでつながりを確かめる

自動テストを異なる粒度で組み合わせ、細かく速いテストを多く、広い範囲のテストを絞る考え方をピラミッドで示した指針。各層の呼び方や適切な割合は対象によって変わる。

📌 このページのポイント
テストの粒度と量を組み合わせる E2E 結合テスト 部品の連携 ユニットテスト 小さい範囲を多く確認 関数・クラスなど 端から端 連携 割合・時間・安定性は対象と実装次第 重要なリスクと保守の負担で調整
よく使われる層の例。元のモデルはUnit・Service・UIで、固定の割合を指定する規格ではない。
ひよこ ひよこ
テストピラミッドって何なの?
ペンギン先生 ペンギン先生
自動テストの粒度と量を考える指針だよ。小さなユニットテストを土台にし、結合テストやE2Eテストで連携も確かめる構成としてよく説明されるんだ。
ひよこ ひよこ
なんで下が一番多いの?
ペンギン先生 ペンギン先生
確認する範囲が小さいと、速く実行しやすく、失敗の原因も絞りやすいからだよ。ただし実行時間や安定性は実装次第で、「数千件が必ず数秒」とは決まっていないんだ。
ひよこ ひよこ
じゃあE2Eテストだけたくさん書けば全部カバーできるんじゃないの?
ペンギン先生 ペンギン先生
小さな不具合を毎回システム全体で調べると、実行や原因調査・保守の負担が増えやすいよ。でもユニットテストだけでは接続の問題を見逃す。重要な利用経路をE2Eで確かめる役割も残るんだ。
ひよこ ひよこ
理想的な比率ってどのくらいなの?
ペンギン先生 ペンギン先生
全プロジェクト共通の正解はないよ。件数だけで決めず、重要なリスクを検知できるか、実行時間や維持の負担はどうかを見て調整するんだ。
ひよこ ひよこ
最近はピラミッド以外の考え方もあるって聞いたけど?
ペンギン先生 ペンギン先生
Kent C. Doddsのテスティングトロフィーは、JavaScriptアプリを念頭に結合テストを重視する指針だよ。静的検査も含む。対象と「結合テスト」の意味が違う場合もあるので、名前だけで優劣を決めないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストピラミッド」って出てきたら「細かいテストを土台に、広い範囲のテストも組み合わせる指針」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test Pyramid」 = テストのピラミッド
💬 Mike Cohnが広めたモデルだよ。元の層はUnit・Service・UI。現在は結合・E2Eなどの呼び方でも説明されるけれど、層の名前や割合を固定する規格ではないんだ。

参考資料

← 用語集にもどる