このセクションでは、Jtest デスクトップ ユーザー向けにテスト影響分析のワークフローを説明します。コマンド ラインからのテスト影響分析の実行については、「Maven を使用したテストと解析」および「Gradle を使用したテストと解析」を参照してください。

このセクションの内容

はじめに

Jtest のテスト影響分析機能は、コードの変更の影響を受けるテスト ケースを自動的に検出することで、テスト作業の効率化を支援します。これにより、変更の影響を受けるテストだけを識別して再実行することができます。

Jtest は、コードの変更の影響を受けるテストを以下の方法で識別します。

  • 単体テスト実行時に Jtest が収集したコード カバレッジ データ。特定のコード セクションは、コードを実行する単体テストと関連付けられています。
  • 単体テストの名前付け規則。たとえば、変更されたクラスの名前が com.mypackage.MyClass の場合、単体テスト アシスタントの設定で指定されたテスト ソース フォルダー内にあるテスト クラス com.mypackage.MyClassTest、com.mypackage.MyClassParameterizedTest、および com.mypackage.MyClassSpringTest が識別されます。変更されたメソッドの名前が performFoo() の場合、testPerformFoo() テスト メソッドが識別されます。

[影響を受ける単体テスト] ビューは、これら 2 つのテスト識別方法の結果を組み合わせます。

[影響を受ける単体テスト] ビューは、単体テストの名前付け規則に基づいて自動的にテストを表示しますが、コード カバレッジ データから得られる結果のほうが正確であり、実行する必要があるテストをさらに多く識別できる可能性が高いでしょう。そのため、影響を受けるテストを確認する前に、最新の完全な単体テスト実行から得られたコード カバレッジ データを IDE にインポートすることを推奨します。

要件

テスト影響分析は、IDE と統合されたバージョン管理システムに格納されたプロジェクトで利用できます。

  • Eclipse 4.23 (2022-03) または IntelliJ IDE 2022.11
  • Git
  • JUnit 4 または 5

1 Java 16 以上を使用して IDE を実行している場合、[影響を受ける単体テスト] ビューに正しい結果が表示されません。回避策については「既知の制限事項」を参照してください。

カバレッジのインポート

できるだけ正確な結果が得られるよう、IDE のカバレッジ ビューに変更対象ソース コードに関連するカバレッジデータが表示されていることを確認します。それには、Jtest を単体テストの実行に組み込んで、カバレッジ データを収集して XML ファイルに保存するか、DTP にレポートし、そのデータを IDE にインポートします。

単体テスト スイートを実行するごとにカバレッジ データを収集し、最新のテスト実行のデータをインポートすることで、IDE の情報が最新であることを保証できます。関連付けを更新するには、ファイルまたは DTP から IDE にカバレッジを再インポートします。

最新のテスト実行のカバレッジ データを定期的に再インポートし、関連付けがバージョン管理システム内のソース コードおよびテストと一致するようにします。

ファイルからのインポート

CI サーバーで Jtest と統合されたビルド ツール (Maven、Ant、または Gradle) を使用して単体テストを実行すると、coverage.xml ファイルが生成されます。1 回のテスト実行ですべての単体テストが実行される場合、このファイルからカバレッジ データをインポートできます。

  1. Jtest とビルドシステムを統合します (「ビルド システムとの統合」を参照)。
  2. MavenGradleAnt を使用してカバレッジ データを収集するよう単体テスト実行ジョブを設定します。ジョブを実行すると、サーバー上のジョブの場所にある coverage.xml ファイルに実行されたテストのカバレッジが保存されます。
    (tick)このファイルを容易にダウンロード可能な場所に保存するようジョブを設定します。

  3. [ローカル ファイルまたは UR Lからインポート] オプションを使用してファイルからカバレッジを IDE にインポートします (「カバレッジのインポート」を参照)。ビルド サーバーからファイルをダウンロードしてローカル ファイルのパスを指定することも、ビルド サーバーのファイルが格納されている URL を指定することもできます。

DTP からのインポート

複数のテスト実行からカバレッジを収集したい場合、DTP からカバレッジ データをインポートできます。

  1. DTP への接続を有効化します (「DTP への接続」を参照)。
  2. Jtest と Maven、Ant、または Gradle を統合します (「ビルド システムとの統合」を参照)。
  3. Jtest が DTP にカバレッジ データを送信するよう設定されていることを確認します (「単体テストのカバレッジ」を参照)。
  4. 単体テスト実行ジョブを設定します。ジョブを実行すると、実行されたテストのカバレッジ データが DTP に送信され、以前の実行のデータとマージされます。
  5. [DTP からインポート] オプションを使用してファイルからカバレッジを IDE にインポートします (「カバレッジのインポート」を参照)。

影響を受けるテストのモニターと実行

[影響を受ける単体テスト] ビューで、コード変更の影響を受けるテストをモニターし、再実行できます。このビューを開くには、IDE メニュー バーで [Parasoft] メニューの [ビューの表示] > [影響を受ける単体テスト] をクリックします。

影響を受けるテストのモニター

Jtest はワークスペース内で開かれているすべてのプロジェクトを自動的にモニターします。デフォルトでは、現在のコード変更の影響を受けるテストがリアルタイムでビューに表示されます。テストに影響を受けるコード変更を行うたびに、ビューがリフレッシュされて該当テストを表示します。影響を受けるテストの自動検出をオフにするには、ビューのメニューで [影響を受けるテストを自動検出] オプションをオフにします。

