Index: [Article Count Order] [Thread]

Date:  Wed, 14 Mar 2001 20:54:14 +0900
From:  Hada Akihiro <Akihiro.Hada@....jp>
Subject:  [XP-jp:01735] Testing[Re:  Re: XP  事例 ]
To:  extremeprogramming-jp@....jp
Message-Id:  <4.2.0.58.J.20010314201534.04255a50@....jp>
In-Reply-To:  <87zoeqvwk5.fsf@....com>
References:  <4.2.0.58.J.20010312201036.03217c40@....jp> <3AAC797E.3040007@....com> <20010312132542Z.hiranabe@....jp> <3AAC797E.3040007@....com> <4.2.0.58.J.20010312201036.03217c40@....jp>
X-Mail-Count: 01735

懸田さん

Testing=(UnitTest && AcceptanceTest)
が XP の趣旨であることは、その通りと思います。
この定式から何を読み取るかが異なっているのでしょう。
懸田さんは、Unit Test が不可欠であることを重視しています。

今回の事例では、二つ合わせて、
・ プログラムの intention を test code という形で実現する。
・ プログラムが壊れたら、テストで見つかる。ので、勇気を持って変更できる。
が実現できている、"場合"により、力点の置き方はずれるのでないか、
と捉えました。

で、どういう"場合"があるのか、ですが、
・ いわゆるユーザ・アプリケーション=機能テストを十分にすれば、
 intention を網羅できる割合が高い。
・ COTS 型のアプリケーションやフレームワーク=ユーザがどう使うか
予測不可能なので、機能テストで網羅できる割合が比較的低い。
ということと考え、今回の"場合"は、前者なので、機能テストを十分にすれば、
いいだろう、という発想です。

くどくなりますが、refactoring をしていく場合、unit test は重要性が増す、
と考えています。
refactoring はどのようなときに有効か、というと、
・ 効率を向上させつつ、機能はそのままにする。
・ 機能が追加されたとき、再利用性を向上させる。
というのが大きいと考えてます。
今回の場合、
・ 効率は、アプリケーションを支える基盤で決まってくるので、アプリケーションの
  リファクタリングで、効率が大きく改善される可能性は低い。
・ 機能が追加されたとき、再利用される構造が新たに生み出される可能性も低い、
ということで、refactoring に対する備えを構えてはしませんでした。

もし、refactoring が必要になったら、どうするか?という問いには、
YAGNI と答えます。

こう書くと、XP なんて使わなくても、と思われるかもしれませんが、
ドキュメントをどこまで少なくできるか、プログラマにプログラム以外のことに、
気や時間が取られないようにするにはどうしたら良いか、
という点では、極めて有効でした。
また、超短期開発は、オンサイト顧客無しに実現できない、という課題が早期に
論理だてて合意できたことも、有効であったと考えています。

はだ

At 午後 06:37 01/03/13 +0900, Takeshi Kakeda wrote:
>> XP を前提にしても、
>> そもそも、プラクティスにあるのは、Testing であって、Unit Tests では
>> ありません。Unit test と Function(Acceptance) test の分業?は、
>> ケースバイケースなのではないでしょうか。
>確かにTesting=UnitTestという図式は明言されてはいませんが、XPに関する
>資料を見るとTesting=(UnitTest && AcceptanceTest)というのが私の認識です。
>
>UnitTest = プログラマが作成、実行する
>AcceptanceTest = ユーザが作成、実行する
>
>というように、個々に別々の役割がありますので、両者を行うのがXP的には
>必要だと考えます。