隔離されたテストとは?解説
隔離されたテストとは、既知のflakyなテストを意図的にbuildをブロックするパスから外し、そのノイズが、本物の修正が保留中の間にbuildを失敗させないようにしたものです。
テストがflakyな場合、それをブロッキングパスに残すことは、チームに赤いbuildを無視するよう習慣づけ、危険です。削除するとカバレッジを失います。隔離は中間の道です。シグナルのためにテストを実行し続けつつ、修正されるまでmergeをブロックしないようにします。
隔離が行うこと
隔離は、テストを既知のflakyとしてマークし、その結果を合否ゲートから除外します。テストは通常依然として実行されるため、通っているかどうかの可視性は保たれますが、失敗はもはやbuildを赤にしたりmergeをブロックしたりしません。
なぜチームは使うのか
20回に1回失敗する1つのflakyなテストが、週に何十ものmergeをブロックし、CIへの信頼を損なうことがあります。隔離は緑で信頼できるゲートを即座に回復しつつ、カバレッジを保つため、flakyなテストが単に忘れられたり削除されたりすることはありません。
リスクと規律
隔離は保留室であって墓場ではありません。危険なのは、隔離されたテストが積み上がり、静かに永遠にカバレッジを失うことです。健全なチームは隔離リストを追跡し、テストは修正して戻すという期待を設定し、リストが増えたら警告します。
隔離 vs リトライ
リトライは失敗するテストを通ることを期待して再実行し、隔離はそれがブロックすることをまったく止めます。両者は異なる問題を解決します。リトライは実行ごとの一時的でタイミング的なノイズを覆い隠し、隔離は再び信頼される前に本物の修正が必要な、持続的にflakyなテストを扱います。
Latchkeyの視点
隔離はflakyなテスト(テストのバグ)を対象とし、Latchkeyの自己修復は一時的および機械的なインフラの失敗を対象とします。両者は補完的です。本物のインフラの瞬断を自動的にリトライすることで、Latchkeyはあなたの隔離リストを、環境的なノイズで失敗しているテストではなく、実際にflakyなテストに集中させ続けます。
重要なポイント
- 隔離されたテストは依然として実行されますが、もはやbuildをブロックしません。
- 隔離はカバレッジを削除せずに信頼できるゲートを回復します。
- それは一時的な保留室でなければならず、追跡し着実に減らします。
- 隔離はflakyなテストを、リトライは実行ごとの一時的なノイズを扱います。