山田@メタボリックスです。
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)間違っているか」を見つけるプロセスがごっちゃになっていませんか。
これを分けるべきでない、という考えがあるならそれはそれで面白いですが。
XPといえどもUnit Testに書くべきことは「何が間違っているか」ということで
(これがつまり仕様ということです)、「どう間違っているか」を見つける
テスト・コードを書くべきでない、と思います。
それはインスペクタなり、デバッガなり、プリント文なりを使ってやりましょうよ。
XPが弱いプロジェクトの口実になってしまうことを僕はいちばん恐れています。
(いろいろなレベルで)仕様とテストの間には強い追跡可能性が必要。
じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら賛成。
テストしたらどうせデバグしなくちゃいけない。
じゃ、それをeXtremeに一緒にしてしまえというUnit Testなら絶対反対。
---
山田正樹, (有)メタボリックス
259-0111 神奈川県中郡大磯町国府本郷576-8
tel: 0463-60-2234 fax: 0463-60-2266
moblie: 090-8347-9605
http://www.metabolics.co.jp/