エラー推測テストの効用 (2009年9月6日訂正) | 組み合わせテストケース生成ツール 「PictMaster」 とソフトウェアテストの話題

エラー推測テストの効用 (2009年9月6日訂正)

ほとんどのテスト技法は、何らかの形でテストの手順が書かれた文書をもとにして行なうスクリプトテストと呼ばれるカテゴリに分類されます。スクリプトテストに分類されないテストにエラー推測テストがあります。

エラー推測テストは、テスト仕様書などの文書を用いずにテスト担当者の勘を頼りに実施するテストです。

一般的に、テストを繰り返すと検出されるバグは減少し、最終的にはいくらテストしても1件もバグが検出されなくなります。しかし、テスト期間がまだ残っている場合にバグを検出できないと、テスト部隊はなにをやっているんだ、まじめにテストをやっているのか、という圧力が開発部隊からかかる困った事態になりかねません。テストが行き詰まった状態です。

このような場合に有効な方法としてエラー推測テストがあります。エラー推測テストはテスト担当者の勘を頼りにするといっても、テストの観点を明確にしておかなければ無駄なテストに終わる可能性が高いでしょう。

エラー推測テストを無駄なテストに終わらせないために、私たちのチームでは以下の「障害の発生しやすい事項」という表を目安にテストを行なうことにしています。この表は技術評論社のムック雑誌「ソフトウェアTEST・PRRESS」に掲載された記事に、私の経験をもとに追加・変更を行なったものです。

【障害が発生しやすい事項】
分類            内容
中止後の再操作   途中で操作をやめる。その後すぐに再操作を行なう。
エラー後の再操作  わざとエラーを起こして最初からやり直す。
繰り返し         同じ手順を繰り返し行なう。
最大最小        使用する値を大きくしたり小さくしたりする。
同時           同じ操作を同時に行なう。
境界           値の境目前後/時間的なタイミングの直前直後。
順序入れ替え     同一結果になる処理の手順を入れ替えて行なう。
省略           途中の操作を省略し別の操作を行なう。
操作中に別操作    ある操作中に別の操作を同時に行なう。
無効入力        性質の異なる無効な入力を行なう。
素早い操作       いろいろな操作を素早く行なう。

実際にバグが検出できず、行き詰まったテストチームに、この表の観点からのエラー推測テストを提案し、実施してもらったところ、多くのバグを検出することができました。この例は、エラー推測テストが有効だった場合です。

エラー推測テストは、いつでも有効なテスト技法というわけではありませんが、ふさわしい状況であるなら実施してみる価値のあるテスト技法です。

なお、エラー推測テストに似たテスト技法に探索的テストがあります。エラー推測テストがバグの発見を目的として使用する技法であるのに対して、探索的テストは、バグのあることが分かっている状態でバグの原因を見つけ出すデバッグで使用するテスト技法であるという違いがあります。