このセクションの内容
はじめに
IIS サーバー上にデプロイされた実行中の Web アプリケーション サーバーで手動または自動での機能テストを実行し、マネージド コードのカバレッジ データをモニターおよび収集できます。
dotTEST カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。dotTEST は収集されたカバレッジ データを処理し、DTP に送信される coverage.xml ファイルを作成します。
テスト実行ツールの結果 (SOAtest のテスト、dotTEST によって実行されたテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイルとレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。
ソース管理システムを使用する場合、適切にソース管理システムを設定します。「ソース管理システムの設定」を参照してください。
前提条件
カバレッジを収集するには、以下のコンポーネントが必要です。
- Internet Information Services (IIS) バージョン 7.5 以上
- Coverage Agent Manager (CAM) またはSOAtest
カバレッジ収集のためのテスト対象アプリケーション (AUT) の構成
AUT の準備には、以下の手順が含まれます。
- 任意: ソース コードの情報を含む静的カバレッジ ファイルを生成します。静的カバレッジ ファイルには、ユーザー クラス、メソッド、行などの情報が記録されます。詳細は「ソース コードの情報を含む静的カバレッジ ファイルの生成」で説明されています。
- AUT にカバレッジ エージェントをアタッチします。「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ」を参照してください。
テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ
- IIS がインストールされ、アプリケーションがデプロイされているマシンに <INSTALLATION_DIR>\integration\coverage\agent ディレクトリをコピーします。
- 管理者権限でコンソールを実行します。
このマシンで Agent Client ツールを実行し、IIS 内での実行時カバレッジ収集を有効にします。
agent_client.exe
Agent Client に追加のオプション指定が必要な場合があります。「Agent Client オプション」を参照してください。
agent_client は、Web サーバー (IIS) の環境を初期化し、サービスのように振る舞い、ユーザーがテストを実行してカバレッジを収集することを可能にします。次のメッセージが表示されている間、サービスが待機し、コマンドを受け付けます。
Write 'exit' and hit Enter to close agent_client
テスト対象 Web サイトまたはアプリケーションがまだロードされていないときでも、セッションおよびテストを開始できることに注意してください。
- このマシンのファイアウォールの設定で、ポート 8050 (カバレッジ エージェントのデフォルトのポート) での HTTP トラフィックが許可されていることを確認します。デフォルトのポートを使用できない場合は、カバレッジ エージェントのポート番号を変更できます。
- Web サイトまたは Web アプリケーションを開きます。
次のアドレスに移動し、カバレッジ エージェントのステータスを確認します。
http://host:8050/status
次のレスポンスが返されるはずです。{"session":null,"test":null}
HTTPS 経由での Coverage Agent への接続
デフォルトでは、カバレッジ エージェントは 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 証明書を利用できます。
SSL 証明書の削除
デフォルトでは、Agent Client はカバレッジ エージェント用に設定された証明書を自動的に処理します。手動で証明書を削除するには、Certmgr.exe ツールを起動し、Personal> Certificates に格納された証明書を削除します。
-unregister
スイッチを指定して Agent Client でカバレッジ サービス ポートの登録を解除する場合、-useSsl
および -removeCertificate
スイッチを追加して SSL 証明書を削除する必要があります。
agent_client.exe -unregister -port 8050 -useSsl -removeCertificate
こうすると、ポート番号から SSL 証明書が削除されます。これで、ストレージから手動で証明書を削除できるようになりました。
複数ユーザーからのカバレッジ収集
1 つの Web アプリケーションに同時にアクセスする複数のユーザーのカバレッジ情報を収集できます。それには、-multiuser
スイッチを指定して Agent Client を起動します。
agent_client.exe -multiuser
詳細については、DTP のマニュアルの Coverage Agent Manager (CAM) セクションを参照してください。
Agent Client のアイドル タイムアウト値の変更
デフォルトでは、Agent Client のアプリケーション プール プロセスは 20 分のアイドル タイムが経過するとシャットダウンしますが、このことがテスト セッションに悪影響を与える可能性があります。デフォルトのアイドル タイム値を変更し、シャットダウンを防ぐことによって、アプリケーションを操作するユーザーがテスト セッション中に予期しないサーバーの停止および再起動に遭遇しないようにできます。
- IIS Manager を起動します。
- Application Pools ノードを開きます。
- Web アプリケーションが使用するプールを選択します。
- [Actions] パネルの [Advanced Settings] をクリックします。
- [Process Model ] セクションで [ Idle Time-out (minutes)] の設定をテストに適した値に変更します。
Agent Client のオプション
オプション | 値 | 説明 |
---|---|---|
-scope | <path> | スコープ設定ファイルへのパスです。デフォルト以外のスコープを使用する場合に必要です。「dottestcli を使用したカバレッジ スコープのカスタマイズ」を参照してください |
-agentTimeout | <miliseconds> | カバレッジ エージェントとの接続のタイムアウト時間を指定します。マシンの性能に合わせて値を調整してください。デフォルト値は 1500 ms です。 0 または負の値を指定すると、接続はタイムアウトしません。そのため、ツールの処理が非常に遅くなったり、異常停止する場合があります。 |
-port | <port number> | デフォルトのポートが使用できない場合に agent_client の起動時に使用するポート番号を使用します。 |
-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 | Agent Client の 'appid' を出力します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | |
-removeCertificate | -unregister スイッチを使用して手動でポートの登録を解除する場合に、SSL 証明書を削除します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 | |
-skipvalidation | 自己署名 SSL 証明書の使用を有効化します。「HTTPS 経由での Coverage Agent への接続」を参照してください。 |
テストを実行してランタイム カバレッジを収集する
SOAtest を使用して機能テストを実行することも、Coverage Agent Manager (CAM) とともに手動でテストを実行することもできます。テスト セッション実行の詳細については、SOAtest ユーザー ガイドまたは CAM のマニュアルを参照してください。
テスト実行時の処理
- SOAtest はランタイム カバレッジを収集し、静的カバレッジとマージしたデータを DTP にアップロードします。
- CAM はランタイム カバレッジとテスト結果を収集します。これらは手動でダウンロードする必要があります。次に行う操作
- 手動で DTP にテスト結果をアップロードします。「DTP への結果のアップロード」を参照してください。
- ランタイム カバレッジと静的カバレッジをマージし、DTP にアップロードします。「カバレッジ レポートの作成と DTP へのデータのアップロード」を参照してください。
実行時カバレッジ データ収集の停止
実行時カバレッジ データの収集を停止するには、以下のいずれかの操作を行います。
コンソールに次のメッセージが表示されている状態で
exit
と入力し、agent_client を停止します。Write 'exit' and hit Enter to close agent_client
ブラウザーに次の URL を入力することで、サービスにリクエストを送信します:
http://host:port/shutdown
すべてのセッションが完了しているときにだけ agent_client を停止してください。サービスを停止すると、アプリケーション カバレッジが収集されなくなるため、カバレッジを収集するテストが実行されている間は、常に agent_client を実行しておくことが重要です。
agent_client の終了時にエラーが発生し、Web サーバー環境のクリーンアップが行われなかった場合、-stop
パラメーターを指定して agent_client を実行することで、元の Web サーバー環境および設定を復元してください。
agent_client.exe -stop
カバレッジ レポートの作成と DTP へのデータのアップロード
「カバレッジ レポートの作成と DTP へのデータのアップロード」を参照してください。。
既知の制限事項
- テスト セッションで収集されたカバレッジ情報をダウンロードできます。テスト セッションがアクティブでないときに収集されたカバレッジ情報はダウンロードできません。
- 1 つの Web アプリケーションに複数のユーザーが同時にアクセスした場合、複数のユーザーのカバレッジデータが混在する場合があります。個々のユーザーに正しくカバレッジが関連付けられるようにするには、マルチユーザー モードを有効にします (「複数ユーザーからのカバレッジ収集」を参照)。
- マルチユーザー モードを有効にするには、HTTP ヘッダーでユーザー固有の情報を提供するため、HTTP または HTTPS プロトコルが必要です。
- マルチユーザー モードでは、WCF ベースのアプリケーションのカバレッジを収集するには、ASP.NET 互換モードが有効化されている必要があります。
- マルチユーザー モードでは、同じ Web アプリケーションにアクセスしている他のユーザーの余分なカバレッジ情報が、「デフォルト」ユーザー (ID が指定されていないユーザー) に集約される場合があります。
- マルチユーザー モードでは、マルチユーザー アプリケーションから収集されたカバレッジを個々のユーザーに割り当てる機能には制約があります。子スレッドのカバレッジ データは、実際にアプリケーションにアクセスしたユーザーではなく、「デフォルト」ユーザーに割り当てられます。
- Web アプリケーションの初期化から収集されたカバレッジ データは、特定のユーザーではなく「デフォルト」ユーザーに割り当てられます。
- WebSite プロジェクトは IIS サーバーによってリコンパイルされ、ターゲット アセンブリの名前が変わる可能性があるため、アプリケーション カバレッジ スコープ ファイルを使用できません。Web アプリケーションでは、スコープ ファイルが使用できます。