現在、選択されたサイト () では CI Visibility はご利用いただけません。
概要
不安定なテスト (flaky test) とは、同一のコミットに対する複数回のテスト実行で、合格と失敗の両方が生じるテストを指します。あるコードをコミットして CI を実行した際にテストが失敗し、再度 CI を実行すると同じテストが合格するような場合、そのテストは品質を検証する指標としての信頼性が低いと言えます。
不安定なテストが存在すると、CI システムや最終成果物に予測不能なリスクをもたらします。どのテストが不安定なのかを人が把握しておかなければならない状況では、テスト結果への信頼が損なわれ、パイプラインの再実行に膨大な時間とリソースが浪費されます。
ブランチごとの一覧では、コミットによって新たに追加された不安定なテストの数、不安定と判定されたコミットの数、合計テスト時間、そしてブランチの最新コミット情報を確認できます。
以下の情報を活用して、不安定なテストの修正優先度を判断してください。
- Average duration (平均実行時間): テストの実行にかかる平均的な時間
- First flaked と Last flaked: テストが初めて、または直近で不安定になった日時と該当コミットの SHA
- Commits flaked (不安定が発生したコミット数): そのテストが不安定な挙動を示したコミットの数
- Failure rate (失敗率): テストが初めて不安定になって以降、失敗したテスト実行の割合
- Trend (傾向): 不安定なテストが修正されたのか、それとも継続して不安定な状態が続いているのかを示す可視化情報
修正が必要な不安定なテストを特定したら、そのテストをクリックすると、直近の失敗テスト実行や最初に不安定が発生したテスト実行を確認できるリンクが表示されます。
過去 30 日間テストが失敗していない不安定なテストは、自動的にテーブルから除外されます。また、テスト行にカーソルを合わせると表示されるごみ箱アイコンをクリックして、不安定なテストを手動で削除することも可能です。再度不安定な挙動を示した場合には、再びテーブルに追加されます。
デフォルトブランチの不安定なテスト
デフォルトブランチの不安定なテストテーブルには、デフォルトブランチで不安定な挙動を示したテストだけでなく、デフォルトブランチへマージされたフィーチャーブランチで不安定となったテストも含まれます。
フィーチャーブランチからマージされた不安定なテストは、Git コミット履歴のうち直近 5,000 件のコミットを確認することで検出されます。Git コミット履歴は Test Optimization ライブラリによって収集され、各コミットのテストフェーズが CI ビルドで実行されるたびにテスト結果とともにアップロードされます。
制限事項:
- フィーチャーブランチでコミットのスクワッシュやリセット & 強制プッシュを行うと、コミット履歴が変更されるため、そのブランチで検出された不安定なテストはデフォルトブランチには表示されません。
- フィーチャーブランチ内で不安定なテストが検出され、その後同じブランチ内で修正されたとしても、その修正情報を自動的に検知できないため、デフォルトブランチ上では依然として不安定なテストとして表示されます。ただし、手動で不安定なテストをテーブルから削除することは可能です。
不安定なテストのメトリクス
デフォルトブランチでは、不安定なテストの状況を追跡するメトリクスが用意されています。このメトリクスは 30 分ごとに生成され、その時点でデフォルトブランチに存在するすべての不安定なテストをカウントします。
デフォルトブランチビューのグラフ Total Flaky Tests から、このメトリクスを確認できます。
このメトリクスは CI Visibility - Tests ダッシュボードでも参照できます。
新規不安定なテスト
新規不安定なテストとは、不安定な挙動が確認され、かつ現在のブランチまたはリポジトリのデフォルトブランチのいずれの不安定なテストテーブルにも以前は存在しなかったテストを指します。
テーブルには、選択した期間において不安定な挙動を示したコミット数が最も多い上位 1000 件の不安定なテストのみが表示されます。
Test Runs ページ
- Test Runs ページに移動します。
- 左サイドバーのファセット一覧で、Test セクションの New Flaky ファセットを展開し、
true
にチェックを入れます。
上記の定義に従って、初めて不安定な動作を示したすべてのテスト実行が表示されます。
Branches ページ
- Tests ページで、Branches ビューを選択します。
- テーブルをフィルタリングして、関心のあるブランチ、サービス、またはコミットを確認します。
- New Flaky の列を見ると、上の定義に従って最新のコミットで導入された新しい不安定なテストの数がわかります。
誤って検出された新しい不安定なテストは無視する
特定のコミットに対する新しい不安定なテストが誤って検出されたと判断した場合、そのテストを無視することができます。そのコミットが再び不安定を示すようになれば、テストは再び表示されるようになります。
New Flaky の番号をクリックし、Ignore flaky tests をクリックします。
既知の不安定な失敗したテスト
既知の不安定な失敗したテストとは、リポジトリの現在のブランチあるいはデフォルトブランチにおいて動作が不安定なテストのことです。
Test Runs ページ
- Test Runs ページに移動します。
- 左サイドバーのファセット一覧で、Test セクションの Known Flaky ファセットを展開し、
true
にチェックを入れます。
上記の定義に従って、不安定であることが分かっている失敗したテスト実行が表示されます。
Branches ページ
- Tests ページで、Branches ビューを選択します。
- テーブルをフィルタリングして、関心のあるブランチ、サービス、またはコミットを確認します。
- Failed 列には、最新のコミットで失敗したテストや既知の不安定な失敗したテストの数が含まれます。
参考資料