テスト駆動をするまえにやるべきこと
テスト駆動がスムーズに進みません。原因は何か?
品質があがるとか、開発時間の短縮とかを説明している記事は山のようにあります。しかし理論を説明している記事は見つかりません。そして導入から説明している記事がとても多いですね。すでに開発環境があって、そこからテスト駆動開発してみたいのに…。
紆余曲折したのですが、やっと出来ない理由が見つかりました。それは、
「オブジェクト指向プログラミングをしてない!」
つまり!
「設計をしてない!」
オブジェクト指向プログラミング (OOP) は設計ありきだと思っています。
建築物は設計書を作ってから建築が始まります。もちろんプログラムも同じです。
設計書を作らず建築を始める事は出来ません。もちろん完成イメージだけでも作れません。(ゲームプログラムだと完成イメージのイメージを口頭で言われて作ったりしますが…。)
で、設計をすると色々な部品(オブジェクト)で構成されることに気がつきます。(おっ!なんか前に「構成」って言葉が出てきたな。)
その設計書が無いので、 Unit (構成単位)が思いつかないのです。Unit が思いつかないから、それをテストする内容も思いつかないわけです。
ようやく霧の中から晴れ間が見えてきました。
そして、「初期段階から導入しろ」という言葉が浮かんできました。設計が出来ていれば、そこからテスト駆動を始めることが出来ますが、後からやると面倒な気がします。設計書と中身が違っていたらと思うと…。
テスト駆動開発を学びたかったら、まずは設計を学べ!
※注意
「アジャイル開発」とか「ビヘイビア駆動開発」という単語は、聞いたことも無い!という前提です。テスト駆動を理解し、実際やったことがある人達だけに許されたステージだと思っていますので。