Index: [Article Count Order] [Thread]

Date:  Thu, 27 Feb 2003 20:57:06 +0900
From:  Shin <omura@....jp>
Subject:  [XP-jp:04130] 幻覚剤としてのテストファースト
To:  XPJ <extremeprogramming-jp@....jp>
Message-Id:  <4EC2DE57596261omura@....jp>
X-Mail-Count: 04130

おおむらです

まず、誤解なきようにおことわりしておきますが、
わたくしめはテストファーストがすきですし、
その楽しさ、生産性の高さ、よく知っております。

でも、ときどき思うのです。
テストでいいのかな? と。

つまり、ダイクストラが言っているように、テストは
バグの存在を示すことはできても、プログラムが正しい
ことは証明できない。ではありませんか。

このいいまわしは、テストラストの文脈での表現だから、
テストファーストだとちょっと違うかもしれません。
つまり、テストファーストでコードを作ると、テストに
あわせてコードが作られるので、テストがバグの存在を
示すために作られるわけではないですから。

でももっと重要なことは、テストが常に特定の値に関する
主張しかしていなくて、そのため、仕様というか、作ろう
としているプログラムの論理的な構造が、テストファースト
で作られたコードによって必ずしも実現されているとは
いえない点です。
テストにすべての仕様を盛り込むことは不可能だからです。

テストファーストでやることはいいでしょう。でも、
ユニットテストを常に100%パスするというのは、本当に
すごいことなんでしょうか?

100%と言われると、なにか完璧にできているかのように
思いますが、実際には、有限個の要求を満たすコードが
できているだけです。
それは勿論不完全であり、100%正しいコードだという
意味ではないのです。


XPのうまいところは、こういうあいまいで不完全なものを
100%という幻想で包み込んで、上手にプログラマーの
やる気をひきだしているところなのでしょうね。

でもこんな幻覚剤にだまされていていいのだろうかと、
思ったりするわけです。