ランダムテスト(らんだむてすと)情報システム用語事典

random testing

» 2011年11月07日 00時00分 公開

 ソフトウェアテスト(注1)手法の一つで、ソフトウェアにランダムな入力を与えてエラーの検出を行い、信頼性や性能などを確認をするテストのこと。

 ランダム入力を行うに当たって疑似乱数生成アルゴリズムなどを使うやり方と、人間が適当に入力操作を行うやり方がある。後者はしばしば、アドホックテスト(注2)と同一視される。

 乱数を使ったランダムテストは、テスト対象プログラムの仕様とは無関係にテスト項目を無作為抽出した形で大量のテストを実行し、ハングアップやクラッシュなどのエラーが発生する確率を求める方法である。MTBF(mean time between failure)による残存バグ数の推定などが行えるが、テスト計画を作る方法に比べるとバグ検出力自体は低いとされる。通常は信頼性テストや性能テストなど、機能外テストに利用される。

 無作為・均一にテストを実行するランダムテストは自動化に適しているが、ほとんどのテストが無効となるため、テスト一件当たりの効率は著しく悪い。なお、テスト結果のフィードバックを反映して効率的なテストを作っていく動的テスト生成手法として、DART(directed automated random testing)が提案されている。

 一方、人間によるランダム入力では、ユーザー数が十分に多数であれば「98%の確率で正常に動作する」というような社会統計的な答えを得ることができる。ただし、これはユーザーの実際の操作という偏りのある母集団がベースとなっており、乱数生成におけるランダムとは意味が異なる。

 なお、クリーンルーム手法におけるソフトウェアテストは、統計的テストといえる。これは形式仕様記述に基づいてソフトウェアの入出力値の代表を選別・評価するもので、代表値を統計的に分析してソフトウェアの信頼度を測る。

参考文献

▼『知識ゼロから学ぶソフトウェアテスト』 高橋寿一=著/翔泳社/2005年2月

▼『ソフトウエア開発――55の真実と10のウソ』 ロバート・L・グラス=著/山浦恒央=訳/日経BP社/2004年4月(『Facts and Fallacies of Software Engineering』の邦訳)


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