ソフトウェアのテスト

ソフトウェアのテストは対象ソフトに不具合がないことを確認するための行為…ではないというお話。


ソフトウェア(以下、SW)に対するテストは対象となるSWに不具合がないことを確認するために行っている、という勘違いがよく見られます。提示されたテストをすべて実行して不具合が見つからなかったからこのSWには不具合がないことが確認された、と勘違いする人は多いです。

違います。SWには必ず不具合があるんです。そしてSWテストは不具合を見つけるために行うものなんです。頑張ったんだけど制限時間内に不具合を見つけられなかったから仕方なくテストを終了するんです。


「不具合がみつからずにSWがリリースされたんだったら、どっちでも結果は同じじゃん?」と思う人は多いと思いますが、この考え方の違い、意識の違いによって見つかる不具合の数が変わってきます。

[A] あれ、なんかテストがFailした。もしかして手順を間違えた?もう一度やってみよう。ほらPassした。やっぱり問題ないじゃん。
[B] あれ、なんかテストがFailした。この不具合だとこんな原因が考えられるなぁ。ちょっと細かく見てみよう。あぁやっぱりこの条件のときに不具合が起きる…

[A] よし、テストは全部Passした。なんか表示が変な気もするけど、そこはテスト項目になってないからいいや。
[B] テスト項目は全部Passしたけど、表示項目が変な気がする。ちょっと仕様を調べてみよう。あぁやっぱり表示が仕様と食い違ってる…

[A] これがテスト項目か。なんか条件がごちゃごちゃしてるけど、自分にかかればチョチョイのちょい。はい全部Passね。
[B] これがテスト項目か。なんか条件がごちゃごちゃして分かりにくいな。ちょっと整理してみよう。あっ、この条件のテストが漏れてる…

[A] ランダムテストって適当にやっとけばいいんでしょ。ほいっほいっほい。はい全部Passね。
[B] ランダムテストでは普通はやらないような操作をやってみよう。ほいっほいっほ… あっ、この操作手順の考慮が漏れてる…


不具合がないことを確認するという意識でテストをすると、テストを終わらせることが目的になって、ちょっとした不具合はあれこれ理由づけしてPassに持っていこうとします。逆に不具合を見つけようという意識でテストをすると、ちょっとでも怪しいところは目に留まるようになります。

こういう意識の違いって見た目では分からず技術が継承されにくいため、改めてここに記載しておきます。
一つでも多く不具合を見つけられるように努力してください。そして一つでも多く不具合を見つけられることを誇ってください。テストで不具合が見つかる方が、顧客に見つけられるより何倍もマシです。


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