リスク・ベース・テストの効果と限界

作成:2005年12月20日

吉田誠一のホームページ   >   ソフトウェア工学   >   技術コラム   >   開発プロセス

ソフトウェアテストを改善する手法として、リスク・ベース・テストが注目されている。

ソフトウェアの開発サイクルが短くなっている現在では、短時間にいかに効率良くテストを行い、ソフトウェアの品質を高められるかが焦点になっている。テスト不足による品質低下に悩む人にとって、リスク・ベース・テストは効果的かつ魅力的な解決策である。

だが、リスク・ベース・テストが改善するのは、テスト・プロセスである。品質低下の原因がテスト・プロセスではなく、テスト項目そのものにある場合は、リスク・ベース・テストを導入しても、品質を高めることはできないだろう。

目次

  1. リスク・ベース・テストとは
  2. リスク・ベース・テストの効果と限界
    1. 与えられた工数の中で、最大の成果を得られる
    2. テストの終了を合理的に判断できる
    3. バグの見逃しは防げない
  3. 読者の問題や疑問は解決されたのか?

リスク・ベース・テストとは

リスク・ベース・テストについては、下記の文献(以下「リスク・ベース・テストのススメ」と記す) に詳しい解説がある。

リスク・ベース・テストのススメ

宗雅彦著

JavaWorld 2005 June p158-170

リスク・ベース・テストでは、初めにリスク分析を行う。それぞれの項目について、下記の2つの観点からリスクを評価する。

  • ソフトウェアに欠陥を作り込んでしまう可能性(実現確率)。
  • 欠陥によって引き起こされる問題の重大性(損害)。

この2つのリスクが高いものから順にテストを行うことで、問題の多い箇所や、重大な問題を優先的に解決していく。

リスク・ベース・テストの効果と限界

与えられた工数の中で、最大の成果を得られる

リスク・ベース・テストの基本は、与えられた工数の中で、最大の成果を得ることにある。

ソフトウェアテストでは一般に、テスト項目をすべてクリアしたら完了、という認識がある。だが現実には、テストの時間と予算は限られている。テストの順序に注意を払わなかった従来のテストでは、予定終了日になっても、重大なバグが残っていることが多かった。

リスク・ベース・テストは、リスクの高い順にテストすることで、与えられた工数の中では、ソフトウェアの品質を最も高くすることができる。

リスク・ベース・テストによる品質の向上

テストの終了を合理的に判断できる

リスク・ベース・テストを応用すると、テストをいつまで実施すれば良いかを、合理的に判断できるようになる。

テストは、予定した日数だけ実施すれば良いというものではない。もし、予定の工数を消化しても、ソフトウェアの品質が不十分であれば、テストを延長する必要がある。逆に、予定より早くソフトウェアの品質が保証できれば、テストを打ち切り、工数を削減することもできる。

リスク・ベース・テストでは、ソフトウェアの品質が満たすべき基準を、リスクによって決めることができる。

予定終了日の時点で、まだ設定した閾値より高いリスクの項目が残っていれば、テストを延長する必要がある。逆に、予定より早く、閾値より高いリスクの項目をすべて消化したら、それ以上、テストを続ける必要はない。

リスク・ベース・テストによるテストの終了判定

バグの見逃しは防げない

リスク・ベース・テストの限界は、バグの見逃しを防ぐことができない点である。

ソフトウェアの品質についての最大の問題は、テストでバグを見逃してしまい、品質が不十分なままリリースしてしまうことにある。これは、テスト項目に漏れがあったことが原因だ。そのバグを引き起こすような手順を思いつくことができなかったのである。

リスク・ベース・テストによって、思いついたテスト項目を最適な順序で実施することで、テストを効率的にできる。だが、従来のテストで思いつかなかったテスト項目は、リスク・ベース・テストを導入しても、やはり思いつくことはできない。

リスク・ベース・テストでも見逃されるバグ

読者の問題や疑問は解決されたのか?

「リスク・ベース・テストのススメ」の冒頭では、読者の問題や疑問として、下記の3つが挙げられている。

  • リリースの直前になっても、ソフトウェアの欠陥が収束しない
  • きちんとテストを実施したのに、致命的な欠陥を見逃してしまった
  • どこまでテストをすれば終わりになるのかがわからない

このうち、1つ目の問題と3つ目の疑問は、リスク・ベース・テストによって解決される。少なくとも、リスク・ベース・テストは1つの指針を与えてくれる。

だが、2つ目の問題は、リスク・ベース・テストで解決できる問題ではない。前述したように、リスク・ベース・テストでは、バグの見逃しを防ぐことはできないのである。

必要なテスト項目は漏れなく挙げられること。これが、リスク・ベース・テストの前提である。漏れのない項目に対して、最善の実施方法を考えるのが、リスク・ベース・テストなのだ。

Copyright(C) Seiichi Yoshida ( comet@aerith.net ). All rights reserved.