ソフトウェア開発201の鉄則 原理111:テスティング: テスティングは結果の存在をあらわにするだけだ
要旨
* テスティングは「欠陥を発見」するためのものである
* テスティングは、「欠陥がない」つまり「正しい」ことを証明するものでは、決して、ない
* テスティングを重ねた結果欠陥がない場合、「正しい確率」は確かにあがるが、それは「正しいことの証明」には決してならない
* 正しさを証明するのは、テスティングではない、別の手法が必要
解説
「悪魔の証明」をご存知だろうか。ある事実・現象が「全く無い(無かった)」というような、照明するのが非常に困難な命題を証明することだ。
「ある」の証明は、シンプル。一つその事象をみつければ、そこで、終わり。
一方、「ない」の証明は、実質不可能。いくら事象を検証して「ない」ことがわかっても、その次に検証する事象は「ある」になるかもしれない。
で、テスティング。そもそも、テスティングは何のためにやっているか、をきちんと認識しよう。
テスティングは、欠陥が「ある」ことを明らかにするためにやるもの、なのだ。
決して、欠陥が「ない」、つまり、ソフトウェアが正しいことを明らかにするためにやるのでは、ない。
そこをきちんと理解していないと、ならない。
テスティングを重ね、欠陥が見つからない状態がずっと繰り返されると、つい、このソフトウェアは「正しい」と思いがちだが、決してそうでは、ない。
「正しいらしい」確率が上がるだけ、だ。
繰り返すが、
テスティングは、欠陥を見つめるためにやるものだ。
なので、欠陥が見つかれば、テスティングは大成功、成果を出した、と言えるのだ。
開発者にとっては、欠陥があることがわかっちゃうことになって、ちょっとつらいが、発見してくれたことに感謝すべきだろう。
この記事が気に入ったらサポートをしてみませんか?