不安定なテストの管理

選択したサイト () では、現時点では CI Visibility は使用できません。

_不安定なテスト_とは、同じコミットに対して複数回テストを実行したときに、合格と不合格の両方の状態を示すテストのことです。あるコードをコミットして CI を実行したときにテストが失敗し、再度 CI を実行したときにテストが合格していた場合、そのテストはコードの品質を証明するものとして信頼できません。

不安定なテストは、CI システムや最終製品にリスクと予測不可能性をもたらします。どのテストが不安定なのかを覚えておかなければならない場合、テスト結果に対する信頼が失われ、パイプラインの再試行に膨大な時間とリソースが浪費されることになります。

テストサービスのページで、指定したテストサービスとブランチの Flaky Tests テーブルを確認します。選択した時間枠の中で、不安定なテストがすべて表示されます。

Test Service ページの Flaky Tests テーブル

このアプリは、不安定なテストについて以下の情報を提供することで、不安定なテストの優先順位付けを支援します。

  • Average duration: テストの実行にかかる平均時間。
  • First and Last flaked: テストが最初に、かつ、直近に不安定な挙動を示したときの日付とコミット SHA。
  • Occurrences: テストが不安定な挙動を示したコミット数。
  • Failure Rate: このテストが最初に不安定になって以来、失敗したテスト実行のパーセンテージ。
  • Trend: 不安定なテストが修正されたのか、それともまだ活発に不安定なのかを視覚的に表示します。

修正したい不安定なテストを特定したら、テストをクリックして、直近の失敗したテスト実行または最初の不安定なテスト実行を表示するリンクを参照してください。

: このテーブルは、選択された期間において最も多くのコミットが不安定だった 1000 の不安定なテストに限定されています。

修復

不安定なテストは、過去 30 日間失敗しなかった場合、テーブルから自動的に削除されます。テスト行にカーソルを合わせると表示されるごみ箱アイコンをクリックして、不安定なテストを手動で削除することもできます。不安定な動作を再度示された場合は、再度追加されます。

新しい不安定なテストを確認する

これらは、現在のブランチあるいはリポジトリのデフォルトブランチの Flaky Tests テーブルに以前は存在しなかった、不安定な動作を示すテストです。

Test Runs ページ

  1. Test Runs ページに移動します。
  2. 左サイドバーのファセット一覧で、Test セクションの New Flaky ファセットを展開し、true にチェックを入れます。 上記の定義に従って、初めて不安定な動作を示したすべてのテスト実行が表示されます。

Branches ページ

  1. Tests ページで、Branches ビューを選択します。
  2. テーブルをフィルタリングして、関心のあるブランチ、サービス、またはコミットを確認します。
  3. New Flaky の列を見ると、上の定義に従って最新のコミットで導入された新しい不安定なテストの数がわかります。

誤って検出された新しい不安定なテストは無視する

特定のコミットに対する新しい不安定なテストが誤って検出されたと判断した場合、そのテストを無視することができます。そのコミットが再び不安定を示すようになれば、テストは再び表示されるようになります。

New Flaky の番号をクリックし、Ignore flaky tests をクリックします。

コミットに対する新しい不安定なテストをすべて無視する

既知の不安定な失敗したテストを見張る

既知の不安定な失敗したテストとは、リポジトリの現在のブランチあるいはデフォルトブランチにおいて動作が不安定なテストのことです。

Test Runs ページ

  1. Test Runs ページに移動します。
  2. 左サイドバーのファセット一覧で、Test セクションの Known Flaky ファセットを展開し、true にチェックを入れます。 上記の定義に従って、不安定であることが分かっている失敗したテスト実行が表示されます。

Branches ページ

  1. Tests ページで、Branches ビューを選択します。
  2. テーブルをフィルタリングして、関心のあるブランチ、サービス、またはコミットを確認します。
  3. Failed 列には、最新のコミットで失敗したテストや既知の不安定な失敗したテストの数が含まれます。
CI Tests Branches ビューでブランチを選択し、Failed 列にテキストボックスを表示すると、1 つのテストが失敗し、1 つの既知の不安定があることがわかります

不安定なテスト属性

不安定なテスト実行、新規の不安定なテスト実行、または既知の不安定なテスト実行には、クエリのフィルタリング、ダッシュボードやモニターの作成に使用できる属性が含まれています。

名前属性説明
Flaky@test.is_flaky:trueテスト実行がコミットで不安定になりました。このテスト実行が失敗し、同じテストとコミットに対して以前に実行したテストが合格しているか、あるいはこのテストの実行が合格し、以前に失敗したテストがあるかのどちらかです。この属性は、あるコミットで初めてテストの不安定が検出されたときにのみ存在します。
New Flaky@test.is_new_flaky:trueそのテスト実行はコミット時に (上記の “Flaky” の定義に従って) 失敗したもので、以前はそのテスト実行のブランチあるいはリポジトリのデフォルトブランチの “Flaky tests” テーブルには存在しませんでした。これは、そのテストが “Flaky tests” テーブルに追加されたことも意味します。
Known Flaky@test.is_known_flaky:trueそのテスト実行はコミット時に (上記の “Flaky” の定義に従って) 失敗したもので、そのテスト実行のブランチあるいはリポジトリのデフォルトブランチの “Flaky test” テーブルにすでに存在していました。つまり、このテストは過去に不安定として検出されており、今回の失敗はこのコミットでの変更の結果ではない可能性があるということです。