ソフトウェアの品質を示す新しい指標の提案 (10月2日内容追加)
テスト対象のソフトウェアシステムの品質を示す指標にはいろいろあります。
・残存障害件数がいくつあるか
・システムダウンなどの重大障害が最近発生していないか
・ソフトウェア信頼度成長曲線の数値
製品出荷判定の際は、これらのデータを総合的に判断して可否を決定することになります。
そこでソフトウェアシステムの品質を示す新しい指標を提案したいと思います。
皆さんも経験されているかもしれませんが、製品出荷後に市場で発見される障害は、その障害がいくつの要因の組み合わせで発生しているかを分析すると、2つ以上の要因の組み合わせで発生した障害が大部分を占めています。
実例として、わたしのチームが総合テストを担当した製品の市場出荷後に発見された障害がいくつの要因の組み合わせで発生するものであるかをグラフで示します。
このグラフでは、障害数が少ないため大雑把な傾向しか分かりませんが、要因が2つの障害が最も多くなっています。この製品では、要因が3つの場合が思ったほど多くありません。この理由にはいろいろ考えられますがここでは取り上げません。要因が1つの障害はかなり少なく、要因が2つ以上の組み合わせで発生する障害が市場障害の大部分を占めいていることが分かります。
この理由は直感的にも分かることでしょう。たかだか1つの要因で発生する障害は、総合テストの段階であらかた発見され、修正されているからです。それに対し、2つ以上の要因が組み合わさった場合に発生する障害は、1つの要因だけで発生する障害に比較してその発見はかなり難しいものだからです。
総合テストでテストを繰り返すうちに、発見される障害は徐々に少なくなります。このことはソフトウェアシステムの品質が良くなったことを直接には意味しません。仮に同じテスト仕様書でテストを繰り返すならば発見された障害は修正され、次のテストでは障害ではなくなります。しかし、テスト仕様書に漏れがある場合は、発見されないままの障害が残ることになります(殺虫剤のパラドックス)。
先に述べたように、市場で発見される障害は2つ以上の要因の組み合わせによるものが多くを占めています。もし、1つの要因による障害が多いなら、その製品のテストはかなり不十分だったということになります。
このことから、総合テストで発見された障害がいくつの要因の組み合わせで発生するものであるかを、時期を区分してデータを取ることで、ソフトウェアシステムの品質を知ることができるのではないかということです。
ここで実例をあげてみます。このデータはあるビジネスホンシステムの総合テスト期間を前期、中期、および後期の3つに区切り、それぞれの期間で発見した障害がいくつの要因の組み合わせで発生するものであるかを示した表です。
この表から、テストが進むにつれ、要因が1つの障害が減少し、2つ以上の障害が増加していることが分かります。この表をグラフで表すとさらに特徴が良く分かると思います。
ソフトウェアシステムの品質は、1つの要因で発生する障害が、全障害に対してどれだけ少ない割合になっているかが指標として使えるのではないかと思います。
このグラフでは、テストを繰り返すうちに1つの要因による障害と2つの要因の組み合わせによる障害の数がほぼ等しくなっています。理想的には2つの要因の組み合わせによる障害が最も多くなることだと思います。それだけ漏れの少ないテストを行なっているということが言えます。
この方法が適用できるのは、比較的規模の大きなテストの場合に限られます。テスト期間として6ヶ月程度が最低ラインのように思います。
データの期間の区切り方などに詰めが必要ですが、1つの指標として参考になるのではないでしょうか。
それでは、また。


