ももの知恵の樹

欠陥密度とテスト密度について

欠陥密度(バグ密度)とは

欠陥密度(DefectDensity)とは

欠陥密度とは、プログラムの単位規模あたりの検知された欠陥数を示す品質指標です。
つまり、ソフトウェアの開発規模に対して発生しているバグの割合を示すものです。

欠陥密度は、テストで検出されたバグ数を、テスト対象となるプログラム(ソースコード)の規模で割って求めます。
例えば、全体で10000行(10KLOC)のプログラムをテストして50個のバグが発見された場合、1000行あたり5件(5件/KLOC)のバグがあると分かります。
このプログラムにおける1KLOC当たりのバグ密度は「5」となります。


欠陥密度=検出欠陥数(件)÷開発規模

開発規模の単位としては、FP(Function Point:機能数・機能の複雑性)やLOC(Lines Of Code:プログラムの行数)、KLOCなどを用います。
開発するソフトウェアの種類に適した算出方法を選択して、他プロジェクトの実例と定量的に比較できるようにします。


平均欠陥密度

平均欠陥密度とは、単位当たりの欠陥密度のことです。
例えば、コード1000行当たりの欠陥数、1機能当たりのバグ数、1ページ当たりのバグ数などのことです。
なお、ここでいう平均とは、単一ソフトウェア当たりにおける平均と同一分野のソフトウェア当たりにおける平均の2種類があります。

同一分野のソフトウェア当たりにおける平均とは、類似ソフトウェアと品質比較するために、規模を合わせて平均値を比較することを目的とします。
一般的に、開発規模の大きなソフトウェアの方が開発難易度が高く、不具合発生率・欠陥検出数が多くなります。
そのために、開発規模を平均値で合わせて定量的な比較を行い、ソフトウェア間の品質差を把握をします。

単一ソフトウェア当たりにおける平均は、欠陥の偏在を考慮した分析を行うための指標把握を目的とします。
ソフトウェアの欠陥は「偏在」するため、全体の開発規模から欠陥数の割合を求めることは、正しく品質を知る指標になり得ません。
そこで、開発規模の単位を分割して、その上での欠陥密度の平均値を求めることで、平均からの乖離を知ることができます。


テスト密度とは

テスト密度とは

テスト密度とは、プログラムの単位規模あたりの実施されたテスト数を示す品質指標です。
この指標は、開発成果物に対してテストの量が十分であるかを測定・評価することができます。

欠陥密度における規模算出と同じく、開発規模の単位としては、FPやLOC、KLOCなどを用います。
開発するソフトウェアの種類に適した算出方法を選択して、他プロジェクトの実例と定量的に比較できるようにします。


テスト密度=テスト数(件)÷開発規模

一般的に、ソフトウェアの実質的な品質が低い場合にも、テスト数が少なければ検出されるバグは少なくなります。
そのため、欠陥密度のみを品質の指標として利用することは、ソフトウェア品質の誤謬に繋がります。
欠陥密度とテスト密度の2つの指標を合わせて確認することで、ソフトウェア品質を正しく把握する必要があります。


ゾーン分析

ゾーン分析とは、2つの異なるメトリクスの基準値を用いて視覚化し、データをゾーン分けして分析する技法です。
テスト分野においては、横軸をテスト密度、縦軸をバグ密度とし、9つのゾーンに分けた図を作成して、品質データを分析します。

ゾーンの分割は、目標値を基準に定めます。
例えば、テスト密度の目標値を3.0~5.0と設定した場合、「3.0未満」「3.0以上5.0以内」「5.0超過」の3ゾーンに分割されます。
なお、バグ密度も同様に目標値で分割すると、合計で9ゾーンに分割されます。



ゾーン 説明
ゾーン1 期待通りにバグが発見できている(品質良好である)
ゾーン2 テスト数に対して、バグの発見が少ない(テスト効率が悪い、内容の点検が必要)
ゾーン3 テスト数が少ないが、相当数のバグを発見できている。(テスト内容の見直しが必要)
ゾーン4 テスト数に対して、あまりにもバグの発見が少ない(テスト効率が悪い、内容の点検が必要)
ゾーン5 想定よりもバグが多い。(品質確保ができてないため、前行程を含めた原因追及が必要)
ゾーン6 テストすればするほどバグが見つかる状態。(品質確保ができつつある)
ゾーン7 テスト不足なのにバグの発見が多い。(品質確保ができてない)
ゾーン8 テスト不足なのにバグがある程度発見されている。(品質確保ができてない)
ゾーン9 潜在バグが残存している。(より多くのテストが必要)

関連ページ