テスト駆動開発の問題はテストすることである

ビヘイビア駆動開発から調べることで、もっとすっきりしました。

1. どのように動くか決める(設計)
2. それをコードにする。(テストコード)
3. そのコードが動くようにする。(実装コード)

これが基本なんですが、まず間違える一番の原因は Test と言う言葉だったのです。
この言葉に惑わされて、とんでもない方向にいってしまうのです。
どういうことかというと、

テストは、どの程度学力が付いたか調べる行為であり、テストで良い結果を出す為の行為である。

という感じです。人はテストで良い結果を出したくなるから、しょうがないですね。

しかし、テストで良い点を取ろうとはおもっていません。結果は OK と NG の二つだけだし。
では、なんでとんでもない方向にいくの?そう思う人が私一人ではなかったようです。

A NEW LOOK AT TEST-DRIVENDEVELOPMENT by Mr.Dave Astels

そのヒントは言語的相対論(Sapir-Whorf hypothesis)でした。
人類分類学者の Edward Sapir と 同僚の Benjamin Whorf が提唱しました。
詳しくは Wikipedia で調べてください。

言語は認識に影響を与える思考の習性を提供する

という理論です。極論な事を言うと、
日本語を使っている人は日本的な考えになる。
だから中国のことを知りたかったら、中国語をしゃべれ!
ただし影響を与えるだけであり、決定されるわけではないので誤解無きように。

今、行っているテスト駆動開発は正しく行われていますか?

最後に忘れて欲しくないのが、テスト駆動開発もビヘイビア開発駆動も同じ事です。
別の開発手法だと思わないでください。