TFSに結果を保存しよう
単体テストの結果は「TestResults」フォルダ内に保存され、同時に実行時のテスト環境も新規フォルダに保存されます(図5)。
図5ではTestResultsフォルダ下に、.trxの拡張子のついたファイルと、同じ名前のフォルダとが複数個あることがわかります。.trxの拡張子の付いたファイルがテスト結果です。同名のフォルダにはdllファイルやテスト実行時のデータベースファイルといった周辺ファイルが格納されているので、必要に応じて削除していく必要があると思われます。しかし削除してしまうと他の人からテスト結果を参照することができなくなります。
解決策として結果をTFSに格納し、チーム全体で共有することが挙げられます。TFSに格納するのは非常に簡単で、「テスト結果」ウィンドウの「発行」アイコンを選択し、立ち上がってきたダイアログでコードカバレッジを含めるか、といった選択を選ぶだけです。「発行」アイコンは図6の真ん中あたりの押し込まれているアイコンです。
さて、個人が異なった場所をテストしている場合、プロジェクト全体のコードカバレッジを参照したくなる時もあると思います。そんな時はコードカバレッジのマージ機能を利用してテスト全体のコードカバレッジデータを取得できます。
操作は簡単、図7にあるように「コードカバレッジの結果」ウィンドウで「結果のマージ」をクリックし、マージしたいテスト結果結果を選択するだけです。マージされた結果は「マージされた結果」から見る事ができます。
自動ビルドに単体テストを組み込もう
作成したさまざまな単体テストは、Team Foundation Server(TFS)のチームビルド機能と組み合わせることによって、BVT(Build Verification Test)として利用できるようになります。ただし、チームビルドと単体テストを組み合わせるためには、単体テストなどのテストリストが必要になるため、これを作成可能なテストマネージャ機能が必要になります。そのため、Visual Studio 2005 Team Edition for Software Developers(以下VSTD)ではなく Visual Studio 2005 Team Edition for Software Testers(以下VSTT) が必要になりますので、注意してください。
それでは、作成した単体テストをチームビルドの一部として利用するための手順について見ていきたいと思います。
まずは、VSTT(またはTeam Suite)を利用してチームビルドに含める単体テストプロジェクトが含まれるソリューションを開きます。ここで、VSTTの機能であるテストマネージャを利用してテストリストを作成します。チームビルドを行う際、複数のテストリストを選択できますが、それぞれのチームビルド用にわかりやすい名前を付けたテストリストを作成することをお勧めします。
次の図はチームビルド用に“BVT”という名前のテストリストを作成し、ビルド内で行うすべての単体テストをリスト内に含めようとしているものになります。
テストリストの作成が終了したら、これをTFSのソースコード管理に登録しておく必要があります。登録の際、複数のチームプロジェクトがある場合は必ずビルド対象のソリューションが登録されているチームプロジェクトと同じチームプロジェクトに登録するようにしてください。これは、チームビルドがあるサーバにあるファイルではなく、TFSのソースコード管理に登録されている一連のファイルを利用して動作するためです(チームビルドを利用するための詳細な方法については回を改めて紹介します。概要だけでも参考にしたい場合には、「Visual Studio 2005 Team Systemを使ってみよう-第6回 TFSで行うチーム開発、プロジェクトマネジメント」をご参考ください)。
“CodeZineSample”という名前のチームプロジェクトに、ビルド対象プロジェクトである“Bank”プロジェクトがあるとします。テストプロジェクトである“TestProject1”プロジェクトを上記の通りにソースコード管理に追加した場合はソースコード管理画面に図7のように表示されます。
準備が整ったら、新しいチームビルドを作成します。チームエクスプローラから新しいチームビルドの作成を開始すると、ウィザードの最中に「ビルドオプションの選択」という画面が現れます。ここで、[テストの実行(BVTの実行など)]にチェックを入れることで、ソースコード管理上に登録されているテストリストから実行するテストを選択することができるようになります。
次の図は先ほど作成した“BVT”というテストリストを利用してその中に含まれる単体テストをチームビルドの作業の一環として実行するよう設定をしているものになります。
これらの設定を行うことによって、通常は開発者が自分の作成したメソッドのために利用していた単体テストをそのまま利用して結合ビルドの検証の一部として活用できるようになります。
開発者が利用するためだけの単体テストであればNUnitというオープンソースの単体テストフレームワークを利用しても作成と実行が可能です。しかし、VSTSの単体テスト機能を利用し、製品間のシームレスな連携という大きなアドバンテージを活かし、チームビルドにまで活用するということを見据えたうえであれば、VSTSの単体テスト機能を利用して得られる価値がとても大きなものになり得ると思います。
まとめ
単体テストについて基本的な使い方とTFSとの連携について説明しました。単体テストとしての機能の他に、自動ビルドに組みこむといったTFSとの連携でより魅力的なツールになることがお分かりいただけたのではないでしょうか。本稿がテスト自動化を考える際の検討材料になれば幸いです。






