このセクションの内容
IIS サーバー上にデプロイされた実行中の Web アプリケーション サーバーで手動または自動での機能テストを実行し、マネージド コードのカバレッジ データをモニターおよび収集できます。カバレッジ データおよびテスト結果を DTP にレポートすることもできます。アプリケーション カバレッジ情報を DTP のカバレッジ エクスプローラー (詳細は DTP ユーザーズ ガイドの「カバレッジ エクスプローラー」を参照) に表示し、アプリケーションがどの程度テストされたかや、テストの品質を知ることができます。
dotTEST は IIS サーバーにデプロイされた .NET Core および .NET Web アプリケーションのカバレッジを収集できます。また、dotTEST に付属の coverage.exe ツールを使用することもできます。詳細は「スタンドアロン アプリケーションのアプリケーション カバレッジ」を参照してください。 |
カバレッジを収集するには、以下のコンポーネントが必要です。
dotTEST には、カバレッジ エージェントというコンポーネントが付属しています。カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。
以下のステップが実行されます。
テスト実行ツールの結果 (SOAtest のテスト、dotTEST によって実行されたテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイルとレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。
ソース管理システムを使用する場合、適切にソース管理システムを設定します。「ソース管理システムの設定」を参照してください。 |
AUT の準備には、以下の手順が含まれます。
ソリューションに対して次のテスト コンフィギュレーションを実行します。
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 |
デフォルトでは、 アプリケーション全体のカバレッジが計測されます。静的カバレッジ収集のスコープを狭くするには、次の操作を行います。
-solution
、-resource
、-include
および/または -exclude
オプションを使用して、アプリケーションの特定の部分へのパスを指定します。-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' |
-scope
オプションを使用してスコープ設定ファイルへのパスを dotTEST IIS Manager ツール (「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ 」を参照) に渡します。
dottest_iismanager.exe -scope 'C:\Users\[USER]\Documents\Parasoft\dotTEST\Coverage\Static\scope.instrumentation.txt' |
スコープ設定ファイルの内容を変更する必要はありません。しかし、大規模なアプリケーションのカバレッジを収集する場合は、動的カバレッジ収集のスコープ (テスト対象アプリケーションの操作中に収集されるカバレッジ) を微調整するとよいでしょう。動的カバレッジの収集をカスタマイズするには、scope.instumentation.txt ファイルを開き、カバレッジ データを収集しないアセンブリをアセンブリのリストから削除します。
IIS でコンパイルされた Web プロジェクトでは、アプリケーション カバレッジ スコープ ファイルを使用できません。これは、IIS コンパイルのターゲット アセンブリの名前が事前に決まっていないからです。カバレッジの収集が開始される前に、IIS によってロードされるアセンブリの名前がわかる場合は、スコープ ファイルを使用できます。 |
このマシンで dotTEST IIS Manager ツールを実行し、IIS 内での実行時カバレッジ収集を有効にします。
dottest_iismanager.exe |
dotTEST IIS Manager に追加オプションを指定する必要がある場合があります。「IIS マネージャーのオプション」を参照してください。
dottest_iismanager は、Web サーバー (IIS) の環境を初期化し、サービスのように振る舞い、ユーザーがテストを実行してカバレッジを収集することを可能にします。次のメッセージが表示されている間、サービスが待機し、コマンドを受け付けます。
Write 'exit' and hit Enter to close dottest_iismanager |
テスト対象 Web サイトまたはアプリケーションがまだロードされていないときでも、セッションおよびテストを開始できることに注意してください。 |
次のアドレスに移動して、カバレッジ エージェントのステータスを確認します。http://host:8050/status
次の応答を受け取るはずです。
{"session":null,"test":null} |
デフォルトでは、カバレッジ エージェントは HTTP プロトコル経由で利用できます。HTTPS 経由で接続するには、カバレッジ エージェントが使用するポートに SSL証明書をバインドする必要があります。それには、以下のいずれかの操作を行います。
Netsh.exe ツールがアクセス可能な場所に SSL 証明書を追加し、証明書のハッシュおよびポート番号を dottest_iismanager.exe に渡します。
dottest_iismanager.exe -port 8050 -useSsl -certificateHash <SSL certificate hash> |
.pfx ファイルに格納された SSL 証明書へのパスとパスワードを dottest_iismanager.exe に渡します。
dottest_iismanager.exe -port 8050 -useSsl -certificatePath <path to PFX> -certificatePassword <password> |
Netsh.exe ツールでポートに SSL 証明書と dotTEST IIS Manager の appid
を設定します。 dotTEST IIS Manager の ID は次のとおりです。
{ed344e08-fab7-4dfb-9d07-68f2c2c9e373} |
Netsh.exe ツールで SSL 証明書を設定すると、-port
および -useSsl
スイッチを指定して dotTEST IIS Manager を起動することで、HTTP 経由で接続できます。
dottest_iismanager.exe -port 8050 -useSsl |
自己署名証明書を使用するには、-skipvalidation
オプションを追加する必要があります。
PFX または PKCS12 フォーマットの SSL 証明書を利用できます。
デフォルトでは、dotTEST IIS Manager はカバレッジ エージェント用に設定された証明書を自動的に処理します。手動で証明書を削除するには、Certmgr.exe ツールを起動し、Personal> Certificates に格納された証明書を削除します。
-unregister
スイッチを指定して dotTEST IIS Manager でカバレッジ サービス ポートの登録を解除する場合、-useSsl
および -removeCertificate
スイッチを追加して SSL 証明書を削除する必要があります。
dottest_iismanager.exe -unregister -port 8050 -useSsl -removeCertificate |
こうすると、ポート番号から SSL 証明書が削除されます。これで、ストレージから手動で証明書を削除できるようになりました。
1 つの Web アプリケーションに同時にアクセスする複数のユーザーのカバレッジ情報を収集できます。それには、-multiuser
スイッチを指定して dotTEST IIS Manager を起動します。
dottest_iismanager.exe -multiuser |
詳細については、DTP のマニュアルの Coverage Agent Manager (CAM) セクションを参照してください。
デフォルトでは、IIS のアプリケーション プール プロセスは 20 分のアイドル タイムが経過するとシャットダウンしますが、このことがテスト セッションに悪影響を与える可能性があります。デフォルトのアイドル タイム値を変更し、シャットダウンを防ぐことによって、アプリケーションを操作するユーザーがテスト セッション中に予期しないサーバーの停止および再起動に遭遇しないようにできます。
オプション | 値 | 説明 | |
---|---|---|---|
-scope | <path> | スコープ設定ファイルへのパスです。デフォルト以外のスコープを使用する場合に必要です。「カバレッジのスコープのカスタマイズ」を参照してください。 | |
-agentTimeout | <miliseconds> | カバレッジ エージェントとの接続のタイムアウト時間を指定します。マシンの性能に合わせて値を調整してください。デフォルト値は 1500 ms です。
| |
-port | <port number> | デフォルトのポートが使用できない場合に dottest_iismanager の起動時に使用するポート番号を使用します。 | |
-multiuser | 複数ユーザーのカバレッジ情報収集を有効化します。「複数ユーザーからのカバレッジ収集」を参照してください。 | ||
-useSsl | HTTPS 経由の接続を有効にします。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | ||
-certificateHash | <SSL certificate hash> | カバレッジ エージェントが使用するポート用の SSL 証明書のハッシュを指定します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | |
-certificatePath | <path> | SSL 証明書を格納した PFX ファイルへのパスを指定します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | |
-certificatePassword | <password> | PFX ファイルに格納された SSL 証明書のパスワードを指定します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | |
-displayappid | dotTEST IIS Manager の 'appid' を出力します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | ||
-removeCertificate | -unregister スイッチを使用して手動でポートの登録を解除する場合に、SSL 証明書を削除します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | ||
-skipvalidation | 自己署名 SSL 証明書の使用を有効化します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 |
SOAtest を使用して機能テストを実行することも、Coverage Agent Manager (CAM) とともに手動でテストを実行することもできます。テスト セッション実行の詳細については、SOAtest ユーザー ガイドまたは CAM のマニュアルを参照してください。
テスト実行時の処理
CAM とともに dotTEST を使用する場合
SOAtest とともに dotTEST を使用する場合、テスト実行時にテスト結果が自動的に DTP に送信されます。https://docs.parasoft.com にある SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクション を参照してください。
CAM とともに dotTEST を使用する場合
- report.coverage.images
- DTP Server でカバレッジ イメージを作成するために使用するタグのセットを指定します。カバレッジ イメージは、同じビルド ID を持つ複数の実行のカバレッジ データを集約する際に一意の識別子となります。DTP は、1 レポートにつき最大 3 つまでのカバレッジ イメージをサポートします。session.tag
- 同じビルドの個々のテスト実行を区別する一意の識別子を指定します。build.id
- 結果にラベル付けするためのビルド識別子を指定します。ビルドごとに固有の値を使用することも、特定のビルドで実行される複数のテストセッションで同じ値を使用することもできます。ランタイム カバレッジ ファイルおよび静的カバレッジ ファイルを同じマシンにコピーし、次のスイッチを指定して dottestcli
を実行します。
-runtimeCoverage
: CAM でダウンロードする実行時カバレッジへのパスを指定します (詳細については DTP のマニュアルの「Coverage Agent Manager (CAM)」セクションを参照)。単一のテスト セッションのカバレッジ情報を保存した個々の .data ファイルへのパスを指定することも、複数のテスト セッションの .data ファイルを含むフォルダーへのパスを指定することもできます。-staticCoverage
: 静的カバレッジ ファイルへのパスを指定します (「静的カバレッジ ファイルの生成」を参照)。-publish
: マージされたカバレッジを DTP に送信します。dottestcli.exe -runtimeCoverage [path] -publish -staticCoverage [path] |
SOAtest とともに dotTEST を使用する場合、テスト実行時に静的カバレッジおよび動的カバレッジ データが自動的に DTP に送信されます。https://docs.parasoft.com にある SOAtest ユーザー ガイドの「アプリケーション カバレッジ」 セクション を参照してください。
動的カバレッジ データの収集を停止するには、以下のいずれかの操作を行います。
コンソールに次のメッセージが表示されている状態で exit
と入力し、dottest_iismanager を停止します。
Write 'exit' and hit Enter to close dottest_iismanager |
ブラウザーに次の URL を入力することで、サービスにリクエストを送信します: http://host:port/shutdown
すべてのセッションが完了しているときにだけ dottest_iismanager を停止してください。サービスを停止すると、アプリケーション カバレッジが収集されなくなるため、カバレッジを収集するテストが実行されている間は、常に dottest_iismanager を実行しておくことが重要です。 |
dottest_iismanager の終了時にエラーが発生し、Web サーバー環境のクリーンアップが行われなかった場合、-stop
パラメーターを指定して dottest_iismanager を実行することで、元の Web サーバー環境および設定を復元してください。
dottest_iismanager.exe -stop |
DTP のカバレッジ エクスプローラーを使用して、テスト実行時のアプリケーション カバレッジを参照できます。 カバレッジ情報の参照についての詳細は、https://docs.parasoft.com にある DTP ユーザー ガイドを参照してください。