Intelligent Test Runner

Join the Beta!

Intelligent Test Runner for CI Visibility は非公開ベータ版です。CI Visibility の概要のページにあるフォームに記入して、アクセスをリクエストすることができます。

Request Access

概要

Intelligent Test Runner は、Datadog のテストインパクト分析ソリューションです。これにより、与えられたコミットに対して影響を与えるテストのみを実行し、無関係なテストはスキップすることができます。

Datadog の CI セクションのテストサービス設定で Intelligent test runner を有効にする

関連するコードに対してのみテストを実行することで、テストが失敗した場合、それは変更されたコードに関連する正当な失敗である可能性が高くなります。

ベータ版での制限事項

Intelligent Test Runner のベータ版では、一定の制限があります。

  • 以下のセクションで必要とされる環境変数の中には、ベータ版の間だけ必要とされるものがあります。
  • Intelligent Test Runner は、Datadog Agent を使用しない場合のみ動作します。このページの構成ステップでは、Datadog ライブラリが Agent を介さずにバックエンドに直接データを送信します。現在 Agent を使用している場合、ホストメトリクスとの相関が失われます。
  • Intelligent Test Runner の現在の実装には、実行すべきテストをスキップする可能性のある既知の制限がありま す。Intelligent Test Runner は、以下を検出できません。
    • ライブラリの依存関係の変更。
    • コンパイラーオプションの変更。
    • 外部サービスの変更。
    • データ駆動型テストにおけるデータファイルの変更。

Intelligent Test Runner をオーバーライドしてすべてのテストを実行するには、Git のコミットメッセージのどこかに ITR:NoSkip (大文字小文字を区別しない) を追加してください。

Datadog ライブラリのセットアップ

Intelligent Test Runner を設定する前に、特定の言語の Test Visibility の設定を完了している必要があります。

JavaScript

Intelligent Test Runner を有効にするには、以下の環境変数の設定が必要です。

DD_CIVISIBILITY_AGENTLESS_ENABLED=true (必須)
Agentless モードを有効または無効にします。
デフォルト: false
: ベータ版のみ必要
DD_API_KEY (必須)
テスト結果のアップロードに使用される Datadog API キー
デフォルト: (empty)
DD_APPLICATION_KEY (必須)
スキップするテストをクエリするために使用する Datadog アプリケーションキー
デフォルト: (empty)
DD_SITE (必須)
結果をアップロードする Datadog サイト
デフォルト: datadoghq.com
選択したサイト:
DD_CIVISIBILITY_GIT_UPLOAD_ENABLED=true (必須)
git メタデータのアップロードを有効にするためのフラグ。
デフォルト: false
: ベータ版のみ必要
DD_CIVISIBILITY_ITR_ENABLED=true (必須)
テストスキップを有効にするためのフラグ。
デフォルト: false
: ベータ版のみ必要

これらの環境変数を設定した後、通常通りテストを実行します。

NODE_OPTIONS="-r dd-trace/ci/init" DD_ENV=ci DD_SERVICE=my-javascript-app DD_CIVISIBILITY_AGENTLESS_ENABLED=true DD_API_KEY=$API_KEY DD_CIVISIBILITY_GIT_UPLOAD_ENABLED=true DD_CIVISIBILITY_ITR_ENABLED=true yarn test

UI アクティベーション

環境変数の設定に加えて、お客様またはお客様の組織で管理者権限を持つユーザーが、テストサービス設定ページで Intelligent Test Runner を有効にする必要があります。

互換性

Intelligent Test Runner は、以下のバージョンとテストフレームワークでのみサポートされています。

  • jest>=24.8.0
    • dd-trace>=3.4.0 以降
    • testRunner としてサポートされているのは jest-circus/runner のみです。
    • テスト環境としてサポートされているのは jsdomnode のみです。
  • mocha>=5.2.0
    • dd-trace>=3.9.0 以降

スイートスキップ

Intelligent test runner for Javascript は、個々のテストではなく、テストスイート (テストファイル) 全体をスキップします。

