以前、Jtest・dotTESTの機能でテスト影響分析という機能を使って単体テストの実行時間を短縮する方法についてブログを書きました。テスト影響分析は修正したソースコードの影響を受けるテストケースだけを自動でピックアップし、実行する機能です。そのため、テスト実行時間の短縮やテストの実行漏れを防ぐことができます。
詳細は以下のブログをご確認ください。
単体テストの実行時間がボトルネックになっている、を解決するテスト影響分析
今回は、さらに便利になったテスト影響分析をご紹介します。
テスト影響分析とは?
復習のため、テスト影響分析とはどのような機能かご紹介します。
テスト影響分析とは、ソースコードを修正したときに、依存関係のあるテストケースを自動でピックアップし、実行する機能です。直接呼び出しているテストケースだけでなく、間接的な呼び出し関係のあるものも見つけることができます。これにより、単体テストの実行時間を削減し、実行漏れを防ぐことができます。
上図の例の場合、TransactionCriteriaクラスのgetAmoutメソッドを修正すると、Jtestが依存関係を分析し、getAmountが呼び出されるテストケースをすべてピックアップします。この例の場合、直接getAmountメソッドを呼び出すテストメソッドであるtestGetAmountメソッドだけでなく、testReturnAccountIdメソッドのように、他のメソッドから間接的にgetAmountメソッドを呼び出しているテストケースでも依存関係のあるテストケースとしてピックアップされます。
進化を続けるテスト影響分析
テスト影響分析は継続的に機能が追加されており、その一部を紹介します。
Gitのブランチ間の変更箇所を検出
リモートリポジトリや特定ブランチの最新コミットと比較して、ソースコード修正の影響範囲を特定できます。例えば、機能追加やバグ修正が発生した場合に、mainブランチからdevelopの様な開発ブランチを作成して開発を始めるとします。その時に、developブランチを作成した時点のmainブランチと比較し、テストの影響範囲を特定することができます。開発ブランチで修正したソースコードの影響範囲を特定することで、テストの実行漏れをなくし、実行時間を短縮することができます。
単体テストの継続的な実行
テスト影響分析はJtestが自動で影響範囲のあるテストケースをピックアップしてくれますが、その実行も自動化できます。例えば、ソースコードを修正し、保存したタイミングでバックグラウンドでテストを実行することができますので、テストの実行を意識せずに単体テストの結果を取得することができます。カバレッジの確認も行えるため、修正したソースコードが確実に実行されて、テストされていることをその場で確認できます。
まとめ
テスト影響分析に新しい機能が加わり更に効率的にテストの実行が行えるようになりました。Jtestではテスト影響分析だけでなく、生成AIを使ったテストケース作成やテンプレートを使った共通フォーマットでのテストケース生成など単体テストを効率的に行うための機能が多くあります。これから単体テストを始めようとしている方だけでなく、すでに実施している方もご利用いただける機能が備わっています。ぜひお試しください。