オルタナティブ・ブログ > 森崎修司の「どうやってはかるの?」 >

計測できそうでできない多くのこと。エンピリカル(実証的)アプローチで。

ソフトウェアテストの効果

»

まず、ここでの効果と効率の定義を説明して前提を揃えたいと思います。効果とは「何らかのメリット、成果が得られること」と定義できます。

テストにおける主要な効果は、以下の2つに集約されると考えます。このほかにも対象ソフトウェアへの理解が深まったり、将来の改変時に間違えにくくなる等のメリットもありますが、効果とする上では以下がわかりやすいので、ここではこの二つにしぼります。

  1. バグが見つかること:ある特定のテストを実行した結果、バグが発見されること

  2. バグがないことを確認すること:特定のテストを実行した結果、その範囲においてはバグがないことを確かめること

効果と一緒に使われることが多い効率とそれらに関連する価値について、このブログエントリでの解釈を説明します。

  • 効率:メリットや成果を得るためにどれくらいのコストや手間がかかるか。

  • 価値:投入したコストに対してどれくらいの効果が得られたか。

ただし、一般的に「このテストに効果はあるの?」という会話の中では、効果だけでなく「テストの価値」を指している場合が多いと感じています。つまり、「その効果を得るために、どれだけの手間やコストが必要なのか」という効率性も含めて話されている印象です。

テストの価値は対象となるソフトウェアの特性によって大きく変わります。

  1. 高い品質が求められるソフトウェア
    生命、安全、財産を毀損するような、ミッションクリティカルなシステムやセーフティクリティカルなソフトウェアでは、「バグがないことを確認する」テストが非常に重要になります。想定されるパターンを網羅的にテストすることに大きな意味があり、ここにコストをかけることは価値につながります。
  2. 修正が容易なソフトウェア
    一方で、多少の間違いがあっても大きな問題にならないようなケースでは、テストに膨大な手間をかけることが必ずしも正しいとは言えません。例えば、探索的テストは怪しい箇所を重点的にテストすることで、効率的にバグを発見できるため活用されています。これは間接的には、バグが見つからない可能性が高い箇所のテストをあえて省略し、効率を上げているとも考えられます。

Comment(0)