« 定例会(2008/08/22) | トップページ | お仕事:テストドリブンは高い?、安い? »

お仕事:テストドリブンは常にお得?

「テストドリブン開発」(TDD)ってやつですね。
前に、アスペアの中途採用の応募を戴いた方と面談をした際に、「TDDのプロジェクトなんて見たこと無い」とおっしゃってました。  アスペア社内で見る限りでは、TDDを全く経験していない人間がいたかどうか?  まあ、確かに「厳密な意味でのTDDって何だ?」とまで問われると答えに困ります。  JUnitでテストコードを書いたことが有れば、TDD経験ありって言えるのか?、と問われれば、それは違うでしょうし...

そもそも、何故「テストドリブン」なんでしょう?
「やった事が無いから」、「やってみたいから」ってケースも、未だにゼロではないのかも知れませんが。

適用して「吉」のケースは、
システム(或いは開発対象のコンポーネント、論理層など)の寿命が長い、性能改善の必要がある(要求が高い)、品質重視(金融系など)、リファクタリングを予定している(他の項目とリンク?)、技術面でのリスクが見込まれる(部分的な性能低下やリソースの異常消費など)、細部の仕様変動が見込まれる、などで、要は【機能の改変無しで内部構造を複数回変えることが見込みまれる場合】になると思います。

適用して「凶」のケースは、
短命なシステム、とにかくリリースを急ぐ、性能目標が低い、技術面では枯れていてリスクが少ない、割と大きな仕様変動が見込まれる、テストケース数が少ない(単純で難度が低いケースばかり)。
要は、手間(=コスト)をかけたけど、自動テストが動く頻度が限りなく少ないケースでは「無駄」ですね。  多少以上の時を経て、複数回テストコードが動く・意義を発揮するケースでなければ「無駄なコスト」になり兼ねません。

ちなみに、テストドリブンを基本ポリシーにしているプロジェクト(大抵の場合に、その判断が正しいケース)でも、対象とするコンポーネント、層、サブシステム等によっては「適用の意義が乏しい」場合も有ります。
「ポリシーだからテストドリブンする!」で画一的に動いてしまうと、時間とコストの無駄で自分たちの首を絞める場合があるので注意が必要ですね。  慣れてしまうと、無意識と惰性で行動してしまいがちなので、複数のメンバーで振返りを行うことも重要です。

様々なリスクや高い要求を満たさなければならないプロジェクトでこそ、テストドリブンは効果を発揮するはずです。  部分的な性能改善や、製造が進んでからのリファクタリング(後の寿命が長いので混沌化を抑える必要あり)をする必要が生じたときに、「迷わずに手を付けられる」、「自動再テストを流せば安心!」というのは非常に心強いです!

Banner_02_2ブログランキング!

にほんブログ村 ベンチャーブログへランキング挑戦中!。クリック応援、お願いします!

|

« 定例会(2008/08/22) | トップページ | お仕事:テストドリブンは高い?、安い? »

お仕事な日常」カテゴリの記事