テスト密度&バグ密度

テスト密度

テスト密度は、以下の式で定義する。
テスト密度[件/KS]=テスト項目数[件]÷変更行数[KS]

  • テスト項目数[件]とは・・・
    機能テスト仕様で規定するテストの数。
    チェックシートで規定する。

  • 変更行数[KS]とは・・・
    リポジトリの変更行数を1000で割った値。
    Git statによりリビジョン間の追加行数と削除行数の絶対値の和。

Gitのコマンドの例を示す。

1
2
3
$ cd iOs 
$ git diff --stat 7f51899991966325ac61e03dba5fc5b464502fb5..c7188c39ebdfcb3b8f5721ca46dc48653b919873 . 
  57 files changed, 1751 insertions(+), 257 deletions(-)
  • 開発期間の先頭と終了のリビジョン間のInsertionsとdeletionsの和を変更行数とする。
     (1751 + 257)÷1000=2.008[KS]
  • コメント及び空行を含む、並びファイル種類指定なしのため、プログラム言語を指定指定する一般的なSLOC(Source Lines Of Code)と比べて大きい値となることに注意。
  • 複数のコミットで同じファイルの同じ行を修正する場合に修正回数分だけカウントされる。開発期間の開始と終了の差分で算出すSLOCに比べて大きい値になることに注意。

バグ密度

バグ密度は、以下の式で定義する。
バグ密度 [件/KS]=バグ件数[件]÷変更行数[KS]

  • バグ件数とは・・・
    Redmineに登録されたバグチケットの数。

  • 変更行数とは・・・
    前述。

目標値

テスト密度、及びバグ密度の目標値を示す。
過去の経験を鑑みて定めた。目標値から逸脱した場合の対処も示す。

タイプ 目標値 目標値より少ないとき 目標値より多いとき
テスト密度 50~100[件/KS] テスト規模が不足の可能性あり。
テスト項目を追加する。
テスト形骸化の可能性あり。
過剰なテスト項目を削減する。
バグ密度 3~5[件/KS] 厳しいテストが不足している可能性。
テストパラメータ、テスト時間、厳しいテストの意識、テスト項目数を改善する。
テストの焦点ずれている。
疎通レベルのバグ流出の可能性。
テスト中止し設計者確認からやり直し。
影響範囲の再検討。