.NET

Intelligent Test Runner を有効にするには、dd-trace ツールのバージョンが >= 2.22.0 であること (ツールのバージョンを取得するには dd-trace --version を実行します)、および以下の環境変数が設定されている必要があります。

DD_CIVISIBILITY_AGENTLESS_ENABLED=true (必須)
Agentless モードを有効または無効にします。
デフォルト: false
: ベータ版のみ必要
DD_API_KEY (必須)
テスト結果のアップロードに使用される Datadog API キー
デフォルト: (empty)
DD_APPLICATION_KEY (必須)
スキップするテストをクエリするために使用する Datadog アプリケーションキー
デフォルト: (empty)
DD_SITE (必須)
結果をアップロードする Datadog サイト
デフォルト: datadoghq.com
選択したサイト:

これらの環境変数の設定後、通常通り dotnet テストVSTest.Console.exe を使ってテストを実行します。

dd-trace ci run --dd-service=my-dotnet-app --dd-env=ci -- dotnet test
dd-trace ci run --dd-service=my-dotnet-app --dd-env=ci -- VSTest.Console.exe {test_assembly}.dll

UI アクティベーション

環境変数の設定に加えて、お客様またはお客様の組織で管理者権限を持つユーザーが、テストサービス設定ページで Intelligent Test Runner を有効にする必要があります。

Swift

Intelligent Test Runner を有効にするには、dd-sdk-swift フレームワークのバージョンが >= 2.2.0 である必要があります。また、スキームやテストプランのテスト設定で Code Coverage オプションを有効にするか、swift test コマンドに --enable-code-coverage を追加しなければなりません (SPM ターゲットを使用している場合)。

また、以下の環境変数も設定する必要があります。

DD_TEST_RUNNER
テストのインスツルメンテーションを有効または無効にします。この値を $(DD_TEST_RUNNER) に設定すると、テストプロセスの外部 (CI ビルドなど) で定義された環境変数を使用してテストインスツルメンテーションを有効または無効にできます。
デフォルト: false
推奨: $(DD_TEST_RUNNER)
DD_API_KEY (必須)
テスト結果のアップロードに使用される Datadog API キー
デフォルト: (empty)
DD_APPLICATION_KEY (必須)
スキップするテストをクエリするために使用する Datadog アプリケーションキー
デフォルト: (empty)
DD_SITE (必須)
結果をアップロードする Datadog サイト
デフォルト: datadoghq.com
選択したサイト:

UI アクティベーション

環境変数の設定に加えて、お客様またはお客様の組織で管理者権限を持つユーザーが、テストサービス設定ページで Intelligent Test Runner を有効にする必要があります。

CI ジョブのセットアップ

Intelligent Test Runner は、git のメタデータ情報 (コミット履歴) を使って動作します。しかし、CI プロバイダーによっては git shallow clone (git clone --depth=0) を使って、過去のコミット情報を一切ダウンロードせずに対象のコミットだけをダウンロードするものがあります。この設定では、Intelligent Test Runner が動作するのに十分な情報が含まれていません。CI で shallow clone を使用している場合は、それを変更する必要があります。

shallow clone に代わる効率的な方法として、partial clone (Git v2.27+ でサポート) があります。これは、現在のコミットと必要な git メタデータを複製し、すべてのファイルの過去のバージョンを取得することはありません: git clone --filter=blob:none

コンフィギュレーション

リポジトリのデフォルトブランチは、自動的に Intelligent Test Runner の有効化から除外されます。上記の制限により、Intelligent Test Runner は実行すべきテストの一部をスキップする可能性があるため、Datadog はデフォルトブランチ (またはリリース元のブランチ) の全てのテストの実行を継続することを推奨しています。

他に除外したいブランチがある場合、Intelligent Test Runner の設定ページから追加することができます。クエリバーは、ワイルドカード文字 * をサポートしており、一致するブランチを除外することができます。

Intelligent Test Runner から除外するブランチを選択

その他の参考資料