Index: [Article Count Order] [Thread]

Date:  Thu, 26 Jul 2001 14:56:49 +0900
From:  Takashi Abe <abetaka@....jp>
Subject:  [XP-jp:02271] Re: assert で表現できないメソッドのテスト
To:  extremeprogramming-jp@....jp
Message-Id:  <200107260556.AA00567@....jp>
In-Reply-To:  <31096999.996123125804.JavaMail.imail@derby>
References:  <31096999.996123125804.JavaMail.imail@derby>
X-Mail-Count: 02271

こんにちは、阿部です。

>しかし、実際に使うメソッドでは、ファイルの入出力や、DBの読み書き、
>など、assert文ではテストできない又はし難いメソッドが多く存在します。
 私はこういうのは複合テストにしてしまいます。例えば
「insert直後にselectして取得した全データオブジェクトをassertEqualsで
比較する」とか、そういうテストです。もちろん、ファイルも書き出したら
直後に読み込んで内容チェックです。

 当然、こういうテストをするからにはDBとの橋渡し役となるデータクラス
などはequals(),hashCode(),clone()をきっちり実装して、個別にテストが
必要です。EJBにデータクラスを渡すときにはSerializableインターフェースが
必要ですから、「ファイルにシリアライズして、別のオブジェクトに復元して
equals()で比較」なんてテストまでやりました。

 私は自分の能力(というか、コンスタントに正確なコードを書く集中力)
を疑っているので、テストは執拗に、できるだけ多くのパターンを、と
考えています。流れとしては

1.単純なテストを書く
2.機能を実装する
3.以上を繰り返して全機能を実装する
4.思いつく限りのありとあらゆるテストを追加して品質を上げる
5.ついでにリファクタリングで保守性も上げる
6.4.5を繰り返す
7.完成

というパターンです。なんせ上司の目があるので、テストコードを書くのに
時間を取られて機能の実装が遅い、というのはご法度ですから、執拗なテスト
などというものは後回しになります。

リリースはこまめにします。全部終わるまでリリースしないと他の部署との
連携に齟齬が発生するので、1.2を繰り返しながら定期的にリリースします。


-------------------------------------------------------------
Takashi Abe  <abetaka@....jp>
HP: http://homepage1.nifty.com/taka-page/

合気道 薫友会 : http://homepage2.nifty.com/kun-yu/index.html
-------------------------------------------------------------