家永さんからの質問
第3回、第4回のCustomer Testのところで「進捗管理」というキーワードが出てきましたが、ウォーターフォールの場合のバラバラで作ってあとで結合でがんばってという、そういう進捗管理とは何か違うんですか?
すみません、そこの説明は省いてしまっていました。本連載は、繰り返し型の開発をイメージして話をしています。
繰り返し型の開発とは?
繰り返し型の開発では、たとえば1年間で何か開発するという場合に、1年間丸々使って最後にあるものができるというようなやり方ではなく、たとえば2ヵ月、3ヵ月ごとにシステムの開発する範囲を区切って、段階的に動くものをお客さまに納品していきます。もしくはお見せしていきます。
要件定義があって、外部設計があって、内部設計があってというフェーズを経る場合でも、それらを1年の間で何ヵ月か要件定義を行って、何ヵ月か設計を行ってというような形で行うのではなくて、1年間を数回に区切って、その数回の区切りの中で一つ一つのフェーズを毎回行っていくのが繰り返し型の開発です。
もう少し具体的な例で説明すると、2ヶ月区切りで1年間かけて顧客管理システムを作る場合、一番最初のリリースでは、ログインして、今ある取引先顧客の一覧を見れるだけの機能だけを作る、というような進め方をします。
その際の、「顧客一覧がこういうデータの場合にはこういう顧客一覧が欲しいね」というような視点のテスト、その機能が通ればそのイテレーション(繰り返しの1単位ですね)は終了しています、機能は満たされていますというような指標となるテストをCustomer Testingと呼んでいるのです。
なぜ進捗管理をテストで行うのか?
ではなぜ進捗管理をテストで行うのがよいのかというと、これはテストというものが、通る/通らないの二値しか持たないからです。
受け入れテストが通っていれば、その機能は満たされています。通っていなければ、どんな理由があってもその機能は満たされていません。このことがハッキリしているので、開発者はそのテストを通すことを目標にプロジェクトを進めていくことができます。
さらにこれは、開発者やお客さまだけではなく、誰が見てもハッキリとわかるしくみですので、進捗管理にテストを使うということは非常に優れています。
次回はテスト駆動開発のマスターの仕方について
今回までで、テスト駆動開発の説明は一区切りです。次回、次々回は、テスト駆動開発のマスターの仕方についてです。