Index: [Article Count Order] [Thread]

Date:  Fri, 29 Aug 2008 14:24:44 +0900
From:  t-fukatsu@....jp
Subject:  [XP-jp:05365] Re: テストファーストについて
To:  extremeprogramming-jp@....jp
Message-Id:  <JD200808291424443.5458031@....jp>
In-Reply-To:  <20080829135316.87230454.ruby@....jp>
References:  <20080829135316.87230454.ruby@....jp>
X-Mail-Count: 05365

深津です。

> 1)どこまでテストすべきか?

ご指摘のとおり、単純な Get/Set 関数までテストコードを記述するというのは
無駄かもしれません。
明らかに正しいコードであれば、テストコードを省いてもいいかと思います。
逆に少しでも怪しい箇所があれば、それはテストをすべきです。

私の基準ですが、public メソッドはすべてテストを原則とし、変数に対して出
し入れしかしない非常に単純なメソッドはテストを省くとしています。


2)コピペを使うべきかどうか?
setUp メソッドで(テスト対象クラスの)メソッド呼び出しを使うことにためらい
があるとのことですが、呼び出されるメソッドが十分にテストされたものなら、
堂々と使っていいのではないでしょうか。

実装クラスひとつにつきテストクラスひとつという決まりはありませんので、初
期化メソッド専用にテストクラスを作成し、それが通るようなら別のテストクラ
スで他のメソッドのテストをすればいいと思います。



Akira Hayakawaさんが
    "[XP-jp:05363] テストファーストについて"
の件で2008/08/29 13:53:16頃送信しました。

---- 原文ここから ----
> 初めまして。Akiraといいます。
> 
> 言語はjavaで、一人きりでぼっちプログラミングしています。京大の学生です。
> 設計のインターフェイスを明確にする為にテストファーストというものをマジ
> メに導入しようかと考えていますが、いくつか疑問があります。
> 
> 1)どこまでテストすべきか?
> 例えば、ある設計においては、あるクラスAがクラスBに依存している事がほと
> んどかと思います(例えば引数にとったり、返り値にそのクラスを使ったりし
> ます)。
> 
> この場合、Aのテストケースを書いたとして、それが正しい事を証明するにはB
> が正しく動いている必要があります。最終的には、依存しているのは正しくテ
> ストされてるであろうと思われる、javaライブラリにのみ依存しているクラス
> までテストを書いていく必要があると思いますが、非常に無駄に思えます。多
> くの場合、データを格納して返すだけとかその程度の振る舞いしかせず、わざ
> わざ書く必要もないからです。
> 逆に、そういう末端までテストケースを書くのはめんどくさいという事で、ユ
> ーザに見せるトップのクラスのテストだけを真剣に書いて、それが通れば成功
> という風にやっていくのは気が遠すぎてやる気がしないのと、たぶんテストフ
> ァーストの理念にそぐわないような気がします。
> 
> では、どの階層でテストを書いていくべきかという事で一つの疑問として持ち
> 上がるかと思います。みなさんの意見をお聞かせください。
> javaは静的言語なので、テストコードが非常に長く複雑になりがちです、また
> 私が書くとなぜかキャストがいっぱい出てきます。出来れば無駄なテストコー
> ドを書きたくないのです。
> 
> 2)コピペを使うべきかどうか?
> テストをそれぞれのクラスについて書いていくと、例えばsetUpなどで同じよ
> うな事を何回も書く事になります。これはとても手間です。
> 例えば生成をメソッドとしてくりぬいて、それを再利用させるべきでしょうか?
> 私としてはコンストラクタやあるいはテストケースのsetUpメソッドなどで、
> メソッド呼び出しを使う事にためらいがあるのですが、何か良い方法はないで
> しょうか?
> 
> よろしくお願いします。


以上、よろしくお願いします。

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
 Takanari FUKATSU / MINERVA Co., Ltd.
    TEL   : 053-431-1600
    FAX   : 053-431-1601
    E-Mail: t-fukatsu@....jp
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*