ホソカワです。
> 山田@メタボリックスです。
>
> At 00:29 +0900 00.12.3, namuta@....jp wrote:
>> Test Firstは基本的にUnit Testの話で,これは「欠陥を見せるためのテスト
>> (Test to show a defect)」であって,仕様(XP的にいうとストーリ)のためのテ
>> ストはXPでも別にAcceptance Testがあります.
>
> はい、そうですね。
> でも単体には単体の仕様がありますよね。
>
> 形式的に書く人もいるし、前置/後置/不変条件で書く人もいるし、
> javadocで書く人もいるし、頭の中で書く人もいる:-)
>
> XPの考えは「クラスの仕様はCRCでは少し弱い(し、すべてのクラス単位までは
> 書かない)から足りない。それは実はテストだ」ということだなというのが
> 僕の理解なんです。(ある意味で動く仕様:-)
> 教典から引用することはできないと思いますが:-)
>
私もユニットテストは、テストだけではなく、仕様としての役割も持っていると思い
ます。「ユニットテストを読んでメソッドの使い方を理解する」ことができるでしょ
う。
>> Test Firstの効果として,テストしにくい実装を回避できるということも言って
>> います.これは,テストのしくにくい複雑な処理を書かなくなるというメリット
>> をあげていました.
>
> これもその通りだと思います。
>
>> つまり,プリントを使って見る(デバッグする)のではなく,そのかわりにUnit
>> Testを記述するのだと思います.
>
> ここで抵抗があるんです。
> ここでは「何が(what)間違っているか」を見つけるプロセスと、
> 「どう(how)間違っているか」を見つけるプロセスがごっちゃになっていませんか。
> これを分けるべきでない、という考えがあるならそれはそれで面白いですが。
>
そうですね。テストは「なにが間違っているか」を見つけるものだと思います。I本
でも、『Test First by 「Intension」』と言っています。
ところで「どのように間違っているか」を見つけるテストとは、どのようなものでしょ
うか?ちょっとイメージできません。
> XPといえどもUnit Testに書くべきことは「何が間違っているか」ということで
> (これがつまり仕様ということです)、「どう間違っているか」を見つける
> テスト・コードを書くべきでない、と思います。
> それはインスペクタなり、デバッガなり、プリント文なりを使ってやりましょうよ。
>
デバッグはXPでも必要だと思います。開発環境をフルに活用してデバッグすることに
も反対ではありません。ただ、デバッグの量と難しさをユニットテストによって、軽
減することはできないかと言う事を考えています。
例えば、このスレッドの最初に登場した、問題をユニットテストだけで、発見するに
は、次のテストが必要でした。
--- SumTest
public void testEquals() {
Sum aSum = new Sum("A", 1);
Object anotherSum = new Sum("A", 1);
assert(aSum.equals(anotherSum));
}
実行していないので間違っているかもしれませんが、Objectをequals()に渡して動作
確認をするテストです。このテストを書いていれば、問題を発見して、その時点で修
正する事が出来ました。しかし、このテストを書かずにデバッグモードに入ってしまっ
た自分が残念だったと言う事です。
> XPが弱いプロジェクトの口実になってしまうことを僕はいちばん恐れています。
>
> (いろいろなレベルで)仕様とテストの間には強い追跡可能性が必要。
> じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら賛成。
> テストしたらどうせデバグしなくちゃいけない。
> じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら絶対反対。
>
>
ごめんなさい。この最後の部分、理解できていません。「HOW」のテストがどのよう
なものか見えていないからだと思います。
> ---
> 山田正樹, (有)メタボリックス
> 259-0111 神奈川県中郡大磯町国府本郷576-8
> tel: 0463-60-2234 fax: 0463-60-2266
> moblie: 090-8347-9605
> http://www.metabolics.co.jp/
--
Kaoru Hosokawa
khosokawa@....com