このセクションの内容

概要

dotTEST には、スタンドアロン アプリケーションの実行中にマネージド コードのカバレッジ情報を収集するための coverage.exe ツールが付属しています。coverage.exe ツールを実行すると、ウィザードが起動し、必要な情報を GUI で指定することができます。あるいは、コマンドライン オプションを使用して情報を指定することもできます。

また、dotTEST には、カバレッジ エージェントというコンポーネントが付属しています。カバレッジ エージェントは、カバレッジ情報を収集する際、有効または無効にできます。カバレッジ エージェントを有効にすると、Coverage Agent Manager (CAM) に接続できます。CAM は、さまざまなテスト実行時にカバレッジを計測するための Web インターフェイスです。詳細については『Parasoft Coverage Agent Manager ユーザー ガイド』を参照してください。

カバレッジ エージェントが有効な場合でも無効な場合でも、ローカル カバレッジ レポートを生成して DTP に結果をアップロードすることが可能です。

.NET Core スタンドアロン アプリケーション

dotTEST は、.NET Core スタンドアロン アプリケーションのカバレッジを収集できます (専用の環境変数を使用した追加の依存ライブラリ設定または dotnet.exe のコマンドライン スイッチ --additional-deps はサポートされていません)。

.NET Core Web アプリケーション

coverage.exe ツールの機能を利用すると、テスト対象アプリケーションのエントリ ポイントおよび dotnet.exe へのパスを指定することで、 .NET Core Web アプリケーションのカバレッジを収集できます。詳細は「カバレッジ ウィザードの設定」を参照してください。

注意: 典型的なワークフローでは、dotTEST は IIS サーバーにデプロイされた Web アプリケーションのカバレッジを収集します (「Application Coverage for Standalone Applications」を参照)。

カバレッジ ウィザードの設定

  1. [INSTALL_DIR]\coverage.exe ツールを実行し、以下の情報を指定します。
    - アプリケーションへのフルパス
    - コマンドライン引数
    - 作業ディレクトリ

    .NET Core Web アプリケーションのカバレッジ収集

    [アプリケーションのフル パス] フィールドに dotnet.exe へのパスを入力し、[コマンドライン引数] フィールドにアプリケーションのエントリ ポイントを入力します。例:

  2. アプリケーションが使用する .NET CLR のバージョンを指定します。
  3. ウィザードがスクリプトを生成するディレクトリを指定します。
  4. カバレッジの収集にカバレッジ エージェントを使用するかしないかを指定します。
    - [カバレッジ エージェントの使用] オプションをオンにした場合、[管理者権限なしでカバレッジを収集する] オプションをオンまたはオフに設定し (「管理者権限なしでのカバレッジの収集」を参照)、ステップ 5 から 7 をスキップして [終了] をクリックします。
    - [カバレッジ エージェントなし] オプションをオンにした場合 (デフォルト)、ステップ 5 から 7 に進みます。

  5. -solution または -project スイッチを指定して、カバレッジをインポートするスコープを定義します。スイッチの指定は、DTP Engine の実行モジュールに渡され、ソースの場所を決定するのに使用されます。スイッチの詳細については「テスト スコープの設定」を参照してください。
  6. [実行前に古いカバレッジ データを削除する] オプションをオンまたはオフに設定します。このオプションはデフォルトでオンです。

    デフォルトでは、以前の実行で収集されたカバレッジ情報は削除されます。このオプションをオフにすると、前回実行時のデータは削除されません。

  7. [アプリケーションをただちに実行] オプションをオンまたはオフにします。このオプションがオンの場合、monitorCoverage.bat スクリプトが自動的に実行されます (このオプションをオフにした場合、ステップ 3 で指定した場所にウィザードが生成したスクリプトを使用して、手動でアプリケーションを起動する必要があります)。

コマンド ライン オプションの使用

オプションとともに coverage.exe を実行して、アプリケーション カバレッジの収集に必要な情報を指定することもできます。

coverage.exe -app [path] -workingDir [path] -appArgs [arguments] -commandsDir [path] -scope [dotTEST scope switch] -clr [version] -run

以下のオプションがあります。

オプション名説明
-app[path]アプリケーションへのフル パスです。
-workingDir[path]作業ディレクトリへのパスです。
-appArgs[argument]アプリケーション コマンド ラインの引数です。
-commandsDir [path]カバレッジ ツールが生成する *.bat スクリプトを保存するディレクトリを指定します。
-scope

-solution [path]
-project [path]

-solution または -project スイッチを指定して、インポート対象のカバレッジのスコープを指定します。スイッチは DTP Engine 実行モジュールに渡され、ソースの場所を特定するのに使われます。例:

-scope "-solution C:\temp\Scope.sln"

-scope "-project C:\temp\Scope.csproj"

スイッチの詳細については「テスト スコープの設定」を参照してください。

-clr

v20
v40

アプリケーションが使用する .NET CLR のバージョンを指定します。
-runnonemonitorCoverage.bat スクリプトを自動的に実行します (任意。-commandDir オプションで指定したディレクトリを開き、手動でスクリプトを実行することもできます)。
-doNotRemoveOldCoveragenone

各実行の前に古いカバレッジ データを削除しないよう指定します。このオプションが指定されていない場合、前回実行時に収集されたカバレッジ データは、デフォルトで削除されます。

-withCoverageAgentnoneカバレッジ エージェントを使用してカバレッジを収集するよう指定します。

Coverage Agent を使用しないカバレッジの収集

カバレッジ ウィザードで、カバレッジ エージェントを使用しないで実行するよう設定した場合、ターゲット スクリプトのディレクトリとして指定されたディレクトリに以下のスクリプトが作成されます (「カバレッジ ウィザードの設定」を参照)。

  • アプリケーションを実行しモニターする monitorCoverage.bat
  • カバレッジ データをインポートしてレポートする importCoverage.bat
  1. monitorCoverage.bat スクリプトを実行します ([アプリケーションをただちに実行] オプションをオンにしてカバレッジ ウィザードを起動した場合、このステップをスキップします)。指定されたアプリケーションが実行されます。
  2. アプリケーションを操作してテストを実行します。
  3. アプリケーションを終了します。
  4. importCoverage.bat スクリプトを実行して次の場所にレポートを生成します: [Target scripts directory]\reports
  5. カバレッジ情報を参照します。

Coverage Agent を使用したカバレッジの収集

カバレッジ ウィザードで、カバレッジ エージェントを使用して実行するよう設定した場合、ターゲット スクリプトのディレクトリとして指定されたディレクトリに以下のスクリプトが作成されます (「カバレッジ ウィザードの設定」を参照)。

  • アプリケーションを実行しモニターする monitorCoverage.bat
  • カバレッジ エージェントを実行する runCamAgent.bat

カバレッジ エージェントでアプリケーション カバレッジを収集するには、次の操作を行います。

  1. 静的カバレッジ ファイルを生成します。「静的カバレッジ ファイルの生成」を参照してください。

  2. runCamAgent.bat スクリプトを実行して カバレッジ エージェントを起動します。

    CAM の操作が終わるまで、カバレッジ エージェント プロセスを終了しないでください。

  3. monitorCoverage.bat スクリプトを実行してアプリケーションを起動します。

  4. Coverage Agent Manager に接続し、テストを実行します。詳細については「Parasoft Coverage Agent Manager」を参照してください。

  5. 動的カバレッジおよびテスト結果をダウンロードします。

  6. アプリケーションを終了します。

  7. CAM でダウンロードした動的カバレッジと静的カバレッジをマージし、マージされたカバレッジ データを DTP に送信します。「カバレッジ データのマージと DTP へのアップロード」を参照してください。
  8. DTP にテスト結果をアップロードします。「DTP への結果のアップロード」を参照してください。
  9. マージされたカバレッジ情報を DTP で参照します。

デフォルトでは、カバレッジ エージェントは HTTP プロトコル経由で利用できます。HTTPS 経由で接続するには、実行前に runCamAgent.bat スクリプトを開いて dotTEST IIS Manager の実行コマンド ラインを変更し、SSL 証明書の情報を渡します。例:

"<INSTALL_DIR>\integration\IIS\dottest_iismanager.exe" -standalone -port 8050 -useSsl -certificateHash <SSL certificate hash> -camConfigFile <path to camConfigFile>

カバレッジ エージェント用に SSL 証明書を設定する方法の詳細および利用可能なオプションの一覧は、「HTTPS 経由での Coverage Agent への接続」および「IIS マネージャーのオプション」を参照してください。 

静的カバレッジ ファイルの生成

ソリューションに対して次のテスト コンフィギュレーションを実行して静的カバレッジ ファイルを生成します。

dottestcli.exe -config "builtin://Collect Static Coverage" -solution SOLUTION_PATH

dottestcli のコンソール出力に静的カバレッジ データが保存された場所が表示されます。例:

Saving static coverage information into: 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\[FILE].data

カバレッジ データのマージと DTP へのアップロード

CAM で収集したカバレッジ情報を参照するには、結果およびカバレッジを DTP にアップロードする必要があります。カバレッジをアップロードするには、CAM からダウンロードした実行時カバレッジとカバレッジ エージェントで生成した静的カバレッジをマージする必要があります。  カバレッジ データを適切にマージしてアップロードするには、.properties ファイルで必要な設定が行われていることを確認します (「設定の概要」を参照)。

  • dotTEST で DTP、スコープ、作成者が適切に設定されていることを確認します。「DTP への接続」、「DTP への結果の送信とソース コードのパブリッシュ」、「設定」を参照してください。
  • 適切にカバレッジ データをマージするには、dottestcli.properties ファイルで以下の設定を行います。
    - report.coverage.images - DTP Server でカバレッジ イメージを作成するために使用するタグのセットを指定します。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約する際に一意の識別子となります。DTP は、1 レポートにつき最大 3 つまでのカバレッジ イメージをサポートします。
    session.tag - 同じビルドの個々のテスト実行を区別する一意の識別子を指定します。
    build.id - 結果にラベル付けするためのビルド識別子を指定します。ビルドごとに固有の値を使用することも、特定のビルドで実行される複数のテストセッションで同じ値を使用することもできます。
    report.coverage.limit (任意) - カバレッジのしきい値を指定します。この値より低いカバレッジ結果は、レポートで強調表示されます (デフォルト値は 40)。

カバレッジ データのマージと DTP へのアップロード

動的 (実行時) カバレッジ ファイルおよび静的カバレッジ ファイルを同じマシンにコピーし、次のスイッチを指定して dottestcliを実行します。

  • -runtimeCoverage: CAM でダウンロードする実行時カバレッジへのパスを指定します (詳細については DTP のマニュアルの「Coverage Agent Manager (CAM)」セクションを参照)。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。
  • -staticCoverage: 静的カバレッジ ファイルへのパスを指定します (「静的カバレッジファイルの生成」を参照)。
dottestcli.exe -runtimeCoverage [path] -staticCoverage [path] -report [path] -publish -settings [path]

カバレッジ データが自動的に DTP にアップロードされます。

DTP への結果のアップロード

  1. DTP のインターフェイスで [Report Center] に移動します。
  2. 歯車のアイコンをクリックして [Report Center 設定] > [その他の設定] > [Report Center の管理] > [ツール] > [Data Collector アップロード フォーム] をクリックします。
  3. [ファイルの選択] をクリックし、CAM からダウンロードした report.xml ファイルを選択します。
  4. [アップロード] ボタンをクリックし、ファイルを DTP にアップロードします。

管理者権限なしでのカバレッジの収集

デフォルトでは、カバレッジ エージェントを使用したカバレッジ収集を行うには管理者権限が必要ですが、管理者権限のないユーザーでカバレッジを収集するよう設定することもできます。

  1. [管理者権限なしでカバレッジを収集する] オプションをオンにしてウィザードを起動します (「カバレッジ ウィザードの設定」を参照)。すると、次のスクリプトが追加で生成されます。
    - runCamAgentInit.bat
    - runCamAgentUninit.bat
  2. 管理者権限を持つユーザーで runCamAgentInit.bat スクリプトを実行し、カバレッジ エージェントのセットアップと初期化を行います。これによって、管理者権限のないユーザーが「Coverage Agent を使用したカバレッジの収集」 で説明されているように、CAM を使用してテストを行えるようになります。

  3. テストが終了したら、runCamAgentUninit.bat スクリプトを実行してプロセスを停止します。

カバレッジのスコープのカスタマイズ

デフォルトでは、 アプリケーション全体のカバレッジが計測されます。カバレッジ収集のスコープを狭くするには、-solution-resource-include および/または -exclude オプションを使用して、アプリケーションの特定の部分へのパスを指定します (静的カバレッジの生成については「テスト スコープの設定」を参照)。結果として、静的カバレッジ収集のカスタマイズされたスコープを含むスコープ設定ファイルが生成されます。

スコープ設定ファイルの内容を変更する必要はありません。しかし、大規模なアプリケーションのカバレッジを収集する場合は、動的カバレッジ収集のスコープ (テスト対象アプリケーションの操作中に収集されるカバレッジ) を微調整するとよいでしょう。動的カバレッジの収集をカスタマイズするには、scope.instumentation.txt ファイルを開き、カバレッジ データを収集しないアセンブリをアセンブリのリストから削除します。

Coverage Agent でカバレッジ スコープをカスタマイズする

  1. 通常のコマンド ラインにリソースへのパスを追加します (「静的カバレッジ ファイルの生成」を参照)。例:

    dottestcli.exe -config "builtin://Collect Static Coverage" 
    -solution "C:\Devel\FooSolution\FooSolution.sln" 
    -resource "FooSolution/QuxProject" 
    -include "C:\Devel\FooSolution\src\QuxProject\**\*.cs" 
    -exclude "C:\Devel\FooSolution\src\QuxProject\**\tests\**\*.cs"

    静的カバレッジが生成され、スコープ設定ファイルにスコープ情報が保存されます。コンソール出力にはスコープ コンフィギュレーション ファイルの場所が表示されます。例:

    Saving static coverage scope configuration into: 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt'
  2. runCamAgent.bat スクリプトを開きます (「Coverage Agent を使用したカバレッジの収集」を参照)
  3. -Scope オプションを使用してスコープ設定ファイルへのパスをスクリプトに追加します。

    -scope 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt

Coverage Agent なしでカバレッジ スコープをカスタマイズする

カバレッジ エージェントなしでカバレッジ収集スコープをカスタマイズするには、アプリケーションを操作する前に手動で静的カバレッジを生成する必要があります。

  1. Collect Static Coverage ビルトイン テスト コンフィギュレーションを実行して静的カバレッジ ファイルを生成し、-solution-resource-include および/または -exclude オプションを使用して、アプリケーションの特定の部分へのパスを指定します (詳細については「テスト スコープの設定」を参照)。コマンドは次のようになります。

    dottestcli.exe -config "builtin://Collect Static Coverage" 
    -solution "C:\Devel\FooSolution\FooSolution.sln" 
    -resource "FooSolution/QuxProject" 
    -include "C:\Devel\FooSolution\src\QuxProject\**\*.cs" 
    -exclude "C:\Devel\FooSolution\src\QuxProject\**\tests\**\*.cs"

    静的カバレッジが生成され、スコープ設定ファイルにスコープ情報が保存されます。コンソール出力にはスコープ コンフィギュレーション ファイルの場所が表示されます。例:

    Saving static coverage scope configuration into: 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt'
  2. monitorCoverage.bat スクリプトを開き、PARASOFT_PROFILING_ASM_LIST_PATH 環境変数がスコープ設定ファイルの場所を指すように設定します。例:

    SET PARASOFT_PROFILING_ASM_LIST_PATH=C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt
  3. monitorCoverage.bat スクリプトを実行してアプリケーションを実行します。
  4. アプリケーションを操作してテストを実行した後、アプリケーションを終了します。
  5. 次のオプションを指定して dottestcli を実行し、静的カバレッジと動的カバレッジをマージします:
    -runtimeCoverage: CAM でダウンロードする実行時カバレッジへのパスを指定します (詳細については DTP のマニュアルの「Coverage Agent Manager (CAM)」セクションを参照)。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。
    -staticCoverage: 静的カバレッジ ファイルへのパスを指定します (「静的カバレッジファイルの生成」を参照)。
    -publish: マージされたカバレッジを DTP に送信します。

    dottestcli.exe -runtimeCoverage [path] -publish -staticCoverage [path]

DTP でのカバレッジの参照

DTP のカバレッジ エクスプローラーを使用して、テスト実行時のアプリケーション カバレッジを参照できます。カバレッジ情報の参照については、DTP のマニュアルを参照してください。


  • No labels