このオプションがオフの場合、[リフレッシュ] ボタンをクリックして手動でビューをリフレッシュする必要があります。

検出されたテストを右クリックして [移動] をクリックすると、エディターでテスト コードを参照できます。

また、[影響を受けるテスト] ビューには以下も表示されます。

  • 影響を受けるテストを含むプロジェクトの数
  • 影響を受けるテスト メソッドおよびテスト クラスの合計
  • テストの現在のステータス (成功/失敗/未実行)

影響を受けるテストの実行

ビューに表示されているすべての影響を受けるテストを実行するには、ビューのメニューの [すべてのテストを実行] ボタンをクリックします。

影響を受けるテストの一部を実行するには、解析するプロジェクト、パッケージ、クラス、および/またはメソッドのノードを選択し、ビュー メニューの [選択されたテストの実行] をクリックします。

影響を受けるテスト ビューからの実行時にテストが失敗した場合、単一のテストを実行して原因を調べることができます。それには、テストを右クリックして [単体テスト アシスタントで実行] をクリックします。

テスト実行を中断するには、ビューのメニューにある [中止] ボタンをクリックします。 

注意: デフォルト以外のパッケージの public ではない JUnit 5 のテスト クラスは、影響を受ける単体テスト ビューで実行できません。それらは利用できないクラスとしてビューに表示されます。

影響を受けるテストの継続的な実行

ビューのメニューにある [継続的にテストを実行] ボタンを使用すると、影響を受けるすべてのテストを継続的に実行し、バックグラウンドで自動的にカバレッジ データを収集できます。ビューで影響を受けるテストのツリーが更新される ([影響を受けるテストを自動検出] オプションが有効化されているか、[リフレッシュ] ボタンをクリックしてリフレッシュした場合) たびにテストが実行されます。

テスト実行後、ビューに表示されるテスト ステータスが自動的に更新されます。

カバレッジの収集 

カバレッジ ビューでカバレッジを収集するには、メニューの [カバレッジの収集] オプションをクリックします。すると、カバレッジ ビューが影響を受ける単体テスト ビューにカバレッジ データを提供できるようになり、影響を受ける単体テスト ビューでテストとカバーされたコードが関連付けられます。

指摘事項および指摘事項の詳細ビューでのエラーの表示 

影響を受けるテスト ビューから実行したテストが失敗した場合、結果およびエラーのスタック トレースが指摘事項および指摘事項の詳細ビューに表示され、エラーを解析できます。

指摘事項ビューには指摘事項のリストが表示されます。

単一の指摘事項の詳細を指摘事項の詳細ビューに表示できます。

影響を受けるテストの設定

影響を受けるテストの収集に使用する Git コミットの範囲を指定するには、[設定] リンクをクリックし、[影響を受けるテストの設定] ダイアログで設定を指定します。

  • 変更されたメソッド 
    • 次と比較時 - ディスクのファイルと指定されたコミットの内容を比較したときに見つかったすべての変更されたメソッドに対してテストが表示されます。
    • 次からの現行ブランチの分岐以降 - 指定されたブランチからプロジェクトの現行ブランチが分岐した後、現行ブランチで見つかったすべての変更されたメソッドに対してテストが表示されます。現行ブランチの作成元ブランチを指定する必要があります。
  • コミットまたはブランチ - [次と比較時] および [次からの現行ブランチの分岐以降] 設定で使用するコミット、ブランチ、タグを指定します。コミットまたはブランチ ドロップダウン メニューには入力履歴が残ります。選択肢には [次と比較時] 設定のための 2 つのプリセット値が含まれます。
    • ローカル ブランチでの最新コミット - ローカルで変更されたコミット前のコードに対してテストが表示されます。
    • リモート ブランチでの最新コミット - ローカルで変更されたコミット前のコードおよびまだリモート ブランチにプッシュされていないローカル コミットに含まれる変更に対してテストが表示されます。

注意: 

  • Git reflog 参照はサポートされていません。
  • ブランチまたはコミットが見つからないというエラーが発生した場合、まずはローカル Git リポジトリが最新の状態であるかどうかを確認します。
  • [変更されたメソッド] および [コミットまたはブランチ] 設定を使用する場合、以下の推奨事項を考慮してください。
    • ローカルな変更だけがあり、影響を受けるコードに関してコミット前にテストを表示したい場合、[次と比較時] および [ローカル ブランチでの最新コミット] 設定を使用することを推奨します。
    • まだプッシュされていないローカル コミットがあり、ローカルな変更に加えてそれらのコミットに関してテストを表示したい場合、[次と比較時] および [リモート ブランチでの最新コミット] 設定を使用することを推奨します。
    • フィーチャーまたは開発ブランチとしてブランチにコミットをプッシュ済みであり、フィーチャーまたは修正が完了しており、該当ブランチで行われたすべての変更に関してテストを表示したい場合、[次からの現行ブランチの分岐以降] 設定を使用し、現行ブランチの親ブランチを指定することを推奨します。たとえば、master から分岐した "feature/foo" フィーチャー ブランチを使用している場合、"master" を指定します。
  • No labels