This product is not supported for your selected Datadog site. ().

概要

Test Optimization の Auto Test Retries 機能を使用すると、失敗したテストを最大 N 回まで再試行できるため、不安定なテストが原因でビルドが失敗するのを防ぐことができます。 失敗したテストケースは、正常にパスするか、再試行回数がなくなるまで再試行されます (その場合、ビルドは失敗します)。

セットアップ

テスト実行のために Test Optimization が構成されていることを確認してください。

互換性

dd-trace-java >= 1.34.0

テストフレームワークの互換性は、Scala Weaver を除き、Test Optimization Compatibility と同じです。

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

この機能のデフォルトの動作は、失敗したテストケースを最大 5 回まで再試行します。 この動作は、以下の環境変数で微調整できます。

  • DD_CIVISIBILITY_FLAKY_RETRY_ONLY_KNOWN_FLAKES - この環境変数が true に設定されている場合、Test Optimization が 不安定と判断したテストケースのみが再試行されます。
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT- テストケースごとの再試行回数の上限を、負でない任意の数に変更するために設定できます。

互換性

dd-trace-js >= v5.19.0

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

この機能のデフォルトの動作は、失敗したテストケースを最大 5 回まで再試行します。 この動作は、以下の環境変数で微調整できます。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - リモート設定が有効な場合でも再試行を明示的に無効にするには、0 または false に設定します (デフォルト: true)。
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT- テストケースごとの再試行回数の上限を変更するための負でない数 (デフォルト: 5)。

互換性

datadog-ci-rb >= 1.4.0

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

