Index: [Article Count Order] [Thread]

Date:  Fri, 28 Feb 2003 20:22:11 +0900
From:  Shin <omura@....jp>
Subject:  [XP-jp:04146] Re: 幻覚剤としてのテストファースト
To:  extremeprogramming-jp@....jp
Message-Id:  <64C2DF1BA2E822omura@....jp>
In-Reply-To:  <11C2DEF1E894C5f_kojima@....jp>
References:  <11C2DEF1E894C5f_kojima@....jp>
X-Mail-Count: 04146

おおむらです。


>小島@福井コンピュータです.
>
># 一部にのみ反応します.
>
>>テストにすべての仕様を盛り込むことは不可能だからです。
>
>テストケースに限らず,「何かに全ての仕様を盛り込むことなど不可能」
>に 1 カノッサ.

うかつな文章でした。
「すべて」というのはあやしい表現だと思います。

># 「全ての仕様」の定義次第,と云う気がしないでもないですけれど.
>
>分析モデルですら「全ての仕様を盛り込ん」だりしないし,況や
>実行コードをや.

御意。

ただ、その文で言いたかったことがその文ではうまく表現できて
いなかったのだと思います。

つまり言いたかったのは、特定の値についてテストを書くとき、
実は、テストを書く人の頭の中には、もっと一般的だったり
抽象的な概念がうずまいていると思うのですよ。その世界は
無限の世界で、だから、実行することができないのだと
思います。

それを、実行可能なテストにするために、そういう無限の世界から、
有限の世界におりてきて、特定の値のテストを書く。そういう
ことをしているのだと思います。

そこのなんか屈折した感じが、ほんとにそれでいいのかなと
思ったりするわけです。

たとえば、乗算のプログラムm(x,y)を作るとき、テストだといって

10=m(2,5)

が成り立つことを言うわけですけど、われわれは乗算を熟知してる
から、

x*y=m(x,y)

と書くほうが数段効率的なはず…

まあ、例が単純すぎて、つっこみどころ満載ですけどね。


>仕様には明示的な仕様と暗黙的な仕様 (暗黙知に当たる部分と云うか)
>が有って,暗黙的な方は文書化出来ないような気がしています.

確かにそうですね。

暗黙知の話とはずれますが、
XPのプログラマはテストにすべてを書かないし書く必要はないと、考えら
れているんじゃないかなと思います。

実はもっと仕様に書きこめる情報はあるのに、あえてテストにそれを
書かない、というような部分があるんじゃないでしょうか。

一方で、仕様に書かかれたことについては確実にコードに移し変えるということは
可能だと思いますから、テストでなくもっと情報量のたくさんある
仕様を書けば、コードは自動的にできてしまうんじゃないかなとも
思っています。


># 全ての仕様を網羅した「何か」が有れば,其れを別々のチームに渡しても
># 瓜二つのものが出来る筈.

自分で言っておいてなんですが「すべて」というのが、架空の概念なので
なんとも言えませんね。
逆に、それを定義と考えることはできるかもしれませんね。

でも、仕様としては、あくまでも振る舞いについて記述したものを
とりたいところです。その場合、瓜二つのものができるのかどうか…


ちなみに、XPでは、インターフェイスやクラスの構成はユニットテスト
以前に決めてしまうから、その部分の仕様は当然、テストファーストの
範囲外ですね。