あぼぼーぼ・ぼーぼぼ

のんびり生きたい

『テスト駆動開発』を読んだ

www.amazon.co.jp

同僚が楽しそうに本書を紹介してくれたので読みました。

3部構成になっていて、第1部は多国通貨、第2部はテスティングフレームワークであるxUnitを題材にTDDのプロセスを体験します。こういう本を読む場合、題材が自分の知識外の知識を必要とするものだと結構読むの大変だったりするんですが、本書の題材はそこまで難解じゃないので、TDDのプロセスに集中することができました。

ひとつ意外だったというか、安心できたのは第1部の最後に出てくる以下の記述。

そもそも多国通貨のコードは書き終わったと言えるのだろうか。答えはノーだ。 (中略)
私は「完了」という言葉を信じていない。完璧さを求めるための手法としてTDDを使うこともできるが、そこはTDDが最も活躍する場所ではない。大きなシステムに関わっている場合、毎日触るような部分は日々鍛えられ、変更も自信も持って行える。システムの周辺部分の、あまり変更しない箇所では、テスト抜けは多いし設計も適当になるが、それでも自信の程度は変わらない。 p250

ここを読んだときに、ぼくの大好きな漫画『BLEACH』に出てくる科学者涅マユリの名言を思い出しました。

完璧であれば、それ以上は無い。
そこに創造の余地は無く、それは知恵も才能も立ち入る
隙がないと言う事だ。
我々科学者にとって、完璧とは絶望だよ。
(中略)
今まで存在した何物よりも素晴しくあれ、
だが、決して完璧であるなかれ。

あと勇気を貰えるのはTDDは「"自分ひとり"でできる"技術"だ」というメッセージですね。

付録CではTDDの歴史を紐解きながら現在の解釈まで書かれていて、本編顔負けの発見に富んだ付録だったと思います。ソフトウェアテストにおけるTDDのカバー範囲を「アジャイルテストの4象限」で説明されていたり、単にテストを先に書く書き方という誤解とか。