このセクションの内容
実行中の Web アプリケーション サーバーで手動または自動での機能テストを実行し、カバレッジ データをモニターおよび収集できます。カバレッジ データおよびテスト結果を DTP サーバーにレポートし、データをマージして関連付けることもできます。アプリケーション カバレッジ情報を DTP のカバレッジ エクスプローラー (詳細は DTP ユーザーズ ガイドの「カバレッジ エクスプローラー」を参照) に表示し、アプリケーションがどの程度テストされたかや、テストの品質を知ることができます。
カバレッジを収集するには、以下のコンポーネントが必要です。
Java JDK 8 でのバイトコードの改行の計算方法は、それより前のバージョンの Java と異なります。そのため、カバレッジの結果が変わる場合があります。
ソース管理システムを使用する場合、ソース管理システムが適切に設定されていることを確認してください。「ソース管理システムの設定」を参照してください。 |
Jtest には、カバレッジ エージェントというコンポーネントが付属しています。カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。
カバーされるコード行に関するメタデータ (静的カバレッジ データ) は、アプリケーションのビルド プロセスの一環として特別なテスト コンフィギュレーションを実行することによって収集されます。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。
Jtest は、この動的カバレッジ マップと静的カバレッジ データを処理します。カバレッジ情報を保存した coverage.xml が生成され、DTP に送信されます。DTP は、カバレッジ データを受信すると、カバレッジ イメージにロードします。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約することを可能にする特別なタグです。カバレッジ イメージにより、カバレッジ情報と特定のテストを関連付けることが可能になります。
テスト実行ツールの結果 (SOAtest のテスト、Engine によって実行されたテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイルとレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。
AUT の準備には、以下の手順が含まれます。
静的カバレッジ ファイルは、ビルド プロセス中に Jtest Maven、Gradle または Ant プラグインによって生成されます。このファイルは、ソース コードがあるビルド マシン上で生成される必要があります。生成された静的カバレッジ ファイルは、コードが変更されるまで使用できます。
静的カバレッジ ファイルを生成するには、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 パッケージが生成され、ビルド出力ディレクトリに置かれます。その場所へのパスがコンソールに出力されます。
このパッケージには以下が含まれます。
agent.sh/agent.bat スクリプトを実行して Jtest Java エージェントの VM 引数を生成します。monitor.zip パッケージのスクリプトは、コンソールに -javaagent
VM 引数を出力します。エージェントを 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 monitor dir]\monitor\ runtime_coverage" |
-javaagent
フラグを追加してサーバーを再起動します (「Web アプリケーション カバレッジのチュートリアル」のステップ 5c を参照)。AUT にカバレッジ エージェントをアタッチすると、エージェントを制御するための REST API が公開されます。通常、アプリケーション サーバーには複数のアプリケーションがあります。さらに、共通サーバー クラスまたはアプリケーション ライブラリはインストゥルメントする必要がありません。Jtest がカバレッジを収集する必要があるのは、アプリケーションのソース コードだけです。すべてのクラスをインストゥルメントすると、時間がかかりすぎる場合があります。
サーバー上のアプリケーションは既にビルドされており、ソース コードからどのクラスが生成されたかに関する情報を収集することはできません。このため、Jtest エージェントのスコープを適切に設定することが非常に重要です。
カバレッジ エージェントは、以下の方法で設定できます。
-javaagent への引数を使用して
agent.properties ファイルは monitor.zip パッケージに生成されます (「静的カバレッジ ファイルの生成」を参照)。このファイルでプロパティを変更してカバレッジ エージェントを適切に設定できます。以下は、agent.properties ファイルを使ってカバレッジ エージェントを設定する例です。
jtest.agent.runtimeData=[path to runtime_coverage directory] jtest.agent.includes=com/myapp/data,com/myapp/common/** jtest.agent.excludes=com/myapp/transport/*,com/myapp/autogen/** jtest.agent.autostart=false |
-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 | テスト ケースのカバレッジ情報の収集を有効/無効にします。デフォルト値は |
jtest.agent.enableMultiuserCoverage | 複数ユーザーの Web アプリケーション カバレッジの収集を有効/無効にします。デフォルト値は このプロパティを true に設定すると、Coverage Agent Manager を使って複数ユーザーのカバレッジを収集できます。詳細については Parasoft DTP ドキュメントの「Coverage Agent Manager (CAM)」のセクションを参照してください。 |
jtest.agent.associateTestsWithCoverage | カバレッジと 特定のテストの関連付けを有効/無効にします。デフォルト値は true です。 |
jtest.agent.testid | エージェント実行時にカバレッジが関連付けられる初期テスト ID です。 |
SOAtest を使用して機能テストを実行したり (テスト コンフィギュレーションの設定については、『SOAtest ユーザーズ ガイド』の「SOAtest のアプリケーション カバレッジ」を参照してください)、手動テストを実行できます。テスト セッション終了時に、SOAtest で指定されたディレクトリの runtime_coverage_[timestamp].data
ファイルにカバレッジが保存されます。この情報と静的カバレッジ データをマージして coverage.xml
ファイルを作成し、DTP にアップロードすることができます。
SOAtest を使用してテストを実行した場合、SOAtest の XML レポートを DTP にアップロードします。詳細については、『SOAtest ユーザーズ ガイド』の「SOAtest のアプリケーション カバレッジ」の「Uploading Rest Results to DTP」を参照してください。
report.coverage.images
- DTP でカバレッジ イメージを作成するために使用するタグのセットを指定します。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約する際に一意の識別子となります。DTP は、1 レポートにつき最大 3 つまでのカバレッジ イメージをサポートします。session.tag
- 同じビルドの個々のテスト実行を区別する一意の識別子を指定します。build.id ="[value]"
- 結果にラベル付けするためのビルド識別子を指定します。ビルドごとに固有の値を使用することも、特定のビルドで実行される複数のテストセッションで同じ値を使用することもできます。次の引数で必要なデータを指定して Calculate Application Coverage
テスト コンフィギュレーションを実行します。
jtestcli -staticcoverage [path to static_coverage.xml file] -runtimecoverage [path/dir] -config "builtin://Calculate Application Coverage" |
これによって、coverage.xml ファイルに実行時カバレッジ データを書き込みできるよう、静的カバレッジ データだけでなく、テスト実行時に生成される実行時データ カバレッジにも Jtest がアクセスできるようになります。
DTP のカバレッジ エクスプローラーを使用して、テスト実行時のアプリケーション カバレッジを参照できます。カバレッジ情報の参照については、DTP のマニュアルを参照してください。