テスト ツールのトラブルシューティング (Visual Studio ALM)
コードをテストしていると、何らかの理由でエラーや警告が発生したり、場合によってはテストが失敗することもあります。このトピックでは、その理由と解決策について、いくつか説明します。
テスト実行のトラブルシューティング
テストの実行を妨げる原因として最もよく見られるのは、テスト ファイルなどのテストの実行に必要なファイルの配置ミスです。
リモート テスト。リモート テストの場合は、リモート コンピューターとの通信の問題が原因の場合もあります。この問題を含むテスト レベルや実行レベルのエラーの詳細については、「テスト実行のトラブルシューティング」を参照してください。
ASP.NET 単体テスト。ASP.NET 単体テストを IIS プロセスで実行している場合、セキュリティ向上を目的として、ASP.NET プロセスを非既定ユーザーとして、つまり別のプロセス ID で実行できます。この場合、テストの実行が失敗することがあります。
Web テストのトラブルシューティング。Web テストを実行すると、さまざまなエラーが発生する可能性があります。原因としては、データ バインディング属性の欠落、セキュリティ設定の問題、ファイアウォールの外側にある Web サイトへのアクセスなどが考えられます。詳細については、「Web パフォーマンス テストのトラブルシューティング」を参照してください。
ロード テストのトラブルシューティング。ロード テストを実行すると、さまざまなエラーが発生する可能性があります。原因としては、ロード テスト データベースの問題、ロード テストに設定されたカウンター、テスト エージェントおよびコントローラーの不適切な構成、ロード テストに含まれているいずれかのテストの問題などが考えられます。詳細については、「ロード テストのトラブルシューティング」を参照してください。
厳密な名前のアセンブリの再署名
単体テストを実行する場合、コードをバイナリでテストすることになります。このようなテストでバイナリをインストルメント化しておくと、コード カバレッジ情報を収集できます。詳細については、「方法: コード カバレッジ データを取得する」を参照してください。インストルメンテーション処理により、コード カバレッジ情報を生成するコードがバイナリに追加されます。
テストしているバイナリが厳密な名前のアセンブリである場合、インストルメンテーションによるコードの変更によって署名が無効になります。このため、Visual Studio は、インストルメンテーション処理の直後にアセンブリを自動的に再署名しようとします。厳密な名前のアセンブリの詳細については、「厳密な名前付きアセンブリ」を参照してください。
この再署名が失敗する条件がいくつかあります。こうした条件を回避する方法の詳細については、「アセンブリのインストルメント化と再署名」を参照してください。
コード カバレッジ データと VSPerfMon.exe
コード カバレッジ データを収集するテストの実行と同時に VSPerfMon.exe を実行すると、次のイベントが発生します。
TRACE または SAMPLE オプションを指定して VSPerfMon を実行すると、同時に実行されているテストが失敗し、エラーが [テストの実行の詳細] ページに報告されます。
COVERAGE オプションを指定して VSPerfMon.exe を実行すると、VSPerfMon.exe プロセスが停止します。
どちらの場合も、回避策は VSPerfMon.exe とコード カバレッジ データを収集するテストを同時に実行しないことです。VSPerfMon.exe ツールの詳細については、「VSPerfMon」を参照してください。
同時実行の発生条件
VSPerfMon が実行される一般的なケースは、次のとおりです。
プロファイリング セッションを開始するのに、テストを実行しているインスタンス以外の Visual Studio インスタンスを使用した場合。
コード カバレッジ データまたはプロファイリング データの収集を目的として、VSPerfMon.exe を直接起動したか、VSPerfCmd.exe というラッパーを使用した場合 (こちらが一般的)。
コード カバレッジ データが正しく表示されない
テストのコード カバレッジ データの収集を要求しても、それが表示されない場合、または予期した表示ではなかった場合、次のいずれかの状況に該当している可能性があります。
**コード カバレッジ データが表示されない。**テストの実行中、COM DLL などの特定のバイナリが、テスト配置ディレクトリからではなく、元の場所から読み込まれています。これらのバイナリは同じ場所でインストルメント化される必要があります。テストの実行が成功し、実行レベルの警告が生成されなかったとしても、コード カバレッジ データは収集されません。詳細については、「インストルメンテーション フォルダーの選択」を参照してください。
**コード カバレッジが強調表示されない。**テストを実行し、コード カバレッジ データを収集してテスト結果を表示すると、Visual Studio はソース コード ファイルで該当部分のコードを強調表示して、テストの実行でテストされたコードを示します。カバーされたコード、カバーされていないコード、および部分的にカバーされたコードを示す色を選択できます。強調表示の一部または全部が表示されない場合は、選択されている色がソース コード ファイルの背景色と異なっていることを確認してください。強調表示の色の選択の詳細については、「方法: コード カバレッジ データを取得する」の「コード カバレッジ データの表示の変更」を参照してください。
**コード カバレッジ データが正しくマージされない。**1 つまたは複数の ASP.NET テストの実行を含む結果をマージできますが、[コード カバレッジの結果] ウィンドウでは、ASP.NET データは、単一のマージされたノードにではなく、個別のノードの [マージされた結果] に表示されます。
**マージされたコード カバレッジ データの一部が表示されない。**コード カバレッジ データをマージしたら、それを XML ファイルとしてディスクにエクスポートできます。このファイルを再インポートして追加データとマージすると、一部の統計情報が表示されなくなります。
コード カバレッジ データがインポートされない。コード カバレッジ データをインポートするには、Visual Studio が所定のファイルをディスク上で検索できる必要があります。
**インストルメント化されたバイナリが上書きされる。**手動テストで実行中のプログラムから、コード カバレッジ データを取得する場合があります。目的のプログラムを起動するのに Ctrl キーを押しながら F5 キーを押すと、プログラムのバイナリが再ビルドされます。これにより、インストルメント化されたバイナリが上書きされ、コード カバレッジ データが収集されなくなります。
コード カバレッジ データの収集の詳細については、「方法: コード カバレッジ データを取得する」を参照してください。