連載:Visual Studioデバッグ手法

第2回 Visual Studio 2010の新機能「IntelliTrace」

亀川 和史
2010/07/28
Page1 Page2 Page3 Page4

チーム開発におけるIntelliTrace

 1人でIntelliTraceを使用してももちろん効果はあるが、やはりチームで使用してこそ真価が発揮できる。前述したように、「この手順で例外が発生した」「こちらでは発生しない。ここを確認してくれ」という長いやり取りを経験したことがあるのは筆者だけではないはずだ。

 例外メッセージだけで問題の内容を理解できることももちろんあるが、大半のそうではないケースでは、IntelliTraceが生成する.iTraceファイルが実行時の情報そのものなので格段に分かりやすい。これをチーム開発で生かす方法を紹介する。

 Visual Studioには「Test Manager」(Microsoft Test Manager 2010)というテスト管理ツールが付属している。Test Managerとは、Team Foundation Serverと連携して、テスト方法および、テスト実施結果の取りまとめを行うためのものだ。

 Test Managerは、テスト環境を管理する「ラボ センター」と、テストを管理する「テスト センター」の2つの機能がある。IntelliTraceを使う場合、ラボ・センターで[新しいテストの設定]を作成するときのロールの設定で(以下の画面のように)IntelliTraceを有効にする必要がある。

Test Managerのラボ・センターで[新しいテストの設定]作成時のロールの設定:IntelliTraceの有効化
ラボ・センターとテスト・センターは上部のバーから切り替えられる。この例では、[ラボ センター]を開いたうえで[テストの設定]タブを開いている。この画面は、テストの設定を新規作成して、[全般]ページ、[ロール]ページを設定した後に表示される[データと診断]ページである。このページ内の[IntelliTrace]チェックボックスの行の右端にある[設定]ボタンをクリックすると、IntelliTraceで採取するイベントを設定できる。そこで設定できるイベント項目はVisual Studioと同じである。

 なお、IntelliTraceは.NET Frameworkで作られたプログラムのみを対象にしているので、ASP.NETアプリケーションの場合、Webブラウザを起動してキャプチャしただけではIISのIntelliTrace実行データを採取することはできない。よって、ASP.NET WebアプリケーションなどのIISで実行されているアプリケーションを対象とする場合、リモートで(Webサーバから)取得する必要がある。以下のドキュメントに具体的な設定方法が紹介されている。

 以下の画面は、テスト・センターを起動した状態である。すでに手動テストを1つ作っている。

Test Managerのテスト・センター
ラボ・センターからテスト・センターに切り替えるには、上部のバーから[テスト センター]を選択すればよい。この例では、[テスト センター]を開いたうえで[テスト]タブを開いている。この画面は、左側ペインからテスト計画/テスト・スイートである「評価テスト」を選択して、右側ペインからテスト・ケースを1つ選択している状態。
  手動テストを実行する。
  テスト・ケースを開き、編集する。

 テスト・センターの[テスト]タブでテスト・ケースを選択して[実行]ボタンを押せば、選択されたテスト・ケースが実行される。今回、事前に作ってあるテスト・ケースは手動テストなので、テスト実行の確認メッセージが次の画面のように表示される。

手動テスト実行時に表示される確認メッセージ
テスト・センターで手動テストを実行しようとすると、このような確認メッセージが表示される。
  [テストの開始]ボタン。これを押してからテスト対象プログラムを起動する。
  同じテストを複数回実行するとき、前の実行情報を上書きするかどうかを設定する。

 この確認メッセージの[テストの開始]ボタンを押すと、以下の画面(テスト・ランナー)が表示される。

手動テストの実行を管理する[テスト ランナー]
手動テスト実行時に表示される確認メッセージで[テストの開始]ボタンを押すと、このような画面が表示され、手動テストが実行される。
  バグの作成を行う。
  スクリーン・キャプチャを撮影する。
  テスト項目と期待された結果が等しかったかどうかを記録する。失敗の場合(=テスターの期待した結果ではない場合)、▼をクリックしたときに表示されるメニューから[失敗]を選択する。正常かどうかが疑わしい場合はスクリーン・キャプチャも併せて撮る。
  操作記録を再生する。

 Visual Studioと同じパターンで操作すると、最後の[発注]ボタンを押したところでアプリケーション・エラーが発生する。このような場合は、次の画面のように[発注]ボタンを押すというテスト項目を[失敗]に変更して、具体的にどのような現象が起きたのか、コメントを追記する。

