Jtest の jtestcov を利用すると Java アプリケーションのアーカイブファイルでアプリケーションカバレッジが計測できることをご存じでしょうか。受入れテストやQAチームによるテストなどにおいてソースコードが手元に無い場合でも jtestcov でアプリケーションテストのコードカバレッジを計測できます。
本記事では jtestcov を利用したアプリケーションカバレッジの計測をご紹介します。
jtestcov とは
jtestcov は Jtest 2023.1 で搭載されたカバレッジ計測専用ツールです。
jtestcov を利用するとアプリケーションのアーカイブファイルをスキャンしてアプリケーションテスト実行時のカバレッジレポートを作成、 Parasoft DTP にアップロードすればアプリケーションの包括的なカバレッジを計測することができます。
さらに、これまでのカバレッジ計測では必須だった静的カバレッジファイルの生成を省略してカバレッジレポートを作成できるためアプリケーションカバレッジ計測の効率化を実現します。
Parasoft Jtest は テストコードは不要で、手動またはテスト自動化ツールで実行されたUIテストのカバレッジを計測。
テストの精度向上やエビデンス作成工数を削減します。
テストの精度向上やエビデンス作成工数を削減します。
jtestcov のアプリケーションカバレッジ計測
jtestcov では 3 パターンのカバレッジレポートを作成できます。
- 静的カバレッジデータと実行時データに基づいたカバレッジレポート
- ソースコードを解析して生成する静的カバレッジデータと実行時データを使用します。
- アプリケーションのアーカイブファイルと実行時データに基づいたカバレッジレポート
- アプリケーションのアーカイブファイルと実行時データを使用します。
- 実行時データに基づいたカバレッジレポート
- アプリケーションの実行時データだけを使用します。
それぞれのカバレッジレポート作成方法をご紹介します。
パターン1:静的カバレッジデータと実行時データに基づいたカバレッジレポート
Jtest がソースコードを解析して生成する静的カバレッジデータとカバレッジエージェントで収集する実行時カバレッジデータからカバレッジレポートを作成します。
※このパターンによるカバレッジレポート作成にはソースコードが必要です。
カバレッジ計測方法
1. 静的カバレッジデータ生成
Jtest Maven、Gradle または Ant プラグインのビルドプロセス内で生成します。以下のコマンドを実行して生成される monitor.zip に含まれる static_coverage.xml ファイルが静的カバレッジデータです。
- Maven
mvn package jtest:monitor
- Gradle
gradle assemble jtest-monitor -I <JTEST_HOME>/integration/gradle/init.gradle
- Ant :
ant -lib <JTEST_HOME>/integration/ant/jtest-ant-plugin.jar -listener com.parasoft.Listener jtest-monitor
2. カバレッジエージェント構成
カバレッジエージェントは以下のファイルと -javaagent フラグで構成します。
- 「1. 静的カバレッジデータ生成」の monitor.zip に含まれる agent.properties
- カバレッジ計測のスコープ等、エージェントの設定を行うためのプロパティファイルです。
- カバレッジを計測するアプリケーションにカバレッジエージェント情報を渡す -javaagent フラグ
- 「1. 静的カバレッジデータ生成」の monitor.zip に含まれる agent.sh/agent.bat スクリプトを実行して作成します。
-javaagent フラグはアプリケーションの起動時に渡す必要があります。WEB アプリケーションサーバーで稼働するアプリケーションの場合は WEB アプリケーションサーバーの起動スクリプトに追加します。
例:
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"E:\jtest\monitor\agent.jar"=settings="E:\jtest\monitor\agent.properties",runtimeData="E:\jtest\monitor\runtime_coverage"
3. アプリケーションテスト
アプリケーションのテストを実施します。
4. カバレッジレポート生成
「1. 静的カバレッジデータ生成」で作成した静的カバレッジデータと、「3. アプリケーションテスト」中に収集された実行時カバレッジデータ (-javaagent フラグの "runtimeData" で指定したディレクトリに自動生成される。) でカバレッジレポートを作成します。
例:
java -jar "<JTEST_HOME>\integration\coverage\jtestcov.jar" -static [static_coverage.xml ファイルパス] -runtime [実行時カバレッジデータファイルパス または ディレクトリ] -publish
作成されたレポートには計測したカバレッジのパーセンテージとメソッド毎の詳細が出力されます。
コード行に紐づいたカバレッジ情報を確認するには、カバレッジデータを Parasoft DTP にアップロードするか IDE プラグインにカバレッジレポート (coverage.xml) をインポートします。
パターン2:アプリケーションのアーカイブファイルと実行時データに基づいたカバレッジレポート
パターン1 の静的カバレッジデータの代わりにカバレッジ計測対象のアプリケーションのアーカイブファイル (war、ear、jar、zip) とカバレッジエージェントで収集するカバレッジデータからカバレッジレポートを生成します。
カバレッジ計測方法
1. カバレッジエージェント構成
カバレッジエージェントは以下のファイルと -javaagent フラグで構成します。
-
<JTEST_HOME>\integration\coverage\agent.properties
- カバレッジ計測のスコープ等、エージェントの設定を行うためのプロパティファイルです。
- カバレッジを計測するアプリケーションにカバレッジエージェント情報を渡す -javaagent フラグ
- Jtest インストールディレクトリ内の agent.jar および agent.properties 、任意の実行時カバレッジデータ出力先を設定します。
-javaagent フラグはアプリケーションの起動時に渡す必要があり、WEB アプリケーションサーバーで稼働するアプリケーションの場合は WEB アプリケーションサーバーの起動スクリプトに追加します。
例:
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"<JTEST_HOME>\integration\coverage\agent.jar"=settings="<JTEST_HOME>\integration\coverage\agent.properties",runtimeData="E:\jtest\monitor\runtime_coverage"
2. アプリケーションテスト
アプリケーションのテストを実施します。
3. カバレッジレポート生成
テスト対象アプリケーションのディレクトリまたはアーカイブファイルと、「2. アプリケーションテスト」中に収集された実行時カバレッジデータ (-javaagent フラグの "runtimeData" で指定したディレクトリに自動生成される。) でカバレッジレポートを作成します。
例:
java -jar "<JTEST_HOME>\integration\coverage\jtestcov.jar" -app [アプリケーションのディレクトリ または アーカイブファイルパス] -runtime [実行時カバレッジデータファイルパス または ディレクトリ] -publish
コード行に紐づいたカバレッジ情報を確認するには、カバレッジデータを Parasoft DTP にアップロード、さらに Parasoft DTP にアップロード済みのソースコード情報とカバレッジデータを紐づけます。
パターン3:実行時データに基づいたカバレッジレポート
パターン 1 の静的カバレッジデータやパターン 2 のアーカイブファイルは不要でカバレッジエージェントが収集したカバレッジデータだけを利用してカバレッジレポートを生成します。
アプリケーション上で実行されたクラスの情報だけが含まれる簡易的なカバレッジレポートを生成されるため、カバレッジデータの詳細を確認するにはアプリケーションのソースコードまたは静的カバレッジデータが存在する DTP にカバレッジデータをアップロードする必要があります。
カバレッジ計測方法
1. カバレッジエージェント構成
カバレッジエージェントは以下のファイルと -javaagent フラグで構成します。
-
<JTEST_HOME>\integration\coverage\agent.properties
- カバレッジ計測のスコープ等、エージェントの設定を行うためのプロパティファイルです。
- カバレッジを計測するアプリケーションにカバレッジエージェント情報を渡す -javaagent フラグ
- Jtest インストールディレクトリ内の agent.jar および agent.properties 、任意の実行時カバレッジデータ出力先を設定します。
-javaagent フラグはアプリケーションの起動時に渡す必要があり、WEB アプリケーションサーバーで稼働するアプリケーションの場合は WEB アプリケーションサーバーの起動スクリプトに追加します。
例:
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"<JTEST_HOME>\integration\coverage\agent.jar"=settings="<JTEST_HOME>\integration\coverage\agent.properties",runtimeData="E:\jtest\monitor\runtime_coverage"
2. アプリケーションテスト
アプリケーションのテストを実施します。
3. カバレッジレポート生成
テスト対象アプリケーションのディレクトリまたはアーカイブファイルと、「2.アプリケーションテスト」中に収集された実行時カバレッジデータ (-javaagent オプションの "runtimeData" で指定したディレクトリに自動生成される。) でカバレッジレポートを作成します。
例:
java -jar "<JTEST_HOME>\integration\coverage\jtestcov.jar" -runtime [実行時カバレッジデータファイルパス または ディレクトリ] -publish
作成されたレポートには行カバレッジの情報は出力されずアプリケーションの包括的なカバレッジ情報が出力されます。
コード行に紐づいたカバレッジ情報を確認するには、カバレッジデータを Parasoft DTP にアップロード、さらに Parasoft DTP にアップロード済みのソースコード情報とカバレッジデータを紐づけます。
まとめ
今回 Jtest のカバレッジツール jtestcov を利用したアプリケーションカバレッジ計測をご紹介しました。
ソースコードを利用できない環境におけるテストのカバレッジ計測や効率的なアプリケーションカバレッジ計測の実現に興味がございましたら、ぜひ一度 jtestcov をお試しください。