Intelligent Test Runner の概要

概要

Intelligent Test Runner は、最近のコード変更によって影響を受けない無関連なテストをインテリジェントに除外することにより、組織のテスト影響分析を合理化します。

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

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

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

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

Intelligent Test Runner のセットアップ

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

.net
java
javascript
python
swift
ruby

Intelligent Test Runner の有効化

Intelligent Test Runner を有効にするには

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

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

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

Intelligent Test Runner の構成

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

Intelligent Test Runner を構成するには

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

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

Intelligent Test Runner のデータを活用する

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

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

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

Test Visibility Explorer で結果を検証する

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

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

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

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

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

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

Test Visibility Explorer で、Intelligent Test Runner がスキップしたテストにフィルタリングされたテストスイートの結果

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

Test Visibility Explorer で、Intelligent Test Runner によってスキップされたテストでフィルタリングされたテスト結果

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

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

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

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

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

その他の参考資料