Test Impact Analysis の概要

この機能は以前「Intelligent Test Runner」と呼ばれており、一部のタグには依然として「itr」が含まれています。

概要

Test Impact Analysis によって、コード変更の影響を受けない無関係なテストをスキップすることが可能になります。

Test Optimization により、開発チームはテストサービス用に Test Impact Analysis を構成し、除外すべきブランチ (たとえばデフォルトブランチ) を設定し、追跡すべきファイルを定義できます (追跡されたファイルの変更時にはすべてのテストの完全な実行がトリガーされます)。

Test Impact Analysis のコンポーネントのベン図: 追跡ファイル、除外ブランチ、およびスキップされたテスト
Test Impact Analysis が追跡ファイル、除外ブランチ、および通過したテストを使用して除外テストを定義する方法を示すベン図

テストサービスに Test Impact Analysis を構成し有効化することで、CI 環境全体の信頼性とパフォーマンスを維持しつつ、不要なテスト時間を削減し、CI のテスト効率を向上させ、コストを削減します。

Test Impact Analysis は コードカバレッジデータを使用してテストをスキップすべきかどうかを判断します。詳細は Datadog の Test Impact Analysis の仕組みを参照してください。

Test Impact Analysis のセットアップ

Test Impact Analysis をセットアップするためには、お使いのプログラミング言語に関する以下のドキュメントを参照してください。

.net
java
javascript
python
swift
ruby
go

Test Impact Analysis の有効化

Test Impact Analysis を有効にするには

  1. Software Delivery > Test Optimization > Settings に移動します。
  2. Test Services タブで、サービスの Test Impact Analysis 列で Configure をクリックします。
Test Service Settings ページでテストサービスに Test Impact Analysis を有効にする

Test Impact Analysis Activation Write 権限が必要です。詳細は Datadog のロール権限についてのドキュメントを参照してください。

クリティカルブランチ (例えばデフォルトブランチなど) で Test Impact Analysis を無効にすることで、包括的なテストカバレッジが確保されますが、機能や開発ブランチでそれを有効にすることで、テストの効率を最大限に高めることができます。

Test Impact Analysis の構成

Test Impact Analysis を構成して、特定のテストがスキップされないようにすることができます。これらのテストはスキップできないテストと呼ばれ、コードカバレッジデータにかかわらず実行されます。

Test Impact Analysis を構成するには

  1. 有効化したいテストに対して、Configure をクリックします。
  2. Status トグルをクリックして Test Impact Analysis を有効にします。
  3. 除外するブランチ (通常はリポジトリのデフォルトブランチ) を指定します。Test Impact Analysis は、これらのブランチのテストをスキップしません。
  4. 追跡するファイルディレクトリとファイルを指定します (たとえば documentation/content/**domains/shopist/apps/api/BUILD.bazel など) 。Test Impact Analysis は、これらの追跡ファイルが変更された場合、すべての CI テストを実行します。
  5. Save Settings をクリックします。
Test Impact Analysis を有効にし、Test Impact Analysis が除外するブランチを提供し、変更があった場合にテストを実行するために Test Impact Analysis が追跡するファイルを追加する

テストサービスで Test Impact Analysis を構成した後、デフォルトブランチでテストスイートの実行を行います。これにより、将来のコミットで無関係なテストを正確にスキップできる基準が確立されます。

Test Impact Analysis のデータを使用する

Test Impact Analysis を有効にすることで収集されたデータを探索し、テストのスキップによる時間節約や、組織における Test Impact Analysis の利用状況などを分析して、CI の効率を向上させましょう。

テストがスキップされたことによる時間節約と、組織の Test Impact Analysis の使用状況についての情報を表示する、すぐに使えるダッシュボード

ダッシュボードを作成してテストのメトリクスを視覚化することも、Test Impact Analysis が収集したデータを利用したウィジェットを含むすぐに使えるダッシュボードを使用して、利用パターンや傾向から改善点を特定することもできます。

Test Optimization Explorer で結果を検証する

Test Optimization Explorer では、Test Optimization と Test Impact Analysis から収集したデータを用いて視覚化の作成やテストスパンのフィルタリングが可能です。Test Impact Analysis がアクティブな場合は、各テストセッションやコミットで節約された時間が表示され、期間バーが紫色に変わります。これはアクティブなテストスキップを示します。

Software Delivery > Test Optimization > Test Runs に移動し、Session を選択してテストセッションスパンの結果のフィルタリングを開始します。

Test Impact Analysis によってスキップされたテストでフィルタリングされた Test Optimization Explorer のテストセッション結果

Software Delivery > Test Optimization > Test Runs に移動し、Module を選択して、テストモジュールスパンの結果のフィルタリングを開始します。

Test Impact Analysis によってスキップされたテストでフィルタリングされた Test Optimization Explorer のテストモジュール結果

Software Delivery > Test Optimization > Test Runs に移動し、Suite を選択して、テストスイートスパンの結果のフィルタリングを開始します。

Test Impact Analysis によってスキップされたテストでフィルタリングされた Test Optimization Explorer のテストスイート結果

Software Delivery > Test Optimization > Test Runs に移動し、Test を選択して、テストスパンの結果のフィルタリングを開始します。

Test Impact Analysis によってスキップされたテストでフィルタリングされた Test Optimization Explorer のテスト結果

次のすぐに使える Test Impact Analysis ファセットを使用して、検索クエリをカスタマイズします。

Code Coverage Enabled
テストセッション中にコードカバレッジ追跡が有効であったかどうかを示します。
Skipped by ITR
Test Impact Analysis によってセッション中にスキップされたテストの数です。
Test Skipping Enabled
テストセッションで Test Impact Analysis が有効であったかどうかを示します。
Test Skipping Type
Test Impact Analysis がスキップするテストを決定するために使用される方法または基準です。
Tests Skipped
テストセッション中に実行されなかったテストの総数。これには、スキップするように構成されたテストや、手動で除外されたテストが含まれる場合があります。
Time Saved
Test Impact Analysis の使用によってセッションで節約された時間の長さです。

たとえば、Test Skipping Enabled を持つテストセッションの実行をフィルタリングするには、検索クエリで @test.itr.tests_skipping.enabled:true を使用します。

Test Impact Analysis でテストスキップ機能が有効になっている最初のテストセッション実行を表示するサイドパネル

次に、テストセッションの実行をクリックし、テストセッションのサイドパネルの Test Session Details セクションで、Test Impact Analysis によって節約された時間の量を確認します。

その他の参考資料