おおむらです。
>小島@福井コンピュータです.
>
># 一部にのみ反応します.
>
>>テストにすべての仕様を盛り込むことは不可能だからです。
>
>テストケースに限らず,「何かに全ての仕様を盛り込むことなど不可能」
>に 1 カノッサ.
うかつな文章でした。
「すべて」というのはあやしい表現だと思います。
># 「全ての仕様」の定義次第,と云う気がしないでもないですけれど.
>
>分析モデルですら「全ての仕様を盛り込ん」だりしないし,況や
>実行コードをや.
御意。
ただ、その文で言いたかったことがその文ではうまく表現できて
いなかったのだと思います。
つまり言いたかったのは、特定の値についてテストを書くとき、
実は、テストを書く人の頭の中には、もっと一般的だったり
抽象的な概念がうずまいていると思うのですよ。その世界は
無限の世界で、だから、実行することができないのだと
思います。
それを、実行可能なテストにするために、そういう無限の世界から、
有限の世界におりてきて、特定の値のテストを書く。そういう
ことをしているのだと思います。
そこのなんか屈折した感じが、ほんとにそれでいいのかなと
思ったりするわけです。
たとえば、乗算のプログラムm(x,y)を作るとき、テストだといって
10=m(2,5)
が成り立つことを言うわけですけど、われわれは乗算を熟知してる
から、
x*y=m(x,y)
と書くほうが数段効率的なはず…
まあ、例が単純すぎて、つっこみどころ満載ですけどね。
>仕様には明示的な仕様と暗黙的な仕様 (暗黙知に当たる部分と云うか)
>が有って,暗黙的な方は文書化出来ないような気がしています.
確かにそうですね。
暗黙知の話とはずれますが、
XPのプログラマはテストにすべてを書かないし書く必要はないと、考えら
れているんじゃないかなと思います。
実はもっと仕様に書きこめる情報はあるのに、あえてテストにそれを
書かない、というような部分があるんじゃないでしょうか。
一方で、仕様に書かかれたことについては確実にコードに移し変えるということは
可能だと思いますから、テストでなくもっと情報量のたくさんある
仕様を書けば、コードは自動的にできてしまうんじゃないかなとも
思っています。
># 全ての仕様を網羅した「何か」が有れば,其れを別々のチームに渡しても
># 瓜二つのものが出来る筈.
自分で言っておいてなんですが「すべて」というのが、架空の概念なので
なんとも言えませんね。
逆に、それを定義と考えることはできるかもしれませんね。
でも、仕様としては、あくまでも振る舞いについて記述したものを
とりたいところです。その場合、瓜二つのものができるのかどうか…
ちなみに、XPでは、インターフェイスやクラスの構成はユニットテスト
以前に決めてしまうから、その部分の仕様は当然、テストファーストの
範囲外ですね。