濱井です。
2002/07/23 19:19:38 +0900にhkikuchi@....jpさんが送られた
メールに関する返信です。
> そこで「テストユニット+テストカバレッジ」の組み合わせで品質指標を算出する
>方法を
>紹介したいと思います。
> テストユニットは、ソフトウェア品質を向上させる効果的な手法だと思います。
>さらに、
>このテストユニットがどれだけ頼りになるのか定量的に把握できれば、品質はより
>堅固に
>なると考えます。
水を差すことになるかもしれませんが、カバレッジ率を重視しすぎない方が
いいかもしれません。
マイヤーズの本にも書かれていますが、カバレッジ率100%でも見つからない
種類の欠陥があることがわかっています。あるべき処理が抜けていると
いうようなケースは、カバレッジ率は役に立ちません。CodeRedやNimdaで
悪用されたバッファオーバーフローや、最近ウェブサイトで次々と
見つかっているクロスサイトスクリプティング脆弱性などはその例です。
このように仕様そのものに欠陥がある、仕様そのものが考慮不足である
というような例は珍しくありません。
> 市販のカバレッジツールで算出されたテストユニットコードカバレッジ率(全コー
>ド
>ステップ数における実行ステップ数の割合)は、品質を知る一指標になりえると思
>います。
> なぜなら、コードカバレッジが50%のモジュールより90%のモジュールの方が絶対的
>な信頼が
>あるからです。
ある点ばかり重視していると、それ以外のところが疎かになりがちです。
カバレッジ率ばかり重視していると、それでは見つからない欠陥を見逃す
リスクが高くなります。
そもそも、品質は信頼性だけではありません。[XP-jp:02842]でも
ふれられているように、デマルコが「ゆとりの法則」の「第16章 品質管理」
において、品質向上プログラムが品質低下プログラムになっていると批判
しています。やっていることが欠陥数の削減だけで、品質全体としてはむしろ
低下しているということです。
カバレッジ率が無意味だとは思いませんが、カバレッジ率が重要か否かは
一概には言えないでしょう。
> 「ソフトウェア品質をどのように定量的に測るのか?」との課題に対して、ソフ
「品質」とは何か、「定量的」とはどういうことなのか、といった大本の問題
をソフトウェア工学は疎かにしていたように思います。