Index: [Article Count Order] [Thread]

Date:  Mon, 25 Dec 2000 16:11:34 +0900
From:  firo <firo@....jp>
Subject:  [XP-jp:01407] Re: リズム Was:Re: 	テスティングフレームワークの 	suite メソッド
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <3A46F374.2441E0E5@....jp>
References:  <B66A9339.347F%khosokawa@....com> <3A46E912.FB621822@....jp>
Posted:  Mon, 25 Dec 2000 16:12:54 +0900
X-Mail-Count: 01407

矢崎です。

Gunji Tsukudaさん wrote:

>
> 私が違和感を感じるのは、末端のクラスのテストプログラムからコ
> ーディングを始めていることだと思います。私だったら
> testDocumentからではなく、testSearchFactoryや
> testOneElementCollectionから書きはじめたい。つまり、ボトムア
> ップではなく、トップダウンでコーディングして行きたい。トップ
> ダウンで考えれば、末端のクラスのメソッドが明らかになるが、ボ
> トムアップで考えると、末端のクラスのメソッドが明らかにならな
> いので、どういうテストを書けばいいのかわからない。
>
> しかし、トップダウンで書いていくと、「テストを少し書いて、実
> 装を少しして、テストを実行させて動作を確認して、、」という小
> 気味よいリズムにならない。最初に書いたテストの動作を確認する
> ためには、テスト対象のクラスが呼び出している別のクラスも実装
> させなければならないので。別のクラスの実装は最初のテストがう
> まく程度にスタブとして記述すればよいが、そのメソッドの実装を
> 忘れないようにするためには、そのテストの仕様をテストとして記
> 述しておく必要がある。
>
> 1つのテストの動作を確認するために関係する多くのテストプログ
> ラムを記述することになってしまうので、どうにも小気味よいリズ
> ムは生まれない。
>
>  ***
>
> TFPを実践しているみなさんはボトムアップで開発をしているので
> しょうか?
> このような悩みは私だけでしょうか?

私の現時点のやり方は、ボトムアップです。ただ、全体の流れは
一応つかんでおきたいので、一人CRCをやって、だいたいのメソッド
は出しておきます。しかし、コーディングの途中で設計が変わることは
あります。

私の開発言語がJavaのせい(Smalltalkでない)かもしれませんが、
やっぱり、いきなりコーディングには入れません。CRCなりシーケンス図
なりで、だいたいの流れを押さえておく必要があると感じています(個人
的には)。

#上記のやり方で、小気味よくなるかどうかはわかりませんが、一応
私の(今の)方法です。

ただ、佃さんの書かれたトップダウンの方法も、うまくやればできるか
もしれません。そのためにはスタブを書いていかなければなりません
が、このスタブはテストだけのものとわりきって、必要なリターンだけを
返すものをいくつかサブクラスとして実装するとか、、(JUnitの中で
インナークラス化するという手もあるかもしれません)。

トップダウンの方法については、ちょっと主旨が違いますが、佃さんが参考に
されているWakeさんのアーティクルのPart2に、Viewのテストをするた
めに、Modelをスタブとして使う方法として、同じようなやり方が書いて
あったような気がします(今、未確認)。

もう一言だけ申せば、最初のテスト、コードは、やっぱり少しきついかも
しれませんね。小気味よさを実感できるのは、第2バージョン以降かも。。

--
矢崎博英  firo@....jp