Index: [Article Count Order] [Thread]

Date:  Fri, 8 Dec 2000 13:16:02 +0900
From:  firo <firo@....jp>
Subject:  [XP-jp:01285] Re: テストはテスト ?
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <00Dec8.131936jst.115207@....jp>
References:  <000201c060b2$39d3c940$010400c8@Ra20>
Posted:  Fri, 8 Dec 2000 13:19:35 +0900
X-Mail-Count: 01285

矢崎です。

Ootaさんwrote:

>
>  従来の客観的にどの人が作っても同じように出来るテストケース(例えば、
> 同値分割 + 境界値分析)というのがありますよね。これだとどれだけテストを
> 行ったのかを不完全なりにも管理することが出来ます。逆にこのような基準が
> ないとテストは主観によるものとなってしまいます。XPのテストの例ですと主
> 観によるテストケースが多いように見えたので、この点がちょっと問題かな
> と。
>
>  しかし、別に矢崎さんの仰るように客観によるテストケースを付け加えても
> かまわないわけですので、この点を補足すれば十分なのかもしれません。
>

私は、JUnitは単なるツールであって、それをどう使うかは、人間
側の課題だと思います。私としては、JUnitでテストをやって、それ
がある程度信頼を持てなければ、XPそのものを安心して適用でき
ないと思っています(リファクタリングして、テストして、その結果が
主観的でしかないとしたら、リファクタリングなんてできない!)。

なので、やはり、JUnitで行うとしてもテストの戦略が必要だと思い
ます。もし、その戦略を適用して、テストケースの数が多くなったと
してもです。。。

#2つの相反するフォース
 ・テストをささっと簡単に書いて、どんどん進捗を進めたい。
 ・信頼性の高いテストを書いて、確実に進捗させたい。
があったとしたら、ここでは、2つめのフォースをとります(^^)
#ただし、ブラックボックスレベルに限定して、でしょうか?ここは、
まだ迷いどころです。


>
>  私としては以前も書いたように、
>
> 1. まずテストを書く(ここは主観で良い、でも重要、ここが書けないというこ
> とはプログラムが何をすべきかを理解していないことになるから)
> 2. プログラムを書く
> 3. 1.のテストを100%通過させる
> 4. 同値分割 + 境界値分析もしくはホワイトボックス的な何らかのカバレージ
> 基準を採用し、この基準を満たすまでテストケースを追加する
> 5. 4.のテストを100%通過させる
>

そうですね。1で大体の仕様を明確にする。
2、3でごくごくシンプルなものを実現する。
4でよりちゃんと仕様にし、(だから、全てにおいて、ホワイトボックスをするか

  どうかは、今は迷っています。)
5でより確かなものを作る。

というような感じでしょうか?

>  前半は「こう動いて欲しい」と「こう実装した」との間に生じるミスを検出
> するためのテスト、後半は「こう動いて欲しい」の予想からは想定していな
> かったような実装の誤りを検出するテストというのでしょうか。
>

御意!あるいは後半は、「より、ちゃんと仕様をつめる。。」nullがきたら
どうする?とか、、

>
> みたいなテストケースで十分だと思います(というのも怪しい)けど、内部的に
> は色々メンバがあってこの一貫性を記述するのがMeyerの表明であると考えて
> いますが。誤って理解しているのでしょうか。
>

私のほうがまちがって理解しているかもしれませんが、私は
Meyerの表明の考え方は、あくまでも仕様、外部、公開のもの
だと思っています。プライベートなメンバを触れるとしても、そ
れは、Eiffelが完全に形式化(数理論理学のように)されてい
ないための、いわば便法として使わざるを得ない状況がある、
というように考えています。翻訳本の211ページとかを読んで
そう解釈しているのですが、まちがっていますでしょうか?

--
矢崎博英  firo@....jp