単体テストを多く、E2E テストは重要な流れだけ。速くて安定したテストを中心にする。
テストには粒度の違う種類があり、速くて安いものを多く、遅くて壊れやすいものを少なくする形をテストピラミッドと呼びます。
| 種類 | 確かめるもの | 速さ | 道具の例 |
|---|---|---|---|
| 単体テスト | 関数・クラス・1つの部品 | ミリ秒 | Vitest・Jest・RSpec・pytest |
| 結合テスト | API と DB をつないだ動き、部品の組み合わせ | 数十ms〜秒 | 本物の DB(コンテナ)で API を呼ぶ、Testing Library |
| E2E テスト | ブラウザで画面を操作し、全部を通した流れ | 秒〜分 | Playwright・Cypress |
| スナップショットテスト | 出力(描画結果・JSON)が前回と同じか | 速い | Jest・Vitest の toMatchSnapshot、画像の比較 |
Web のバックエンドでは、本物の DB を使った API の結合テストが一番費用対効果がよいことが多く、ピラミッドの真ん中を厚くする考え方(テストトロフィー)もあります。スナップショットは、変化に気づく用途には便利ですが、差分を確かめずに更新しがちなので、大きなスナップショットは避けます。
面接ではこう答える
テストピラミッドは、速くて安い単体テストを多く、遅くて壊れやすい E2E テストを少なくする形の考え方です。Web のバックエンドでは、本物の DB を使った API の結合テストが一番費用対効果がよいことが多く、真ん中を厚くする考え方もあります。大事なのは、入力に対する結果を確かめるテストにし、実装の中身に依存させないことです。
Webとの関わりチームのテストの方針を決めるときと、「どんなテストを書いていますか」に答えるときに使います。