山田@メタボリックスです。
At 23:06 +0900 00.12.3, namuta@....jp wrote:
> >> XPといえどもUnit Testに書くべきことは「何が間違っているか」ということで
>>> (これがつまり仕様ということです)、「どう間違っているか」を見つける
>>> テスト・コードを書くべきでない、と思います。
>どう間違っているかは問題ではないのでは?
>そもそも「どう間違っているか」,というのを意識するのはそのコードが複雑す
>ぎるんだと思います.これはリファクタリングをする動機(smell)になるものだ
>と思いますが.
だから「どう間違っているか」はテストの対象ではないと言っているんです。
# でもコードが単純になればその組み合わせは複雑になります(無駄口)
>#どう間違っているかを見付けるテストコードというのはどういうものを
>#イメージしているのでしょうか?
>#すぐにはイメージできなかったので.
だからそれは前にも書いたようにテストではないですよね。
(それは僕ではなくてホソカワさんが言ったんですって)
#でも例えば一つの文とかメッセージ単位でインスペクトしまくるような
#テストはありそうな気がする。
#素のJavaでは大変そうだけど、メタ・レベルがちゃんとしている言語なら
#(AspectJとかならできる?)まるでデバグ・スクリプトのような
#テスト・コードが書けるんじゃないでしょうか。
#それはそれでとても面白いと思います。
> >> (いろいろなレベルで)仕様とテストの間には強い追跡可能性が必要。
>>> じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら賛成。
>>> テストしたらどうせデバグしなくちゃいけない。
>>> じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら絶対反対。
>Unit Testで仕様を追跡するのは違うのでは.
>[XP-jp:01232]で書いたように,全てのメソッドについてUnit Testを書くことを
>XPでは要求されていません.
前のメイルで書いたことの繰り返しになって、いやなんですけど...
単体には単体の仕様が(暗黙にしろ)あります。
CRCでも契約でもインタフェースでも頭の中でも(弱いけれど)仕様です。
仕様とテストの間に追跡可能性(対応という意味です)があるのも当然。
でなければ何をテストしているか分からないですから。
すべてのメソッドについてメソッド単位でUnit Testを書くべしと言ったこともない
です。
>また,テストでデバッグするというのは確かに違いますが,バグの有無を確認を
>するのだと思います.だから,プリント文で確認するのではないと書いたつもり
>です.
そのとおりで
「バグの有無を確認するのがテストです。
Unit Testにそれ以上のこと(どんなバグかなど)をさせるのには賛成できないです」
(Unit Testに関する単純さの原則)
というのが僕の主張でした。
中村さんの論点とはずれてるんでしょうか。
あるいは言葉使いに反感もたれちゃったかな。
XPのUnit Test自身に疑問を投げかけているわけではないんです。
どう解釈するかどう発展させていくかという議論だと思っています。
お手柔らかに。
---
山田正樹, (有)メタボリックス
259-0111 神奈川県中郡大磯町国府本郷576-8
tel: 0463-60-2234 fax: 0463-60-2266
moblie: 090-8347-9605
http://www.metabolics.co.jp/