はじめに
前回、高品質なソフトウェアを作るためにテスト駆動開発が有効であることを述べました。また、テスト駆動開発を効率的に進めるためにVisual Studio 2005(以下、VS2005)Team Systemの機能が有効であることを紹介しました。今回は前回述べた機能をもう少し具体的に紹介し、その有効性を検証していきます。
- ユニットテスト
- コード分析
- リファクタリング
ユニットテスト
テスト駆動開発では「テストコードの作成 → テストの実行 → ソースコードの修正 → テストの実行・・・」というステップをリズミカルにこなしていきます。
しかし各ステップの実施やステップ間の遷移に時間がかかっていてはリズムに乗ることはできません。よってテスト駆動開発におけるステップを効率的に実施するためには、テスティングフレームワークが重要となります。
テスティングフレームワークには以下の4つの要素が必要と考えます。
- ソースコードが効率的に作成・修正できること
- テストコードが効率的に作成・修正できること
- テストが効率的に実施できること
- 上記の作業間をシームレスに遷移できること
それではVS2005 Team Systemのユニットテストが、表2にあげた1〜4の要素を満たしているかを検証していきましょう。例として、住所の検索機能をもったソフトウェア作成の過程を取り上げます。
まず、ユニットテストを使用した開発中のサンプルコードを図1に示します。
図1のテストコードは、「ソースコードが持つべき機能(=仕様)」を表現しています。このように、プログラミング言語を使用して記述することで曖昧さのない形で仕様を表現することが可能です。
図1のソースコードは恥ずかしくなってしまうような記述になっていますが、開発の最中ということで、あえてこのようにしています。コンパイルはできますので、テストを実行することが可能です。VS2005 Team Systemのメインメニューから「Test → Start Selected Test Project with(without) Debugger」を選択すればテストがはじまります。
テストの実行結果は図2のようになります。
図2のTest Resultウィンドウにはエラーがあった状態、つまりレッドの状態であることが表示されています。また、各テストケースの結果も一覧表示されています。テストケース「SearchAddressByZipCodeTest」には成功していますが、テストケース「SearchAddressByInvalidZipCodeTest」では仕様通りの動作をせず、失敗していることがわかります。
現在はレッドの状態ですので、すべてのテストケースが成功するようにソースコードを修正し、グリーンの状態を目指していきます。その際のテスティングフレームワークに必要な要素が、VS2005 Team Systemのどの機能にあたるのかを見ていきます。

