dotTEST を使用すると、スタンドアロンまたは Web アプリケーションに対して手動または自動での機能テストを実行しながらマネージド コードのカバレッジ データをモニターおよび収集できます。
典型的なワークフローでは、dotTEST は IIS サーバーにデプロイされた Web アプリケーションのカバレッジを収集します。IIS サーバー上にデプロイされた実行中の Web アプリケーション サーバーで手動または自動での機能テストを実行し、マネージド コードのカバレッジ データを収集できます。.NET Web アプリケーションがサポートされています。別の方法として、デスクトップ アプリケーションとしてアプリケーションを実行することもできます (たとえば dotnet.exe を使用したり、.NET アプリケーションであればアプリケーション実行ファイルを使用したりして)。
専用の dotTEST アプリケーション カバレッジ UI またはコマンド ラインを使用してカバレッジを収集できます。カバレッジ データおよびテスト結果を DTP サーバーにレポートし、データをマージして関連付けることができます。アプリケーション カバレッジ情報を DTP のカバレッジ エクスプローラーに表示し、アプリケーションがどの程度テストされたかや、テストの品質を知ることができます。詳細については、DTP ユーザー ガイドの「カバレッジ エクスプローラー」を参照してください。
dotTEST には、カバレッジ エンジン (agent_client.exe) の REST クライアント API を使用してアプリケーションのカバレッジ収集を可能にするカバレッジ エージェントというコンポーネントが付属しています。カバレッジ エージェントを利用すると、スタンドアロン アプリケーションおよび Web アプリケーションの実行中にマネージド コードのカバレッジ情報を収集できます。agent_client.exe を実行すると UI が起動します。あるいは、コマンドライン オプションを使用して情報を指定することもできます。
dotTEST では、ローカル カバレッジ レポートを生成して DTP に結果をアップロードできます。
|
dotTEST カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。
カバーされるコード行に関するメタデータ (静的カバレッジ データ) は、特別なテスト コンフィギュレーションを実行するか、アプリケーションのアセンブリをスキャンすることによって収集されます。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ データ ファイルに書き込まれます。このファイルには、実行されたコード行を示すマーカーが記録されます。
.cs または .vb 以外のファイルに対しては、動的カバレッジはレポートされません。 |
dotTEST は、この動的カバレッジおよび静的カバレッジ データを処理します。カバレッジ情報を保存した coverage.xml が生成され、DTP に送信されます。DTP は、カバレッジ データを受信すると、カバレッジ イメージにロードします。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約することを可能にする特別なタグです。カバレッジ イメージにより、カバレッジ情報と特定のテストを関連付けることが可能になります。
また、dotTEST は実行時カバレッジおよび実行されたクラスに関する一般的な情報だけが含まれるアプリケーション カバレッジを収集することもできます。これには、カバーされた行以外のソース コード構造の詳細は含まれません。簡略化されたレポートが DTP に送信され、DTP 上の既存のカバレッジ データに付加されます。クラス構造に関する情報 (静的カバレッジ データ) がすでに DTP に存在する場合、カバレッジ データを参照できます。
テスト実行ツールの結果 (SOAtest のテスト、dotTEST によって実行されたテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイル (coverage.xml) とレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。
カバレッジ レポートを作成し、DTP にアップロードするには、dottestcov または dottestcli を使用します。dottesctcov は、カバレッジ専用のツールであり、カバレッジ レポートの生成に関してより多くのオプションがあります。「カバレッジ レポートの作成と DTP へのデータのアップロード」を参照してください。dottestcov.bat ファイルは、<INSTALL_DIR>\integration\coverage\dottestcov ディレクトリにあります。
Agent_client.exe および dottestcov は dotTEST のインストール ディレクトリの外にコピーして、独立して使用できるスタンドアロン ツールです。 そのため、テスト フローとの統合が容易です。エージェント クライアント コマンド ライン オプションの詳細は、「エージェント クライアントのコマンド ライン オプション」を参照してください。dottestcov コマンド ライン オプションの詳細は、「dottestcov のコマンド ライン オプション」を参照してください。
モニター対象のアプリケーションが実行されるマシンに、dotTEST に付属している Visual C++ 再頒布可能パッケージがインストールされていることを確認してください。ウィザード (「インストール」を参照) を使用して dotTEST をインストールした場合、パッケージは自動的にインストールされます。ZIP ディストリビューションから dotTEST をインストールした場合、または別のマシンでカバレッジを収集する場合は、次のディレクトリにある実行モジュールを手動で実行してパッケージをインストールしてください。:<INSTALL_DIR>\bin\prerequisites
モニター対象のアプリケーションは、dotTEST と同じマシンにインストールされていても、他のマシンにインストールされていても構いません。
ソース管理システムを使用する場合、適切にソース管理システムを設定します。「ソース管理システムの設定」を参照してください。
また、IIS サーバーにデプロイされた Web アプリケーションの場合は次の条件があります。
LoadUserProfile オプションに true が設定されている必要があります。 dottestcov ツールは以下の OS で実行できます。
dottestcov ツールを使用するには、マシンに Java 11 以降がインストールされている必要があります。Oracle Java SE および OpenJDK がサポートされています。他のフリーやオープンソースの実装は、カバレッジ ツールの正常な動作を妨げる問題の原因になる可能性があります。JAVA_HOME 変数を設定し、システムの PATH に追加することを推奨します。
また、マシンに適切な .NET フレームワークがインストールされていることを確認します。
dottestcov を使用する場合)dottestcov を使用する場合)設定済みの IIS サーバー上にホストされたすべての Web アプリケーションのカバレッジを収集する場合、次の操作を行います。
agent_client.exe |

