【てすとぴらみっど】

テストピラミッド とは?

💡 テストの量は「土台どっしり、頂上ちょこん」が黄金バランス
📌 このページのポイント
テストピラミッド E2Eテスト 結合テスト ユニットテスト 遅い・少ない 速い・多い コスト高 コスト低 理想比率: E2E 10% / 結合 20% / ユニット 70%
テストピラミッドのイメージ
ひよこ ひよこ

テストピラミッドって何なの?

ペンギン先生 ペンギン先生

ソフトウェアのテストをどのくらいの比率で書くべきかを、ピラミッドの形で表したモデルだよ。一番下にユニットテスト、真ん中に結合テスト、一番上にE2Eテストを置くんだ

ひよこ ひよこ

なんで下が一番多いの?

ペンギン先生 ペンギン先生

ユニットテストは1つの関数やクラスだけを確認するから、実行が超高速で安定しているんだよ。数千個あっても数秒で終わる。だから土台としてたくさん書くのが効率的なんだ

ひよこ ひよこ

じゃあE2Eテストだけたくさん書けば全部カバーできるんじゃないの?

ペンギン先生 ペンギン先生

それが「アイスクリームコーン型」と呼ばれるアンチパターンだね。E2Eテストブラウザ操作を再現するから1件あたり数分かかるし、ちょっとしたUI変更で壊れやすい。メンテナンスコストが爆発的に増えるんだよ

ひよこ ひよこ

理想的な比率ってどのくらいなの?

ペンギン先生 ペンギン先生

よく言われるのはユニット70%、結合20%、E2E10%くらいだね。ただしこれはプロジェクトの性質によって変わるから、あくまで目安だよ

ひよこ ひよこ

最近はピラミッド以外の考え方もあるって聞いたけど?

ペンギン先生 ペンギン先生

いい質問だね。Kent C. Doddsが提唱した「テスティングトロフィー」では、結合テストを一番重視するんだ。フロントエンド開発ではコンポーネント間の連携が重要だから、結合テストの比率を増やす方が費用対効果が高いという考え方だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストピラミッド」って出てきたら「ユニットテストを一番多く、E2Eテストは少なめに、というテスト量のバランス指針」と思えればだいたいOK!
📖 おまけ:英語の意味
「Test Pyramid」 = テストのピラミッド
💬 Mike Cohnが著書『Succeeding with Agile』で提唱した概念だよ。ピラミッドの形がそのままテストの理想的な比率を表しているんだ
← 用語集にもどる