Index: [Article Count Order] [Thread]

Date:  Thu, 7 Dec 2000 08:47:16 +0900
From:  "Shinichi I. OMURA" <omura@....jp>
Subject:  [XP-jp:01264] Re: テストはテスト ?
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20001207084644omura@....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:  Thu, 07 Dec 2000 08:46:44 +0900
X-Mail-Count: 01264

おおむらです。


"Oota" <oota@....jp> wrote: 
in: "[XP-jp:01257] Re: テストはテスト ?"

> 何度も書いているようにXPのテストの考え方に反対しているわけではないの
>です。Test Firstは良い考え方ですし。ただ、このテストをしたから万事OKと
>いうのは危険な感じがするのです。

反対してもいいと思いますよ :-)

というか賛成反対じゃなくて、おかしいと思うことはどんどん指摘していかないと、
我々の認識は深化しないですから、そういう指摘は必要不可欠ですよね。

で、
XPの創始者達は、Unit Testをしたから万事OKとは言っていないですね。
彼らはテストというものが不完全であることは充分認識した上で、
開発プロセス全体で、その不備をカバーするようなやり方を提案している
という見方もできると思います。

たぶん、太田さんの危惧されているのは、XPを受け入れる我々が、無批判に
UnitTestしたから万事OKと思い込むとまずいんじゃない? っていうこと
ですよね。

Install本の"Everything That Could Possibly Break"の章はいろんな意味で面白いです。

その中で、
First of all, like all the XP rules, this one is meant to make us think,
and to keep us on the hook.
と言ってます。XPでは、我々は考えねばならんのです。

だから、ちゃんとXPを理解していれば、その開発者は全力をあげて
太田さんの危惧をふりはらおうとするであろうと思います。どうかな?
いいすぎ??

-- ああ、でも、考えるから間違えるんだ、という批判はあるかも。


あとメインの論点ですが、要約するとこの二点ということでしょうか。間違って
いたら指摘してください。

1. Unit Testは、プログラムの外側に「表明/契約」を取出したものだが、
 テストをベースにおいている限り、プログラムにバグがあることは示せても
 正しいことは示せない。

2. possibly breakな部分だけをテストするというやり方では、その基準が恣意的
 なので、品質をなにも保証できないのではないか?


1 は、「テストやってたんじゃだめだろ」という話だと思うのですが、それだけだと
「表明/契約」であろうが、UnitTestであろうが、テストをやる開発プロセス全部
にあてはまる批判ですね。XPに特殊な条件はどこにあるのか把握できませんでした。

テストが不完全であるということは、私は認識しているつもりで、密かに
形式的仕様とXPの組み合わせというのもありなのかなあと考えています。
形式的方法も山ほどあるし、少ししか知らないのですが、実行可能な形式的仕様と
いうと、Larchってのがありました。でもちょっとXPとは合わないかなあ。


2 については、

例の"Everything That Could Possibly Break"章というものが存在すること自体、
それが議論の的になっているとか、なかなか分かり難いとかいうことを示して
いるのだろうなと私は思います。

読んでいてもやはり歯切れが悪いように感じました(どうですか?>読んだ人)

例えば、XPはexterameだから100%じゃなきゃだめだといいながら、everything
そのものじゃなくて、その後にcould possibly breakという、なんか主観的な条件
をつけて、それの100%だなんていわれても、納得しきれないところあります。

条件つきの100%ならeverythingの50%なんじゃないのか?

てなかんじ。まあ、それはレトリックなんで、どうでもいいんですが...


太田さんのUnit Testに対する批判は、正当だし考えなくてはならない問題だと
思います。

ただ、XPはそれに対して手をこまねいているわけではなくて、すでにちゃんと
考えていて、それはXPの12のルール全体を実行すると、その欠点がカバー
されるということなのではないでしょうか。

ペアプロやシンプルデザインがUnit Test に及ぼす影響は大きいです。

また、XPには仕様書というものがなく、かわりにStoryと歩く仕様書 onsite 
customerがいますけど、これとテストとの関わりも考慮しないといけませんね。

とはいえ、確かに possibly breakという我々にはまだ曖昧で主観的にみえる概念が、
テストの根底にあるので、不安は感じます。
それでも、彼らの成功したプロジェクトなどをみると、彼らにはもっと確実な知識が
あるのではないかとも思います。まだ全部は外に出していないのかも。

とはいえ、わたしはまだ弁護できるほど理解していませんね。ううむ



余談)
> フェーズ1の考え方は、テストとデバッグを区別して認識する点では進歩し
>ている。この考え方は、1970年代後半にMyers[Myers 79]が自己崩壊であると
>批判するまで最先端の考え方であった。つまり、テストで1つの誤りを指摘す
>るだけで、ソフトウェアは完全には動かないことをは証明できるが、無限にテ
>ストしたところでソフトウェアが完全に動くことは証明できないと指摘した。

テストで示せるのがバグの存在だけで、ソフトが正しいことは証明できない
ということをダイクストラが1970年(72年??)のソフトウエア工学のシンポジウムで言った
と記憶してます。原典にあたったことがないですが、いくつか引用しているのを
みたことがあります。こっちのほうが先なのでは?
このシンポジウムで、ソフトウェアクライシスが叫ばれたのではなかったかな。

というようなことはご存知であるような気もしますが、だとするとMyersは
なにをそれにつけ加えたのでしょう?