この機能のデフォルトの動作は、失敗したテストケースを最大 5 回まで再試行します。 この動作は、以下の環境変数で微調整できます。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - リモート設定が有効な場合でも再試行を明示的に無効にするには、0 または false に設定します (デフォルト: true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - テストケースごとの再試行回数の上限を変更するための負でない数 (デフォルト: 5)。
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT- 再試行する失敗したテストの合計数の上限を設定するための負でない数 (デフォルト: 1000)

互換性

dd-trace-dotnet >= 3.4.0

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

デフォルトでは、この機能は失敗したテストケースを最大 5 回まで再試行します。 以下の環境変数を使用して、Auto Test Retries をカスタマイズします。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - 0 または false に設定すると、リモート設定が有効な場合でも再試行を明示的に無効にします (デフォルト: true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - テストケースごとの再試行回数の上限を変更するための負でない数 (デフォルト: 5)。
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT- 再試行する失敗したテストの合計数の上限を設定するための負でない数 (デフォルト: 1000)

互換性

orchestrion >= 0.9.4 + dd-trace-go >= 1.69.1

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

デフォルトでは、この機能は失敗した各テストケースを最大 5 回まで再試行します。 以下の環境変数を使用して、Auto Test Retries をカスタマイズします。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - 0 または false に設定すると、リモート設定が有効な場合でも再試行を明示的に無効にします (デフォルト: true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - テストケースごとの再試行回数の上限を変更するための負でない数 (デフォルト: 5)。
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT- 再試行する失敗したテストの合計数の上限を設定するための負でない数 (デフォルト: 1000)

互換性

dd-trace-py >= 3.0.0 (pytest >= 7.2.0)

構成

Test Optimization をセットアップした後、CI/CD Settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

この機能のデフォルトの動作では、失敗したテストケースを最大 5 回まで再試行します。Pytest において、元のセットアップ、ティアダウン、またはフィクスチャで失敗したテストは再試行されません。

この動作は、以下の環境変数で微調整できます。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - 0 または false に設定すると、リモート設定が有効な場合でも再試行を明示的に無効にします (デフォルト: true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - テストケースごとの最大再試行回数を変更するための負ではない数値 (デフォルト: 5)。
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT- 再試行する失敗テストの合計数の上限を設定するための負でない数値 (デフォルト: 1000)

動的 Auto Test Retries

dd-trace-py >= 4.15.0

デフォルトでは、Auto Test Retries はすべての失敗したテストに同じ再試行回数の上限を適用します。Dynamic Auto Test Retries (Dynamic ATR) は、最初の試行でテストの実行にかかった時間に基づいて再試行回数を決定します。実行時間が短いテストほど再試行回数が多くなり、実行時間が長いテストほど再試行回数が少なくなります。

テストの再試行回数の上限は、最初の試行の所要時間から一度だけ決定され、そのテストのすべての再試行に適用されます。テストは、再試行が成功すると、それ以降は再試行されません。

デフォルトの所要時間の区分は以下のとおりです。

最初の試行の所要時間デフォルトの再試行回数
5 秒以下10
5 秒を超え、10 秒以下5
10 秒を超え、30 秒以下3
30 秒を超え、5 分以下2
5 分を超える1

失敗したテストはすべて、所要時間に関係なく、少なくとも 1 回は再試行されます。

Dynamic Auto Test Retries を有効にするには、以下の環境変数を設定します。

  • DD_CIVISIBILITY_DYNAMIC_ATR_ENABLED - true に設定すると、固定の DD_CIVISIBILITY_FLAKY_RETRY_COUNT 上限ではなく、テストの最初の試行の所要時間に基づいて再試行回数が決定されます (デフォルト: false)。Dynamic ATR が有効な間は、固定の上限は無視されます。Auto Test Retries は CI/CD Settings で有効にする必要があります。
  • DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS- 1 から 20 までの 5 つのカンマ区切りの整数で、前の表のデフォルトの再試行回数を上書きします。所要時間の区分が最も短いものから最も長いものの順に指定します(例: 10,4,1,1,1)。この変数が設定されていないか空の場合は、前の表のデフォルトの再試行回数が使用されます。DD_CIVISIBILITY_DYNAMIC_ATR_BUCKETS に無効な値が含まれている場合、ライブラリはその値を無視し、警告をログに記録して、デフォルトの再試行回数を使用します。

注: Dynamic ATR が有効な場合でも、セッションレベルの制限 DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT が適用されます。

互換性

dd-sdk-swift-testing >= 2.5.2

構成

Test Optimization をセットアップした後、CI/CD Optimization settings で Auto Test Retries を構成してください。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

CI/CD 設定の Auto Test Retries トグル。

この機能のデフォルトの動作は、失敗したテストケースを最大 5 回まで再試行します。 この動作は、以下の環境変数で微調整できます。

  • DD_CIVISIBILITY_FLAKY_RETRY_ENABLED - リモート設定が有効な場合でも再試行を明示的に無効にするには、0 または false に設定します (デフォルト: true)
  • DD_CIVISIBILITY_FLAKY_RETRY_COUNT - テストケースごとの再試行回数の上限を変更するための負でない数 (デフォルト: 5)。
  • DD_CIVISIBILITY_TOTAL_FLAKY_RETRY_COUNT- 再試行する失敗したテストの合計数の上限を設定するための負でない数 (デフォルト: 1000)

Failed Test Replay

Failed Test Replay は、Java、JavaScript、および .NET でのみサポートされています。

失敗したテストを自動的に再試行できるだけでなく、Failed Test Replay を使用すると、テストエラーのスタックトレースの最上位フレームにあるローカル変数データを確認できます。

Failed Test Replay では Auto Test Retries を有効にする必要があります。再試行されたテスト実行から変数データをキャプチャするためです。

Mitigation > Failed Test Replay の下にある CI/CD Optimization settings で Failed Test Replay を有効にします。この設定は、組織、リポジトリ、またはテストサービスレベルで適用できます。

ログインデックスを作成する

Failed Test Replay は Datadog に送信され、通常のアプリケーションログと並んで表示されるログを作成します。

除外フィルターを使用する場合は、Failed Test Replay のログがフィルタリングされないようにしてください。

  1. ログインデックスを作成し、サンプリングなしで希望する保存期間に構成してください。
  2. source:dd_debugger タグに一致するようにフィルターを設定します。すべての Failed Test Replay ログにはこのソースが設定されています。
  3. 最初に一致したものが優先されるため、新しいインデックスが、そのタグに一致するフィルターを持つ他のインデックスよりも優先されることを確認してください。

この機能を有効にすると、失敗したテストのローカル変数データを表示できます。

Failed Test Replay。

既知の制限

jest-image-snapshot は、toMatchImageSnapshot に customSnapshotIdentifier が渡されない限り、jest.retryTimes と互換性がありません (jest-image-snapshot ドキュメントを参照)。したがって、customSnapshotIdentifier を使用しない限り、自動テスト再試行は機能しません。

Test Optimization エクスプローラーで結果を確認する

再試行されたテストは Test Optimization エクスプローラーでクエリできます。これらのテストには @test.is_retry タグが true に設定されています (一部のテストでは @test.is_new が true に設定されている場合もあります。これは、Early Flakiness Detection 機能によって再試行されたことを示します)。

トラブルシューティング

Auto Test Retries に問題があると思われる場合は、CI/CD Optimization settings を開き、リポジトリまたはサービスを見つけて、Auto Test Retries をオフにします。

参考資料