テスト駆動をするまえにやるべきこと

テスト駆動がスムーズに進みません。原因は何か?

品質があがるとか、開発時間の短縮とかを説明している記事は山のようにあります。しかし理論を説明している記事は見つかりません。そして導入から説明している記事がとても多いですね。すでに開発環境があって、そこからテスト駆動開発してみたいのに…。

紆余曲折したのですが、やっと出来ない理由が見つかりました。それは、
オブジェクト指向プログラミングをしてない!」

つまり!

「設計をしてない!」

オブジェクト指向プログラミング (OOP) は設計ありきだと思っています。
建築物は設計書を作ってから建築が始まります。もちろんプログラムも同じです。
設計書を作らず建築を始める事は出来ません。もちろん完成イメージだけでも作れません。(ゲームプログラムだと完成イメージのイメージを口頭で言われて作ったりしますが…。)

で、設計をすると色々な部品(オブジェクト)で構成されることに気がつきます。(おっ!なんか前に「構成」って言葉が出てきたな。)
その設計書が無いので、 Unit (構成単位)が思いつかないのです。Unit が思いつかないから、それをテストする内容も思いつかないわけです。

ようやく霧の中から晴れ間が見えてきました。

そして、「初期段階から導入しろ」という言葉が浮かんできました。設計が出来ていれば、そこからテスト駆動を始めることが出来ますが、後からやると面倒な気がします。設計書と中身が違っていたらと思うと…。

テスト駆動開発を学びたかったら、まずは設計を学べ!


※注意
アジャイル開発」とか「ビヘイビア駆動開発」という単語は、聞いたことも無い!という前提です。テスト駆動を理解し、実際やったことがある人達だけに許されたステージだと思っていますので。