テストの本質を探る ――30年の歴史を持つ 「ソフトウェア工学」の知恵に学ぶ

伊藤昌夫

tag: 組み込み

技術解説 2004年4月24日

●不ぐあいの成長曲線から「テスト」を考える

 まず,「テストとは何か」ということを理解しておく必要があります.それを「不ぐあいの成長曲線(信頼度成長曲線)」を通して考えてみることにします.図2を見てください2).横軸が時間で,縦軸が単位プログラム規模当たりの累積不ぐあい発生件数であるとします.

 図2は,テストの進展に伴って不ぐあいがどのように変化していくかのグラフとして,よく見られる形を持っています.感覚的には妥当に思えます.テストを始めると,ある時点から急激に発見する不ぐあいの数が増えていきます.しかし,しだいにそれは収まっていきます.残存する不ぐあいが少なくなり,見つけることが困難になるからです.

 一見妥当そうなこのグラフから,テストに関するいくつかの注意点を引き出すことができます.

  • いくらテストをしたところで,残存する不ぐあいがゼロになるわけではない

 よく言われるように,すべてをテストすることはできません.無限の時間を持っていたとしても無理です.漸近線に近づくものの,決して接することはありません.

  • 発生件数が飽和したように見えても,ほんとうに飽和したかどうかわからない

 図2のグラフは,「テストのための努力が一定である」という前提に立っています.例えば,テスト担当者(テスタ)が疲れて休んでいたりすると(あるいは,ひどい不ぐあいがあって作業が先に進まないと),累積不ぐあい数の伸びは小さくなります.だからといって,残存する不ぐあいが減少したわけではありません.

 この問題を改善するために,各テスト・ケースが一定のレベルにあるとみなしたときに,横軸にテスト・ケースの数(すなわち,テスト担当者の労力)を取ることもできます.

 ただし,この場合は別の問題があります.テストの定義を下記で見ておきます.

  IEEE/ANSI定義(Std. 610.12-1990)テスト
   ある指定した条件下で,システムないしはコンポーネントを操作するアクティビティである.結果を観察し/記録し,システムないしはコンポーネントの特定の側面に対して評価を行う.

 よく言われますが,テストというのは不ぐあいを見つけ出す行為ではありません.対象となるソフトウェアがテストした範囲において,正しいことを保証する行為です.したがって,テスト・ケースとリンクさせることにどこまで意味があるかは議論の分かれるところです.

f02_01.gif
〔図2〕不ぐあいの成長曲線(実はバクテリアの繁殖曲線)
信頼度成長曲線としては,このようにS字型をとるとする場合と,指数関数で表現されるとする場合がある.エラーが均一に散らばっていれば,指数関数表現のほうが適切であるように思える.ただし,実際にはこれだけではなく,テストに対する慣れなども存在するので,S字型になることが多いようだ.この場合,上記の生物の繁殖のようにロジスティック曲線やゴンペルツ曲線を用いて,残存エラーを推定することになる.なお,κは環境収容力と呼ばれており,ある環境(土壌,食物でも同じ)で,単位面積当たりどのくらいのバクテリアを保持できるかを示す.tmはそれが半分に達する時間.Δtは,κに対して,10%から90%に増える期間を表している.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日