選択したサイト () では現在 Early Flake Detection は利用できません。

Join the Beta!

Early Flake Detection は公開ベータ版です。

概要

Early Flake Detection は、開発サイクルの早い段階で不安定なテストを特定することでコード品質を向上させる、テストの不安定性に対する Datadog のソリューションです。不安定なテストについては、不安定なテストの管理を参照してください。

新しく追加されたテストを複数回実行することで、Datadog はこれらのテストがデフォルトブランチにマージされる前に不安定性を検出することができます。ある調査では、この方法で最大で 75% の不安定なテストを特定できることが示されています。

Known Tests
Datadog のバックエンドは、特定のテストサービスに対して固有のテストを保存します。テストセッションが実行される前に、Datadog ライブラリはこれらの既知のテストのリストをフェッチします。
Detection of New Tests
テストが既知のテストリストにない場合、そのテストは新しいと見なされ、自動的に 10 回まで再試行されます。
Flakiness Identification
テストを複数回実行することで、レースコンディションなどの問題を発見することができます。テストの試行のいずれかが失敗した場合、そのテストは自動的に不安定なテストとしてタグ付けされます。

テストを複数回実行することで、不安定性の原因となるランダムな状態を明らかにできる可能性が高まります。Early Flake Detection は、安定した信頼性の高いテストだけがメインブランチに統合されるようにします。

フィーチャーブランチのマージは、Quality Gate でブロックすることができます。詳細については、Quality Gates ドキュメントを参照してください。

セットアップ

Early Flake Detection を実装する前に、開発環境の Test Visibility を構成する必要があります。Datadog Agent を使用してデータをレポートする場合は、v6.40 または 7.40 以降を使用してください。

構成

Datadog ライブラリを Test Visibility 用に設定したら、Test Service Settings ページから Early Flake Detection を構成します。

テストサービス設定の Early Flake Detection
  1. Software Delivery > Test Visibility > Settings に移動します。
  2. テストサービスの Early Flake Detection 列の Configure をクリックします。
  3. トグルをクリックして Early Flake Detection を有効にし、Excluded Branches from Early Flake Detection のリストを追加または変更します。
Early Flake Detection を有効にして、テストサービス構成で除外ブランチを定義する

互換性

必要なテストフレームワークと dd-trace のバージョンは次の通りです。

dd-trace-js:

  • 5.x リリースでは >=5.12.0
  • 4.x リリースでは >=4.36.0
  • 3.x リリースでは >=3.57.0

テストフレームワークの互換性は、Test Visibility の互換性と同じですが、playwright は例外で、>=1.38.0 からしかサポートされていません。

dd-trace-java>=1.34.0

dd-trace-dotnet>=2.51.0

除外ブランチの管理

除外ブランチでは、Early Flake Detection によってテストが再試行されません。これらのブランチで実行されるテストは、Early Flake Detection の対象として新しいテストとは見なされません。

コミットでの Early Flake Detection の動作方法

Test Service Settings ページで除外ブランチのリストを管理し、特定のワークフローやブランチ構造に合わせて機能を調整できます。

Test Visibility Explorer で結果を探索する

以下のファセットを使用して、Test Visibility Explorer で Early Flake Detection と新規テストを実行するセッションをクエリできます。

  • Test Session: Early Flake Detection を実行しているテストセッションでは、@test.early_flake.enabled タグが true に設定されています。
  • New Tests: 新しいテストでは、@test.is_new タグが true に設定され、このテストの再試行では @test.is_retry タグが true に設定されます。

トラブルシューティング

Early Flake Detection に問題があると思われる場合は、Test Service Settings ページに移動して、テストサービスを探し、Configure をクリックします。トグルをクリックして、Early Flake Detection を無効にします。

新しいテストが再試行されない理由

これには以下のような原因が考えられます。

  • このテストはすでに stagingmain、または preprod などの除外されたブランチで実行されています。
  • このテストの実行時間が 5 分を超えています。非常に遅いテストに Early Flake Detection を適用しないメカニズムがあります。これらのテストを再試行すると、CI パイプラインに大きな遅延が発生する可能性があるためです。

新しくないテストが再試行された場合

Datadog ライブラリが既知のテストの完全なリストを取得できない場合、Datadog ライブラリは新規でないテストを再試行することがあります。このエラーが CI パイプラインを遅くしないようにする仕組みがありますが、発生した場合は Datadog サポートに連絡してください。

その他の参考資料