このセクションの内容
実行中のアプリケーションで手動または自動での機能テストを実行しながらカバレッジ データをモニターおよび収集できます。カバレッジ データおよびテスト結果を DTP サーバーにレポートし、データをマージして関連付けることもできます。アプリケーション カバレッジ情報を DTP のカバレッジ エクスプローラー (詳細は DTP ユーザーズ ガイドの「カバレッジ エクスプローラー」を参照) に表示し、アプリケーションがどの程度テストされたかや、テストの品質を知ることができます。
Java 1.8 - 17 の実行時カバレッジを収集できます。
Java JDK 8 でのバイトコードの改行の計算方法は、それより前のバージョンの Java と異なります。そのため、カバレッジの結果が変わる場合があります。
カバレッジ レポートにアプリケーションのソース コードに関する情報を含めるには、次のコンポーネントが必要です。
ソース管理システムを使用する場合、適切にソース管理システムを設定します。「ソース管理システムの設定」を参照してください。 |
jtestcov
ツールを使用するには、マシンに Java 11 以降がインストールされている必要があります。Oracle Java SE および OpenJDK がサポートされています。他のフリーやオープンソースの実装は、カバレッジ ツールの正常な動作を妨げる問題の原因になる可能性があります。JAVA_HOME 変数を設定し、システムの PATH に追加することを推奨します。jtestcov
の使用方法については、「カバレッジ レポートの作成と DTP へのデータのアップロード」および「jtestcov のコマンド ライン オプション」を参照してください。
Jtest には、カバレッジ エージェントというコンポーネントが付属しています。カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。
カバーされるコード行に関するメタデータ (静的カバレッジ データ) は、アプリケーションのビルド プロセスの一環として特別なテスト コンフィギュレーションを実行するか、アプリケーションのバイナリをスキャンすることによって収集されます。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。
Jtest は、この動的カバレッジ マップと静的カバレッジ データを処理します。カバレッジ情報を保存した coverage.xml が生成され、DTP に送信されます。DTP は、カバレッジ データを受信すると、カバレッジ イメージにロードします。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約することを可能にする特別なタグです。カバレッジ イメージにより、カバレッジ情報と特定のテストを関連付けることが可能になります。
また、Jtest は実行時カバレッジおよび実行されたクラスに関する一般的な情報だけが含まれるアプリケーション カバレッジを収集することもできます。これには、カバーされた行以外のクラス構造の詳細は含まれません。簡略化されたレポートが DTP に送信され、DTP 上の既存のカバレッジ データに付加されます。クラス構造に関する情報 (静的カバレッジ データ) がすでに DTP に存在する場合、カバレッジ データを参照できます。
テスト実行ツールの結果 (SOAtest のテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイルとレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。
カバレッジ レポートを作成し、DTP にアップロードするには、jtestcov
または jtestcli
を使用します。jtestcov
は、カバレッジ専用のツールであり、カバレッジ レポートの生成に関してより多くのオプションがあります。「カバレッジ レポートの作成と DTP へのデータのアップロード」を参照してください。jtestcov.jar ファイルは <INSTALL_DIR>/integration
ディレクトリにあります。jtestcov
はスタンドアロン ツールであり、Jtest のインストール ディレクトリ外にコピーして単独で使用できます。そのため、テスト フローとの統合が容易です。jtestcov
コマンド ライン オプションの詳細は、「jtestcov のコマンド ライン オプション」を参照してください。
AUT の準備には、以下の手順が含まれます。
モニター パッケージは、ビルド プロセス中に Jtest Maven、Gradle または Ant プラグインによって生成されます。カバレッジとAUTのソース コードが正しく照合されるよう、AUT のビルドに使用したのと同じビルド システムと Java のバージョンを使用してパッケージを生成してください。
このパッケージには以下が含まれます。
<INSTALL_DIR>/integration/coverage
ディレクトリからコピーされます)。 パッケージは、ソース コードがあるビルド マシン上で生成される必要があります。生成された静的カバレッジ ファイルは、コードが変更されるまで使用できます。
パッケージを生成するには、AUT のメイン ディレクトリで、次のコマンドを実行します。
Maven
mvn package jtest:monitor |
Gradle
gradle assemble jtest-monitor -I [INSTALL]/integration/gradle/init.gradle |
Ant
ant -lib [INSTALL]/integration/ant/jtest-ant-plugin.jar -listener com.parasoft.Listener jtest-monitor |
Ant は、モニター タスクを実行する前にすべてのクラスをコンパイルすることを要求します。ビルドの前にプロジェクトを変更し、正しい順序になるようタスクを設定してください。以下はターゲットの設定例です。
|
monitor.zip パッケージが生成され、ビルド出力ディレクトリに置かれます。その場所へのパスがコンソールに出力されます。
通常、アプリケーション サーバーには複数のアプリケーションがあります。さらに、共通サーバー クラスまたはアプリケーション ライブラリはインストゥルメントする必要がありません。Jtest がカバレッジを収集する必要があるのは、アプリケーションのソース コードだけです。すべてのクラスをインストゥルメントすると、時間がかかりすぎる場合があります。
サーバー上のアプリケーションは既にビルドされており、ソース コードからどのクラスが生成されたかに関する情報を収集することはできません。このため、Jtest エージェントのスコープを適切に設定することが非常に重要です。
カバレッジ エージェントは、以下の方法で設定できます。
-javaagent
への引数を使用して。「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ」を参照してください。 agent.properties および agent.jar ファイルは <INSTALL_DIR>/integration/coverage
ディレクトリにあります。agent.properties ファイルのデフォルト プロパティを変更してカバレッジ エージェントを適切に設定できます。以下は、agent.properties ファイルを使ってカバレッジ エージェントを設定する例です。
jtest.agent.autostart=false jtest.agent.serverEnabled=true jtest.agent.associateTestsWithCoverage=false jtest.agent.includes=com/myapp/** jtest.agent.runtimeData=[...] |
monitor.zip パッケージを生成済みの場合、パッケージに含まれている agent.properties ファイルを使用できます。このファイルには、ビルド プロセス実行時に生成されたスコープ パラメーターやその他の属性がすでに含まれています。
コマンド ラインで -javaagent
にプロパティを追加するには、jtest.agent 接頭辞を削除して名前を変更する必要があります。例:
-javaagent:"[path to agent dir]\agent.jar"=settings="[path to agent properties file]\agent.properties",autostart=true |
|
以下の表は、カバレッジ エージェントを設定するために使用できる全プロパティの一覧です。
プロパティ | 説明 |
---|---|
jtest.agent.runtimeData | 実行時データが保存される場所です。次の例では、C:/tmp/myapp/ ディレクトリに
|
jtest.agent.includes | インストゥルメントするクラスのパターンをカンマ区切りのリストで指定します。次のワイルドカードがサポートされています。
次の例では、
|
jtest.agent.excludes | インストゥルメントから除外するクラスのパターンをカンマ区切りのリストで指定します。次のワイルドカードがサポートされています。
次の例では、
|
jtest.agent.autostart | 実行時データの自動収集を有効/無効にします。デフォルト値は true です。 |
jtest.agent.port | エージェントの通信ポートを設定します。デフォルト値は 8050 です。 |
jtest.agent.debug | コンソールへの冗長な出力を有効/無効にします。デフォルト値は false です。 |
jtest.agent.collectTestCoverage | テスト ケースのカバレッジ情報の収集を有効/無効にします。デフォルト値は false です。 |
jtest.agent.enableMultiuserCoverage | 複数ユーザーの Web アプリケーション カバレッジの収集を有効/無効にします。デフォルト値は このプロパティを true に設定すると、Coverage Agent Manager を使って複数ユーザーのカバレッジを収集できます。詳細については Parasoft DTP ドキュメントの「Coverage Agent Manager (CAM)」のセクションを参照してください。 |
jtest.agent.associateTestsWithCoverage | カバレッジと 特定のテストの関連付けを有効/無効にします。デフォルト値は true です。 |
jtest.agent.testid | エージェント実行時にカバレッジが関連付けられる初期テスト ID です。 |
jtest.agent.enableJacoco | Jacoco エンジンを使用した行カバレッジの収集を有効/無効にします。 |
gent.sh/agent.bat スクリプトを実行して Jtest Java エージェントの VM 引数を生成します。スクリプトは、コンソールに -javaagent
VM 引数を出力します。
-javaagent フラグを使用してエージェントを AUT にアタッチします。結果は runtime_coverage サブ ディレクトリに出力されます。
Jtest Agent VM argument: -javaagent:"[path to agent dir]\agent.jar"=settings="[path to agent properties file]\agent.properties",runtimeData="[path to runtime coverage folder]" |
-javaagent
を使用したカバレッジ エージェントの構成については「カバレッジ エージェントの構成」を参照してください。
-javaagent
フラグを追加してエージェントを AUT にアタッチします。AUT にカバレッジ エージェントをアタッチすると、エージェントを制御するための REST API が公開されます。 デフォルトでは、カバレッジ エージェントは HTTP プロトコル経由で利用できます。HTTPS 経由で接続するには、Jtest Agent VM 引数に次のオプションを追加し、カバレッジ エージェントを設定する必要があります (「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ」を参照)。
useSSL=true
certificateStorePath=[キーストア ファイルへのパス]
certificateStorePassword=[キーストア ファイルのパスワード]
certificateStoreType=[キーストア ファイルのフォーマット]
certificateKeyPassword=[SSL 証明書へのパスワード]
アプリケーション サーバーの起動スクリプトに追加される Jtest Agent VM 引数は次のようになります。
-javaagent:"[path to agent dir]\agent.jar"=settings="[path to agent properties file]\agent.properties",runtimeData="[path to runtime coverage folder]",useSSL=true,certificateStorePath="F:\certificates\keystore.jks",certificateStorePassword=4!ij?ffQMk,certificateStoreType="JKS",certificateKeyPassword=dhW!34 |
こうすると、カバレッジ エージェントはテスト対象アプリケーション用に設定された SSL 証明書を認識できるようになります。
アプリケーション用に SSL 証明書を設定する方法はいろいろあります。ブラウザーを使用している場合、信頼された証明書のリストに証明書を追加するオプションがあるかもしれません。別の Java プログラムを使用している場合、Java VM の信頼された証明書ファイルに証明書をインポートするか、Java クライアントのコマンド ラインに次の Java VM 引数を追加できます。
|
SOAtest を使用して機能テストを実行することも、Coverage Agent Manager (CAM) とともに手動でテストを実行することもできます。テスト セッション実行の詳細については、SOAtest ユーザー ガイドまたは CAM のマニュアルを参照してください。
テスト実行時の処理
CAM とともに Jtest を使用する場合
SOAtest を使用する場合、テスト実行時にテスト結果が自動的に DTP に送信されます。https://docs.parasoft.com にある SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクションを参照してください。
jtestcov
または jtestcli
コマンドを使用してカバレッジ レポートを作成し、DTP にデータをアップロードできます。jtestcov
コマンド ライン オプションの詳細は、「jtestcov のコマンド ライン オプション」を参照してください。
CAM とともに Jtest を使用する場合、3 つのタイプのカバレッジ レポートを生成できます。
-runtimeCoverage
および -staticCoverage
スイッチを指定して jtestcli
を実行するか、-runtime
および -static
をスイッチを指定して jtestcov
を実行します。-app
および -runtime
スイッチを指定して jtestcov
を実行します。-runtime
スイッチを指定して jtestcov
を実行します。カバレッジ レポートを作成し、DTP にデータをアップロードするには、次の操作を行います。
<INSTALL_DIR>/integration/coverage
にあります) または jtestcli.properties ファイルで以下の設定を行います。report.coverage.images
- DTP でカバレッジ イメージを作成するために使用するタグのセットを指定します。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約する際に一意の識別子となります。DTP は、1 レポートにつき最大 3 つまでのカバレッジ イメージをサポートします。session.tag
- 同じビルドの個々のテスト実行を区別する一意の識別子を指定します。build.id
- 結果にラベル付けするためのビルド識別子を指定します。ビルドごとに固有の値を使用することも、特定のビルドで実行される複数のテストセッションで同じ値を使用することもできます。jtestcli
を使用する場合、実行時カバレッジ ファイルおよび静的カバレッジ ファイルを同じマシンにコピーし、次のスイッチを指定して jtestcli
を実行します。-runtimeCoverage
: CAM でダウンロードする実行時カバレッジへのパスを指定します (詳細については DTP のマニュアルの「Coverage Agent Manager (CAM)」セクションを参照)。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。-staticCoverage
: 静的カバレッジ ファイルへのパスを指定します (「モニター パッケージの生成」を参照)。-config
: カバレッジ データをマージするために実行する必要のある Calculate Application Coverage
テスト コンフィギュレーションの URL を指定します。-publish
: マージされたカバレッジを DTP に送信します。
jtestcli -staticcoverage [path to static_coverage.xml file] -runtimecoverage [path/dir] -config "builtin://Calculate Application Coverage" -publish |
これによって、coverage.xml ファイルに実行時カバレッジ データを書き込みできるよう、静的カバレッジ データだけでなく、テスト実行時に生成される実行時データ カバレッジにも Jtest がアクセスできるようになります。
jtestcov
を使用する場合、以下のスイッチを指定して jtestcov
を実行します。-app
: テスト対象アプリケーションのディレクトリまたはアーカイブ ファイルへのパスを指定します。-runtime
: CAM でダウンロードする実行時カバレッジへのパスを指定します (詳細については DTP のマニュアルの「Coverage Agent Manager (CAM)」セクションを参照)。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。-static
: 静的カバレッジ ファイルへのパスを指定します (「モニター パッケージの生成」を参照)。-publish
: マージされたカバレッジを DTP に送信します。
例 1: 実行時データおよびモニターからの静的カバレッジに基づいてレポートを生成する
java -jar jtestcov.jar -static [path to static_coverage.xml file] -runtime [path/dir] -publish -settings [path to jtestcov.properties] |
例 2: 実行時データおよびアプリケーション バイナリからのカバレッジに基づいてレポートを生成する
java -jar jtestcov.jar -app [path/dir] -runtime [path/dir] -publish -settings [path to jtestcov.properties] |
例 3: 実行時データに基づいてレポートを生成する
java -jar jtestcov.jar -runtime [path/dir] -publish -settings [path to jtestcov.properties] |
以前に生成された実行時カバレッジ レポートをマージするには、jtestcov merge
コマンドを実行します。2 つ以上のレポートをマージするには、次のコマンドを実行します。
java -jar jtestcov.jar merge -coverage <REPORT_FILE> -coverage <REPORT_FILE> [-coverage <REPORT_FILE>] [-report <REPORT_DIR>] |
-coverage <REPORT_FILE>:
マージして DTP にパブリッシュする 1 つ以上の入力カバレッジ レポートを指定します。-report <REPORT_DIR>
: (任意) 指定されたフォルダーに xml カバレッジ レポートを生成します。デフォルトでは、レポートは .coverage/reports フォルダーに保存されます。SOAtest を使用する場合、テスト実行時に静的カバレッジおよび実行時カバレッジ データがマージされ、DTP に送信されます。https://docs.parasoft.com にある SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクションを参照してください。
DTP のカバレッジ エクスプローラーを使用して、テスト実行時のアプリケーション カバレッジを参照できます。カバレッジ情報の参照についての詳細は、https://docs.parasoft.com にある DTP ユーザー ガイドを参照してください。
このセクションは、jtestcov
のコマンド ライン オプションの一覧です。
デフォルトのコマンドです。アプリケーションおよび実行時カバレッジ データをスキャンしてカバレッジ レポートを生成します。レポートを生成するには、次のコマンドを実行します。
java -jar jtestcov.jar coverage [-app <APP_LOCATION> | -static <BASE_COVERAGE_REPORT_FILE>] -runtime <RUNTIME_COVERAGE_LOCATION> [-report <REPORT_DIR>] [-deleteruntime] |
テスト対象アプリケーション (AUT) のディレクトリまたはアーカイブ ファイル (war、ear、jar、zip) の場所を指定します。
AUT のカバレッジ ベースを含む XML カバレッジ レポート ファイルを指定します。
AUT に対してテストを実行したときに生成された実行時カバレッジ ディレクトリの場所を指定します。
指定されたフォルダーに XML カバレッジ レポートを生成します。任意パラメーターです。デフォルトでは、レポートは .coverage/reports フォルダーに保存されます。
カバレッジ XML レポートの生成に使用した実行時カバレッジ データ ファイルを削除します。
このパラメーターが指定されている場合、レポート作成後に実行時カバレッジ データ ファイルが削除されます。
アプリケーションをスキャンし、ベースライン カバレッジ レポートを解析して再実行が必要なテストを検出します。影響を受けるテストの LST ファイルを生成するには、次のコマンドを実行します。
java -jar jtestcov.jar impacted -app <APP_LOCATION> -baseline <BASELINE_COVERAGE_REPORT FILE> [-report <LST_FILE_DIR>] |
テスト対象アプリケーション (AUT) のディレクトリまたはアーカイブ ファイル (war、ear、jar、zip) の場所を指定します。
ベースラインとして使用する XML カバレッジ レポートを指定します。
指定された場所に LST ファイルを生成します。LST ファイルがすでに存在する場合、上書きされます。任意パラメーターです。デフォルトでは、LST ファイルは .coverage/lsts フォルダーに保存されます。
以前に生成された実行時カバレッジ レポートをマージします。2 つ以上のレポートをマージするには、次のコマンドを実行します。
java -jar jtestcov.jar merge -coverage <REPORT_FILE> -coverage <REPORT_FILE> [-coverage <REPORT_FILE>] [-report <REPORT_DIR>] |
マージして DTP にパブリッシュする 1 つ以上のカバレッジ XML レポートを指定します。
指定されたフォルダーに XML カバレッジ レポートを生成します。任意パラメーターです。デフォルトでは、レポートは .coverage/reports フォルダーに保存されます。
jtestcov
ヘルプを表示します。
AUT のスキャン時に含める/除外する要素のパターンを指定します。任意パラメーターです。デフォルトでは、すべての要素が対象になります。
生成されたレポートを DTP Server にアップロードします。(設定パターン: report.dtp.publish=true)
ファイルからカスタム設定を読み取ります。<SETTINGS_FILE> は、<KEY=VALUE> 形式のエントリを含む既存の設定ファイル (.properties) である必要があります。
カスタム設定エントリを指定します。-property を複数回使用できます (複数のエントリに同じキーが含まれている場合、最初に指定されたエントリが後のすべてのエントリを上書きします)。
出力の冗長性を上げます。
(設定パターン: console.verbosity.level=high)
プロセスは、次の終了コードで終了する場合があります。
コード | 意味 |
---|---|
1 | プロセスは例外で終了しました。エラー ログを確認してください。 |