ソフトウェア開発201の鉄則 原理111:テスティング: テスティングは結果の存在をあらわにするだけだ

要旨

* テスティングは「欠陥を発見」するためのものである
* テスティングは、「欠陥がない」つまり「正しい」ことを証明するものでは、決して、ない
* テスティングを重ねた結果欠陥がない場合、「正しい確率」は確かにあがるが、それは「正しいことの証明」には決してならない
* 正しさを証明するのは、テスティングではない、別の手法が必要

解説

「悪魔の証明」をご存知だろうか。ある事実・現象が「全く無い(無かった)」というような、照明するのが非常に困難な命題を証明することだ。

「ある」の証明は、シンプル。一つその事象をみつければ、そこで、終わり。

一方、「ない」の証明は、実質不可能。いくら事象を検証して「ない」ことがわかっても、その次に検証する事象は「ある」になるかもしれない。

で、テスティング。そもそも、テスティングは何のためにやっているか、をきちんと認識しよう。

テスティングは、欠陥が「ある」ことを明らかにするためにやるもの、なのだ。

決して、欠陥が「ない」、つまり、ソフトウェアが正しいことを明らかにするためにやるのでは、ない。

そこをきちんと理解していないと、ならない。

テスティングを重ね、欠陥が見つからない状態がずっと繰り返されると、つい、このソフトウェアは「正しい」と思いがちだが、決してそうでは、ない。

「正しいらしい」確率が上がるだけ、だ。

繰り返すが、

テスティングは、欠陥を見つめるためにやるものだ。

なので、欠陥が見つかれば、テスティングは大成功、成果を出した、と言えるのだ。

開発者にとっては、欠陥があることがわかっちゃうことになって、ちょっとつらいが、発見してくれたことに感謝すべきだろう。




この記事が気に入ったらサポートをしてみませんか?