手動テストの実行結果の入力
パス(=期待されたとおり)か、失敗(=テスト実施者が期待していない状態)のいずれかを選択する。

 以下の画面はコメントの記述例。

[テスト ランナー]で手動テストが失敗した項目の入力例
手動テストで失敗したテスト項目は、結果を[失敗]に設定して、具体的にどのような現象が起きたのか、コメントを追記する。
  失敗した操作を[失敗]にする。
  失敗した場合、コメント追記欄が自動的に表示される。具体的にどんな現象が発生したのかをここに記述できる。
  このテストを実行した際の添付ファイルと、発行したバグの一覧を見ることができる。

 なお、この手動テストは手順を記録されているため、Test Managerの[再生]ボタンを押せば再度同じ手順を実行できる。

 最後に[テスト ランナー]のテスト手順の末尾にある[テストの終了]を押すと、次の画面のように、添付ファイルおよび、このテスト実施中に発行したバグの一覧を参照できる。添付ファイルの中にIntelliTraceが実行中に採取した.iTraceファイルも自動的に添付されている。

[テストの終了]後に参照できる添付ファイルとバグの一覧
[テスト ランナー]のテスト手順の末尾にある[テストの終了]を押すと、この画面のように、添付ファイルおよび、このテスト実施中に発行したバグの一覧を参照できる。
  さらに追加したいファイルがある場合、添付ファイルの追加から追加することもできる。
  生成された.iTraceファイル。クリックすればVisual Studioが起動して、デバッグ情報を確認できる。
  発生した現象に対して登録したバグ。
  この[バグ作成]ボタンをクリックすれば、バグ作成画面が起動される。

 [バグ作成]ボタンを押すと、以下の画面が表示される。IntelliTraceで再現できるとはいえ、開発者に現象がわかるように具体的に書けばバグ修正までの時間が短くなるだろう。

新しいバグの登録
[テスト ランナー]によるテスト終了後の画面で[バグ作成]ボタンを押すと、この[新しいバグ]ダイアログが表示される。
  [タイトル]はバグの概要が想像できる短い文がよい。
  [優先度]を選択する。
  [深刻度]を選択する。

 テストを行っている人間には重要に思えても、開発者は重要だと考えないことがあるなど、人によって[深刻度]の判断は異なる可能性がある。この問題を回避するために、例えばアプリケーションがクラッシュするならば「最大」、表示の誤りであれば「影響度小」というように、[深刻度]はテスト担当者と開発者で合意しておく必要がある。例えば深刻ではないが、画面上の表示がエンド・ユーザーに受け入れられないという場合などでは、対応の[優先度]を上げて、コメントで「なぜ優先しなければならないか」を補足すれば開発者も納得しやすい。

 生成された.iTraceファイルをダブルクリックすると、以下の画面のようにVisual Studioが起動し、.iTraceファイルの内容からデバッグの実行が可能になる。

Visual Studioにより開かれた.iTraceファイルの内容

 Test Managerから(Team Foundation Serverに)バグ項目を発行することもでき、テスト・ケースと関連付けたバグ項目には.iTraceファイルも添付されているので、開発者は確実にバグを再現させた状態でデバッグを行うことができる。この機能は、チーム開発には重要だ。

 ただし、そのテスト・ケースがチーム・ビルドに関連付けられていない場合、どの時点のソース・コードから生成されたテスト結果かの判断がつかない。そのため、開発者側の最新のソース・コードから生成したモジュールでは、結果が食い違うことも考えられる。本稿では紹介しないが、チーム開発ではチーム・ビルド機能も併せて活用してほしい。

 最後に、Windows Azure開発におけるIntelliTraceの活用方法を紹介する。


 INDEX
  [連載]Visual Studioデバッグ手法
    1. IntelliTraceとは?
    2. IntelliTraceでのデバッグ実践
  3. チーム開発におけるIntelliTrace
    4. Windows AzureとIntelliTrace

インデックス・ページヘ 「連載:Visual Studioデバッグ手法」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH