はじめに
Visual Studio 2005 Team System(以下、VSTS)がリリースされ、Visual Studioのターゲットは開発者の枠を飛び越えることになりました。これはプロジェクトマネージャーからテスターまでを包括的にカバーし、チーム開発を強力に支援する製品としてリリースされましたが、まだまだ浸透していないように思います。今回は、VSTSのうち、開発者向けにリリースされているVisual Studio 2005 Team Edition for Software Developers(以下、VSTD)に用意されている開発者を支援する機能について、それぞれの概要を紹介します。
対象読者
- .NET Frameworkを利用した開発プロジェクトに携わっている人
- Visual Studio 2005 Team Systemに興味がある人
必要な環境と準備
- Visual Studio 2005 Team Edition for Software Developers、またはVisual Studio 2005 Team Suiteがインストールされていること
VSTD3種類の機能
VSTDには大きく3種類の機能が用意されています。
- 単体テスト機能
- コード分析機能
- パフォーマンス分析機能
単体テスト機能はメソッドに対して行うテスト機能であり、単体テストの実行状況を表示する機能を含んでいます。コード分析機能は開発したソースコードにVSTDであらかじめ決められた規約に対する規約違反がないかをチェックする機能です。パフォーマンス分析機能はアプリケーションを一定間隔で監視し、パフォーマンスを調べる機能です。これらの機能はソフトウェア開発において品質を向上させることに大きく寄与する機能であり、積極的な使用が望まれると思われます。今回はあまり多く解説はしませんがVSTDではこれらの機能の提供に加え、分析結果の保存や共有、他の工程とのシームレスな連携といったメリットを受けることができます。
それでは、VSTDに用意されている3種類の機能について、具体的にどのようなものかについて見ていきましょう。
単体テスト機能
VSTDでの単体テストとはテスト対象のメソッドを呼び出し、予測値と同じ値が返ってくるかどうかの判断をするテストです。単体テスト機能としては単体テストコードの作成と実行、さらに実行結果の管理、コードカバレッジの表示の4つの機能があります。具体的にどのような機能があるのかを、それぞれについて解説します。
テストコードの作成
1つ目のテストコードの作成についてですが、「既存のコードに対するテストコードの雛型を自動生成する機能」があります。テストコードの雛型の作成はコード上からマウスのみで行うことができます(図1)。
図1は単体テスト作成画面で、テスト対象として選択した既存のプロジェクトが表示されています。単体テストのテスト単位はメソッド単位となっていますので、単体テストを作成したいメソッドを選択する事で単体テストコードの雛型を自動生成することができます。また単体テストの作成場所ですが、既存のプロジェクト内ではなくテスト専用のプロジェクト内にすべての単体テストが配置されます(ソリューションに1つもテストプロジェクトがない場合にはVSによって自動生成されます)。
実際のコードとテストコードを切り離せることは大きな魅力ですが、privateやinternal(Visual BasicではPrivateやFriend)アクセス修飾子が付与されたメソッドをテストしたいときはどうアクセスすればいいのかと疑問があると思います。一般的な方法としてSystem.Reflection名前空間のクラスを使用してこれらのメソッドへアクセスする処理を作成する方法が考えられますが、それでは手間がかかってしまいます。そこで単体テスト機能ではこれらのメソッドへのアクセス処理を自動的に生成するプライベートアクセッサが準備されています。プライベートアクセッサはprivateやinternalメソッドへの単体テストの雛型を作成すると同時に作成され、作業者が特に意識することなく、これらのメソッドにアクセスするテストを作成することができます。
テストコードの実行
2つ目のテストコードの実行についてですが、「任意の単体テストを選択して実行する機能」と、「テストの結果を閲覧する機能」があります。図2は単体テスト選択と結果の表示画面です。
任意の単体テストを選択して実行する機能にテストビューがあります。テストビューは、 図2の右ペインにありますが、そこに表示されている任意のテストを選択し、実行ボタンを押すことで任意のテストを実行することができます。テスト結果の表示ですが、実行されたテスト名、テストの合否、エラーメッセージ等は図2の下ペインの[テスト結果]に表示されています。任意のテストを選択してテストを複数実行した場合は、同ペインに複数の結果が表示されます。この画面の左側にチェックボックスがついていますが、この画面からテストを再実行する事もできます。より詳細なテスト結果を見る事もでき、実行時のテスト環境やエラーメッセージなどが確認できます。
実行結果の管理
3つ目の実行結果の管理ですが、テストはテスト用フォルダで実行され、テスト用のアプリケーション構成ファイル(app.config)や、テスト用データ(mdfファイルなど)もテスト用フォルダにコピーして使用されます(テスト用データの利用にはテストの実行構成の設定が必要です)。実行結果の履歴もすべて、テスト用フォルダに格納されます(図3)。この仕組みにより過去のテスト結果 がいつでも参照できます。テストの実行の度に履歴がたまっていくので、実行結果が不要になった場合はフォルダから直接履歴を消す必要があります。
コードカバレッジ
4つ目のコードカバレッジですが、対象のメソッドがどれだけ単体テストを実行されたかのデータを取得し、分かりやすく表示する機能で、単体テストの実行状況を容易に把握することができます。表示の方法は実行部分と未実行の部分のソースコードを特定の色で塗りつぶす方法(図4)とカバー率を表で示す方法との2種類があります(図5)。
ソースコードは規定値では青、ピンク、薄いピンクの3色で塗り分けられます(図4)。青は単体テストが実行されたコード、ピンクは未実行のコード、薄いピンクは一部実行されたコードを示します。表ではテスト対象の階層ごとにカバー率などが数値で表示されます(図5)。また表に表示されたメソッドをクリックすることにより、対象メソッドのコードへ容易に移動することもできます。カバー率ですが100%を目指すことは現実的ではないと考えられますので、目標とするカバー率を話し合って決めておくことをお勧めします。