0 または負の値を指定すると、接続はタイムアウトしません。そのため、ツールの処理が非常に遅くなったり、無限に停止したりする可能性があります。 |

特定のスタンドアロン アプリケーションまたは Web アプリケーションのカバレッジを収集するには、次の操作を行います。
agent_client.exe |

0 または負の値を指定すると、接続はタイムアウトしません。そのため、ツールの処理が非常に遅くなったり、無限に停止したりする可能性があります。 |
CLI を使用してカバレッジを収集するには、次の操作を行います。
静的カバレッジ (ソース コードの情報を含む) と実行時カバレッジがマージされたレポートを作成するには、静的カバレッジ ファイルの生成が必要です。
ソリューションに対して次のテスト コンフィギュレーションを実行して静的カバレッジ ファイルを生成します。
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].xml |
この静的カバレッジ ファイルは、dottestcli および dottestcov を使用して実行時カバレッジ データとマージし、DTP に送信できます。
次のコマンドを実行して静的カバレッジ ファイルを生成します。
dottestcov.bat -app [dir] |
-app は、テスト対象アプリケーションのディレクトリへのパスを指定します。
<INSTALLATION_DIR>\integration\coverage\agent ディレクトリをコピーします。エージェントをホーム ディレクトリ (%USERPROFILE% ディレクトリ) にデプロイすることは、We ベースのアプリケーションからのカバレッジ収集を妨げる可能性があるため、推奨されません。 |
このマシンで Agent Client ツールを実行し、IIS 内での実行時カバレッジ収集を有効にします。
agent_client.exe |
Agent Client に追加のオプション指定が必要な場合があります。「エージェント クライアントのコマンド ライン オプション」を参照してください。
Agent Client は Web サーバー (IIS) の環境を初期化し、サービスのように振る舞い、ユーザーがテストを実行してカバレッジを収集することを可能にします。次のメッセージが表示されている間、サービスが待機し、コマンドを受け付けます。
Write 'exit' and hit Enter to close agent_client |
テスト対象 Web サイトまたはアプリケーションがまだロードされていないときでも、セッションおよびテストを開始できることに注意してください。 |
次のアドレスに移動し、カバレッジ エージェントのステータスを確認します。 http://host:8050/status
次のレスポンスが返されるはずです。
{"session":null,"test":null} |
デフォルトでは、カバレッジ エージェントは HTTP プロトコル経由で利用できます。HTTPS 経由で接続するには、カバレッジ エージェントが使用するポートに SSL証明書をバインドする必要があります。それには、以下のいずれかの操作を行います。
Netsh.exe ツールがアクセス可能な場所に SSL 証明書を追加し、証明書のハッシュおよびポート番号を agent_client.exe に渡します。
agent_client.exe -port 8050 -useSsl -certificateHash <SSL certificate hash> |
.pfx ファイルに格納された SSL 証明書へのパスとパスワードを agent_client.exe に渡します。
agent_client.exe -port 8050 -useSsl -certificatePath <path to PFX> -certificatePassword <password> |
Netsh.exe ツールでポートに SSL 証明書と Agent Client の appid を設定します。Agent Client の ID は次のとおりです。
{ed344e08-fab7-4dfb-9d07-68f2c2c9e373} |
Netsh.exe ツールで SSL 証明書を設定すると、-port および -useSsl スイッチを指定して Agent Client を起動することで、HTTP 経由で接続できます。
agent_client.exe -port 8050 -useSsl |
自己署名証明書を使用するには、-skipvalidation オプションを追加する必要があります。
PFX または PKCS12 フォーマットの SSL 証明書を利用できます。
デフォルトでは、Agent Client はカバレッジ エージェント用に設定された証明書を自動的に処理します。手動で証明書を削除するには、Certmgr.exe ツールを起動し、Personal> Certificates に格納された証明書を削除します。
-unregister スイッチを指定して Agent Client でカバレッジ サービス ポートの登録を解除する場合、-useSsl および -removeCertificate スイッチを追加して SSL 証明書を削除する必要があります。
agent_client.exe -unregister -port 8050 -useSsl -removeCertificate |
こうすると、ポート番号から SSL 証明書が削除されます。これで、ストレージから手動で証明書を削除できるようになりました。
CLI を使用してカバレッジを収集するには、専用のオプションとともに agent_client.exe を実行して、アプリケーション カバレッジの収集に必要な情報を指定します。
IIS アプリケーションの場合:
agent_client.exe -port 8050 |
デスクトップ アプリケーションの場合:
agent_client.exe -app [path] -workingDir [path] -appArgs [arguments] |
1 つの Web アプリケーションに同時にアクセスする複数のユーザーのカバレッジ情報を収集できます。それには、-multiuser スイッチを指定して Agent Client を起動します。
agent_client.exe -multiuser |
デフォルトでは、Agent Client のアプリケーション プール プロセスは 20 分のアイドル タイムが経過するとシャットダウンしますが、このことがテスト セッションに悪影響を与える可能性があります。デフォルトのアイドル タイム値を変更し、シャットダウンを防ぐことによって、アプリケーションを操作するユーザーがテスト セッション中に予期しないサーバーの停止および再起動に遭遇しないようにできます。
実行時カバレッジを収集するには、次の方法があります。
実行時カバレッジ データの収集を停止するには、以下のいずれかの操作を行います。
コンソールに次のメッセージが表示されている状態で exit と入力し、エージェント クライアントを停止します。
Write 'exit' and hit Enter to close agent_client |
ブラウザーに次の URL を入力することで、サービスにリクエストを送信します: http://host:port/shutdown
すべてのセッションが終了している場合にだけエージェント クライアントが停止します。サービスを停止すると、アプリケーション カバレッジが収集されなくなるため、カバレッジを収集するテストが実行されている間は、常にエージェント クライアントを実行しておくことが重要です。 |
エージェント クライアントの終了時にエラーが発生し、Web サーバー環境のクリーンアップが行われなかった場合、-uninitialize パラメーターを指定してエージェント クライアントを実行することで、元の Web サーバー環境および設定を復元してください。
agent_client.exe -uninitialize |
実行済みのテストの結果を DTP にアップロードするには、次の操作を行います。
SOAtest を使用する場合、テスト実行時にテスト結果が自動的に DTP に送信されます。https://docs.parasoft.com にある SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクションを参照してください。
dottestcov または dottestcli コマンドを使用してカバレッジ レポートを作成し、DTP にデータをアップロードできます。dottestcov コマンド ライン オプションの詳細は、「dottestcov のコマンド ライン オプション」を参照してください。
3 つのタイプのカバレッジ レポートを生成できます。
-runtimeCoverage および -staticCoverage スイッチを指定して dottestcli を実行するか、-runtime および -static をスイッチを指定して dottestcov を実行します。-app および -runtime スイッチを指定して dottestcov を実行します。-runtime スイッチを指定して dottestcov を実行します。カバレッジ レポートを作成し、DTP にデータをアップロードするには、次の操作を行います。
dottestcli/dottestcov で DTP、スコープ、作成者が適切に設定されていることを確認します。「DTP への接続」、「DTP への結果の送信とソース コードのパブリッシュ」、「設定」を参照してください。- report.coverage.images - DTP でカバレッジ イメージを作成するために使用するタグのセットを指定します。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約する際に一意の識別子となります。DTP は、1 レポートにつき最大 3 つまでのカバレッジ イメージをサポートします。session.tag - 同じビルドの個々のテスト実行を区別する一意の識別子を指定します。build.id - 結果にラベル付けするためのビルド識別子を指定します。ビルドごとに固有の値を使用することも、特定のビルドで実行される複数のテストセッションで同じ値を使用することもできます。report.coverage.limit (任意) - カバレッジのしきい値を指定します。この値より低いカバレッジ結果は、レポートで強調表示されます (デフォルト値は 40)。dottestcli を使用する場合、実行時カバレッジ ファイルおよび静的カバレッジ ファイルを同じマシンにコピーし、次のスイッチを指定して dottestcli を実行します。-runtimeCoverage - カバレッジ エージェントを使用して収集された実行時カバレッジ データへのパスを指定します。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。-staticCoverage - 静的カバレッジ ファイルへのパスを指定します (「ソース コードの情報を含む静的カバレッジ ファイルの生成」を参照)。-publish - マージされたカバレッジを DTP に送信します。
dottestcli.exe -runtimeCoverage [path] -staticCoverage [path] -publish |
これによって、coverage.xml ファイルに実行時カバレッジ データを書き込みできるよう、静的カバレッジ データだけでなく、テスト実行時に生成される実行時データ カバレッジにも dotTEST がアクセスできるようになります。
dottestcov を使用する場合、以下のスイッチを指定して dottestcov を実行します。-app - テスト対象アプリケーションのディレクトリまたはアーカイブ ファイルへのパスを指定します。-runtime - カバレッジ エージェントを使用して収集された実行時カバレッジ データへのパスを指定します。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。-static - 静的カバレッジ ファイルへのパスを指定します (「ソース コードの情報を含む静的カバレッジ ファイルの生成」を参照)。-publish - マージされたカバレッジを DTP に送信します。
例 1: 実行時データおよびモニターからの静的カバレッジに基づいてレポートを生成する
dottestcov.bat -static [path to static_coverage.xml file] -runtime [path/dir] -publish -settings [path to .properties] |
例 2: 実行時データおよびアプリケーション バイナリからのカバレッジに基づいてレポートを生成する
dottestcov.bat -app [dir] -runtime [path/dir] -publish -settings [path to .properties] |
例 3: 実行時データに基づいてレポートを生成する
dottestcov.bat -runtime [path/dir] -publish -settings [path to .properties] |
以前に生成された実行時カバレッジ レポートをマージするには、dottestcov merge コマンドを実行します。2 つ以上のレポートをマージするには、次のコマンドを実行します。
dottestcov.bat merge -coverage <REPORT_FILE> -coverage <REPORT_FILE> [-coverage <REPORT_FILE>] [-report <REPORT_DIR>] [-excludeunmatchedruntime] |
-coverage <REPORT_FILE> - マージして DTP にパブリッシュする 1 つ以上の入力カバレッジ レポートを指定します。-report <REPORT_DIR> - (任意) 指定されたフォルダーに xml カバレッジ レポートを生成します。デフォルトでは、レポートは .coverage/reports フォルダーに保存されます。SOAtest を使用する場合、テスト実行時に静的カバレッジおよび実行時カバレッジ データがマージされ、DTP に送信されます。SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクションを参照してください。
デフォルトでは、 アプリケーション全体のカバレッジが計測されます。カバレッジ収集のスコープを狭くするには、-solution、-resource、-include および/または -exclude オプションを使用して、アプリケーションの特定の部分へのパスを指定します (静的カバレッジの生成については「テスト スコープの設定」を参照)。結果として、静的カバレッジ収集のカスタマイズされたスコープを含むスコープ設定ファイルが生成されます。
スコープ設定ファイルの内容を変更する必要はありません。しかし、大規模なアプリケーションのカバレッジを収集する場合は、実行時カバレッジ (テスト対象アプリケーションの操作中に収集されるカバレッジ) 収集のスコープを微調整するとよいでしょう。実行時カバレッジの収集をカスタマイズするには、scope.instumentation.txt ファイルを開き、カバレッジ データを収集しないアセンブリをアセンブリのリストから削除します。
IIS でコンパイルされた Web プロジェクトでは、アプリケーション カバレッジ スコープ ファイルを使用できません。これは、IIS コンパイルのターゲット アセンブリの名前が事前に決まっていないからです。カバレッジの収集が開始される前に、IIS によってロードされるアセンブリの名前がわかる場合は、スコープ ファイルを使用できます。 |
カバレッジ収集のスコープを狭くするには:次の操作を行います。
コマンド ラインにリソースへのパスを追加します (「ソース コードの情報を含む静的カバレッジ ファイルの生成」を参照)。例:
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' |
-scope オプションを使用してスコープ設定ファイルへのパスをスクリプトに追加します (「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ」を参照)。
agent_client.exe -scope 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt' |
デフォルトでは、 アプリケーション全体のカバレッジが計測されます。カバレッジ収集のスコープを狭くするには、次のようにコマンドを実行します。
dottestcov.bat -include "MyAssembly.dll/*" -exclude "MyAssembly.dll/packageA.*" -app [dir] -runtime [path/dir] -publish -settings [path to .properties] |
DTP のカバレッジ エクスプローラーを使用して、テスト実行時のアプリケーション カバレッジを参照できます。カバレッジ情報の参照についての詳細は、DTP ユーザー ガイドを参照してください。