Index: [Article Count Order] [Thread]

Date:  Wed, 6 Dec 2000 16:10:53 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:01258] Re: テストはテスト ?
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20001206160521L.hiranabe@....jp>
In-Reply-To:  Your message of "Wed, 6 Dec 2000 14:57:55 +0900"	<000001c05f4b$1f6d0c00$010400c8@Ra20>
References:  <000001c05f4b$1f6d0c00$010400c8@Ra20>
Posted:  Wed, 06 Dec 2000 16:05:21 +0900
X-Mail-Count: 01258


太田さん,
平鍋です.

いつも情報ありがとうございます.太田さんのテストに関する一貫
性のある視点には,いつも勉強させられます.太田さんの論旨とは
ちょっとずれますが,

On Wed, 6 Dec 2000 14:57:55 +0900,
"Oota" <oota@....jp> said:

 >  私もこの点が気になってJPLoPの友野さんにお聞きしたのですが、XPでいう
 > テストはMeyerの契約主導設計の実現の一種であるというお話でした。「表
 > 明」というのでしょうか。「表明」は「こうなっているべきだ」というのを事
 > 前条件、事後条件、不変条件で通常そのプログラムの内部で記述するものです
 > (というのは平鍋さんのほうが詳しいと思います)が、それを外側にもってきた
 > のが、XPのテストということでしょうか。

私の最近の頭の中では,

   Meyer の表明
       "Built-in Test", "Test Inside Code", "Testing-in Strategy"

   XP の Unit Test
       "Built-out Test", "Test Outside Code", "Testing-out Strategy"

など分類されています.このような分類で,テストを考えている他
の文献等ありませんかね?

例は,自明ですが,こんな感じです.

       /** Test in */
       class Stack {
           int itemCount;
           Object pop() {
              Assert.require(itemCount > 0);
              // 実装...
              Assert.ensure(@....itemCount - 1 == itemCout);
           }
        }

       /** Test out */
       class StackTest extends TestCase {
          void testPop() {
              Stack stack = new Stack();
              stack.push("1");
              int pre_size = stack.size();
              Object o = stack.pop();
              assert(pre_size - 1 == stack.size());
          }
       }

あと,Meyer さんの過去の資料を見ていたら,

  "All you need is Code"   ... bOOtles.

というのがありました.これって XP 的ですね.Meyer さんのこの
言葉の文脈は,ドキュメントとコードが近い位置にないとドキュメ
ントがメンテできない,という話だったと思います.それで,文芸
的プログラミングに継るのでした.

以上