push のたびに自動でテストし、失敗したら止める。速さと並列化が大事。
自動テストは、CI(コードを push するたびに自動でビルドとテストを流す仕組み)で動かしてはじめて効果が出ます。プルリクエストごとに流し、失敗したらマージできないようにするのが基本です。
| いつ | 流すテスト | ねらい |
|---|---|---|
| push・プルリクエストごと | 型チェック・lint・単体・結合、主要な流れの E2E | 数分〜十数分で、マージしてよいかを判断する |
| 本流のブランチに入ったとき | E2E の全部、検証環境へのデプロイ後のスモークテスト | つないだ状態で壊れていないか |
| 夜間・定期 | 時間のかかる E2E、いろいろなブラウザ・端末、負荷テストの一部 | 毎回は流せない広い範囲を確かめる |
- 段階に分ける:速いテスト(単体・型チェック)を先に流し、失敗したらすぐ知らせる。遅い E2E はその後、または主要なものだけをプルリクエストで、全部は夜間やリリース前に。
目安として、プルリクエストのテストが 10 分を大きく超えると、待ち時間が開発の邪魔になり始めることが多いです。
面接ではこう答える
CI は、コードを push するたびに自動でビルドとテストを流す仕組みです。プルリクエストごとに型チェック・単体・結合と主要な E2E を流し、失敗したらマージできないようにします。速いテストを先に流してすぐ知らせ、時間のかかる E2E の全部やいろいろなブラウザのテストは、本流に入ったときや夜間に流す、と段階に分けます。
QAとの関わり自動テストが価値を出すのは CI に入ってからです。QA が CI の設計に関わると、テストの待ち時間と信頼度が大きく変わります。