このセクションの内容

はじめに

IIS サーバー上にデプロイされた実行中の Web アプリケーション サーバーで手動または自動での機能テストを実行し、マネージド コードのカバレッジ データをモニターおよび収集できます。 

.NET Web アプリケーション

dotTEST は IIS サーバーにデプロイされた .NET Web アプリケーションのカバレッジを収集できます。また、dotTEST に付属の coverage_wizard.exe ツールを使用することもできます。詳細は「スタンドアロン アプリケーションのアプリケーション カバレッジ」を参照してください。

dotTEST カバレッジ エージェントは、テスト対象アプリケーション (AUT) にアタッチされ、AUT の実行されたコードをモニターします。AUT にカバレッジ エージェントをアタッチすると、REST API が公開され、テストおよびテスト セッションの開始および終了をマークできるようになります。テスト実行時には、カバレッジ エージェントとのやりとりが動的カバレッジ マップに書き込まれます。このマップには、実行されたコード行を示すマーカーが記録されます。dotTEST は収集されたカバレッジ データを処理し、DTP に送信される coverage.xml ファイルを作成します。 

テスト実行ツールの結果 (SOAtest のテスト、dotTEST によって実行されたテスト、手動テストなど) も report.xml という形で DTP に送信されます。カバレッジ データ ファイルとレポートのビルド ID が一致すると、DTP はそれらのデータを関連付け、カバレッジ情報に表示します。

ソース管理システムを使用する場合、適切にソース管理システムを設定します。「ソース管理システムの設定」を参照してください。

前提条件

カバレッジを収集するには、Internet Information Services (IIS) バージョン 7.5 以上が必要です。

カバレッジ収集のためのテスト対象アプリケーション (AUT) の構成

AUT の準備には、以下の手順が含まれます。

  1. 任意: ソース コードの情報を含む静的カバレッジ ファイルを生成します。静的カバレッジ ファイルには、ユーザー クラス、メソッド、行などの情報が記録されます。詳細は「ソース コードの情報を含む静的カバレッジ ファイルの生成」で説明されています。
  2. AUT にカバレッジ エージェントをアタッチします。「テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ」を参照してください。

テスト対象アプリケーション (AUT) へのカバレッジ エージェントのアタッチ 

  1. IIS がインストールされ、アプリケーションがデプロイされているマシンに <INSTALLATION_DIR>\integration\coverage\agent ディレクトリをコピーします。
    エージェントをホーム ディレクトリ (%USERPROFILE% ディレクトリ) にデプロイすることは、We ベースのアプリケーションからのカバレッジ収集を妨げる可能性があるため、推奨されません。
  2. 管理者権限でコンソールを実行します。
  3. このマシンで Agent Client ツールを実行し、IIS 内での実行時カバレッジ収集を有効にします。

    agent_client.exe

    Agent Client に追加のオプション指定が必要な場合があります。「Agent Client オプション」を参照してください。

    agent_client は、Web サーバー (IIS) の環境を初期化し、サービスのように振る舞い、ユーザーがテストを実行してカバレッジを収集することを可能にします。次のメッセージが表示されている間、サービスが待機し、コマンドを受け付けます。  

    Write 'exit' and hit Enter to close agent_client 

    テスト対象 Web サイトまたはアプリケーションがまだロードされていないときでも、セッションおよびテストを開始できることに注意してください。

  4. このマシンのファイアウォールの設定で、ポート 8050 (カバレッジ エージェントのデフォルトのポート) での HTTP トラフィックが許可されていることを確認します。デフォルトのポートを使用できない場合は、カバレッジ エージェントのポート番号を変更できます。
  5. Web サイトまたは Web アプリケーションを開きます。
  6. 次のアドレスに移動し、カバレッジ エージェントのステータスを確認します。  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

Agent Client のアイドル タイムアウト値の変更

デフォルトでは、Agent Client のアプリケーション プール プロセスは 20 分のアイドル タイムが経過するとシャットダウンしますが、このことがテスト セッションに悪影響を与える可能性があります。デフォルトのアイドル タイム値を変更し、シャットダウンを防ぐことによって、アプリケーションを操作するユーザーがテスト セッション中に予期しないサーバーの停止および再起動に遭遇しないようにできます。

  1. IIS Manager を起動します。
  2. Application Pools ノードを開きます。
  3. Web アプリケーションが使用するプールを選択します。
  4. [Actions] パネルの [Advanced Settings] をクリックします。
  5. [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 を使用して機能テストを実行します。SOAtest はテスト実行中に実行時カバレッジを収集し、データを DTP に送信します。テスト セッション実行の詳細については、SOAtest ユーザー ガイドを参照してください。
  • アプリケーションにカバレッジ エージェントをアタッチしてテストを実行します。実行時カバレッジ ディレクトリにカバレッジが収集されます。次に、実行時カバレッジと静的カバレッジををマージし、マージされたデータを DTP にアップロードします。詳細は「カバレッジ レポートの作成と DTP へのデータのアップロード」を参照してください。

実行時カバレッジ データ収集の停止

実行時カバレッジ データの収集を停止するには、以下のいずれかの操作を行います。

  1. コンソールに次のメッセージが表示されている状態で exit と入力し、agent_client を停止します。

    Write 'exit' and hit Enter to close agent_client
  2. ブラウザーに次の 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 アプリケーションでは、スコープ ファイルが使用できます。
  • No labels