Team System におけるテスト駆動な開発スタイル
こんにちは。VSTS では単体テストをはじめとする開発者のためのテスト機能が提供されています(* Team Edition for Developers, Team Suite)。これらを活用することで、テスト駆動型な開発スタイルを実践することができます。
テスト駆動型な開発スタイルでは、まず想定できるオーソドックスなテストコードを記述し、それからプログラムコードを記述、そしてテストを追加しながら、またプログラムコードを見直しやリファクタリングし、精度を高めていくというような感じをとります。この主な利点としては、常にテストを意識しているため、作成されるプログラムコードが想定される挙動をすべて網羅した信頼性の高いものになる傾向があるということなどが挙げられます。
単体テストのレベルで信頼性を高めることで、品質が維持・向上できるというだけではなく、後工程(結合テストやシステムテスト)で単体テストレベルのバグに悩まされることが少なくなります。これは、(本来その工程で発見するべきバグを)後工程で発見したバグの改修コストが高くつくというだけではなく、それは予期せぬ(予測可能でない)再作業/手戻り(Rework)を生み、プロジェクト計画の変更やリリースへの大きなリスクとなることがあります。それだけではなく、構成・変更管理上のリスクも負うことになります。
今までテストコードを記述していない開発スタイルだった場合には、余計な作業が増え、開発工数が増加したように思えてしまうかもしれません。しかしながら、一般に開発プロジェクトの約40%が実は再作業/手戻り(Rework)に費やされているとも言われています。これを考えると計画可能な(テストを含んだ)開発工数と予測できない再作業(Rework)どっちがリスクがないか、リーズナブルなのかはおのずと答えがでるのではないでしょうか。
さて、前置きが長くなりましたが、VSTS を使ってテスト駆動型な開発スタイルをやってみた場合の作業の流れをスクリーンショットを交えて書いていきたいと思います。ここでは Visual Studio 2008 (a.k.a. Codename "Orcas") Professioanl Edition Beta1 を用いています。また、細かい説明は省略していますので、流れに注目して読んでいただければと思います。
■とりあえずテストプロジェクトをビルドする:
※テスト対象メソッドが実装されていないのでエラーがでます
■エラーとなっているテスト対象メソッド(まだ実体がない)を選択し、「Generate Method Stub」を実行する:
■テスト追加する(たとえば例外が発生するようなテストコードとか):
だいたいこんな感じで、やっていけば都度チェックし、品質を見ながら開発作業が行えます。
VSTS 2005 での単体テストでは、アセンブリやアクセサアセンブリなどが都度保存されるためディスクリソースを消費する傾向がありましたが、VS 2008 では、それらを保存しない(デプロイしない)という設定ができるようになりました(Beta2 以降で実装といううわさでしたが、Beta1 から使えていますね)。
今回は、テストメソッド単位での実行にしましたが、テストコードファイルのテストメソッドを一度に全部実行することも簡単に行えます。またショートカットキーが充実しているので、ショートカットキーで、たとえば一度にテストを実行するなんてこともできます。
どんどん便利になってきてます。テストの開発・実行の生産性向上がなされているといっていいですね(^^)
# ほんとは、「VSTS とは」とか、コードカバレッジやプロファイラ、Web テスト、TFS、モデリングなどを書こうと思ったのですが、自宅の今書いているPC上に入っている Beta1 で遊んでいたらついまた単体テストネタになってしまいました(^^;
ながさわ