品質メトリクス -テスト密度-

2023年8月11日

「ソフトウェア開発データ白書」(IPA発行)の最新版(2018-2019)が2018年10月に発行されたので、最新版の品質指標値を引用する。

旧版との大きな違いは、「言語別の統計値」の掲載が取りやめになっていることである。その理由を、
①現状、多種類の言語を用いた開発が一般的になっている。
②白書データでの言語別の生産性、信頼性などの差は、言語そのものの差ではなく、QCD要求レベルなど他の要因も含んだ開発の結果を示すものであり、誤解を招く恐れがあるため。
としている。
②に関して、個人的には言語による効率の差(例えば、低級言語と高級言語の差異)があるようにも思うが、白書に指摘があるとおり、業種やシステムの種類(勘定系、基幹系、情報系、など)でQCD要求レベルが異なることを考えれば、そちらの要因の方が大きいのかもしれない。
特にテストケース密度は、以下の引用からも明らかなように、標準偏差が極めて大きい(すなわちデータのばらつきが大きい)から、言語の違いよりもシステムの特性などを考慮して目標値を設定すべきであろう。

以下に新版「2018-2019」の指標値を引用する。

SLOC規模あたりのテストケース数(新規開発) [件/KSLOC](2018-2019)
P25 中央値 P75 平均 標準偏差
結合テスト 17.85 35.7 64.27 57.45 106.99
総合テスト 3.92 9.31 17.94 17.08 27.91
SLOC規模あたりのテストケース数(改良開発) [件/KSLOC](2018-2019)
P25 中央値 P75 平均 標準偏差
結合テスト 32.98 65.72 171.76 787.41 6444.57
総合テスト 8.7 24.8 69.85 264.41 1735.08
FP規模あたりのテストケース数(新規開発) [件/KFP](2018-2019)
P25 中央値 P75 平均 標準偏差
結合テスト 739.5 1790.5 2811.9 2791.3 3953.3
総合テスト 204.1 441 958.2 718 871.9
FP規模あたりのテストケース数(改良開発) [件/KFP](2018-2019)
P25 中央値 P75 平均 標準偏差
結合テスト 1656.3 3346.9 6407.3 5610.8 7815.3
総合テスト 574.2 1242.9 3018.2 3822.1 8761.8
旧版のデータは以下を参照下さい。
「ソフトウェア開発データ白書」(IPA発行)の最新版(2016-2017)が2016年10月に発行されたことにともない、本記事中の品質指標値を更新した。
最新版のデータは赤字で示し、旧版(2014-2015)と対比できる形とした。

「品質メトリクス -バグ密度/欠陥密度-」に続き、「ソフトウェア開発データ白書 2014-2015」(IPA:独立行政法人情報処理推進機構)からテスト密度を見てみる。
テスト密度に関しても、データ白書では、「FP(ファンクションポイント)規模」と「SLOC(コード行数)規模」に分けて、それぞれの指標値が掲載されている。ここでは前回のバグ密度と同じく、SLOC規模の指標値を取り上げる。
テスト密度に関しても新規開発案件と改修案件(本書では改良開発案件と称している)の、両方の数値が記載されている。
バグ密度のところでも触れたように、改修案件の場合は改修部分だけでなく、改修が母体に与える影響範囲を考慮する必要がある。しかし、データ白書ではこの点は考慮されていないようだ(改修案件については改修規模でテスト密度を算出している)。
改修案件と新規案件のテスト密度(件/KSLOC)を比較すると、母体の影響範囲に対するテスト(いわゆるデグレード・テスト)がある分、改修案件の方がテスト密度が高い。但し、母体の影響範囲の規模は案件毎に様々であろうから、データ白書のデータはバラつきが大きいと思われる。さらにテストケース数は、デグレード・テストをどこまで(範囲)、どの程度の粒度で行うのか(および許容されるテスト期間)などのテスト方針にも左右されるだろう。
データ白書の統計データを見た限りでは、改修案件のテスト密度は、新規開発のおおよそ2倍~5倍になっている。
SLOC規模あたりのテストケース数(新規開発) 結合テスト [件/KSLOC]  (2016-2017)※
開発言語 P25 中央値 P75 平均値
COBOL 5.421 19.562 52.912 35.506
C 22.102 38.000 55.660 42.277
VB 10.974 21.928 41.773 33.047
Java 10.875 27.815 48.273 53.213
SLOC規模あたりのテストケース数(新規開発) 結合テスト [件/KSLOC]  (2014-2015)
開発言語 P25 中央値 P75 平均値
COBOL 6.694 20.088 51.225 30.703
C 22.393 38.000 58.567 44.325
VB 7.842 19.660 41.361 31.077
Java 10.576 27.058 46.824 52.816
SLOC規模あたりのテストケース数(改良開発) 結合テスト [件/KSLOC]  (2016-2017)※
開発言語 P25 中央値 P75 平均値
COBOL 15.0 41.9 96.5 873.6
C 26.2 60.6 141.6 167.5
VB 18.3 62.0 138.3 142.3
Java 30.5 58.1 143.7 270.6
SLOC規模あたりのテストケース数(改良開発) 結合テスト [件/KSLOC]  (2014-2015)
開発言語 P25 中央値 P75 平均値
COBOL 11.6 36.4 73.2 74.5
C 17.7 57.7 199.1 238.4
VB 20.9 63.8 150.5 135.6
Java 26.7 60.2 149.4 259.1
SLOC規模あたりのテストケース数(新規開発) 総合テスト [件/KSLOC]  (2016-2017)※
開発言語 P25 中央値 P75 平均値
COBOL 2.370 6.234 18.440 17.192
C 2.834 10.955 17.169 20.709
VB 1.957 6.048 13.362 28.645
Java 2.963 8.297 17.943 16.489
SLOC規模あたりのテストケース数(新規開発) 総合テスト [件/KSLOC]  (2014-2015)
開発言語 P25 中央値 P75 平均値
COBOL 1.956 5.041 11.789 14.954
C 2.863 11.000 17.547 30.942
VB 2.400 6.131 14.778 38.247
Java 2.963 8.192 17.943 17.768
SLOC規模あたりのテストケース数(改良開発) 総合テスト [件/KSLOC]  (2016-2017)※
開発言語 P25 中央値 P75 平均値
COBOL 5.1 13.0 29.4 223.5
C 10.1 20.3 79.0 83.0
VB 5.5 22.0 52.3 353.8
Java 7.2 16.1 36.3 77.2
SLOC規模あたりのテストケース数(改良開発) 総合テスト [件/KSLOC]  (2014-2015)
開発言語 P25 中央値 P75 平均値
COBOL 4.9 12.4 26.3 45.5
C 8.4 30.0 105.5 130.5
VB 6.7 28.4 91.5 96.3
Java 6.1 16.2 42.6 74.7
注)表の数値の出展は「ソフトウェア開発データ白書 2014-2015」(IPA:独立行政法人情報処理推進機構)である。
※は「ソフトウェア開発データ白書 2016-2017」より引用。


ソフトウェア開発データ白書には、FP(ファンクションポイント)規模あたりのテスト密度も出ているので、参考までに引用しておく。FPはIFPUGグループのものであり、FP規模は調整前の機能規模(未調整ファンクションポイント)を使用している。

FP規模あたりのテストケース数(新規開発) [件/KFP]  (2016-2017)※
工程 P25 中央値 P75 平均値
結合テスト 753.7 1,961.4 3,060.4 3,035.0
総合テスト 199.3 421.7 1,071.4 932.4
FP規模あたりのテストケース数(新規開発) [件/KFP]  (2014-2015)
工程 P25 中央値 P75 平均値
結合テスト 687.1 1,860.1 2,978.1 2.943.3
総合テスト 199.5 423.7 1,119.2 989.4
FP規模あたりのテストケース数(改良開発) [件/KFP]  (2016-2017)※
工程 P25 中央値 P75 平均値
結合テスト 1,636.6 3,320.6 6,585.4 7,055.8
総合テスト 501.1 1,224.1 1,974.8 5,293.3
FP規模あたりのテストケース数(改良開発) [件/KFP]  (2014-2015)
工程 P25 中央値 P75 平均値
結合テスト 1,596.2 3,131.8 6,976.2 7219.3
総合テスト 483.5 1,195.7 1,860.1 5,336.9

データ白書では、主要なデータ間の相関関係にも言及しているので、代表的なものを引用しておく。
本書にも注意書きがあるが、掲載されている回帰式は収集したデータを統計処理した結果であり、あくまでも参考値として使用するべきものである。
表中の"R"は相関係数であり、0.85以上は強い相関関係、0.70~0.85はやや強い相関関係があることを表している。
例えば、プロジェクト全体の工期は工数の3乗根に比例する傾向がある(新規開発案件ではやや強い相関関係がみられる)。

回帰式 A B R
プロジェクト全体の工数と工期 (新規開発) 工期=A*(工数)**B 0.44 0.32 0.73
プロジェクト全体の工数と工期 (改良開発) 工期=A*(工数)**B 0.42 0.32 0.69
SLOC規模と工数 (全開発種別、主開発言語混在) 工数=A*(SLOC)**B 6.69 0.68 0.79

PJ管理あれこれ
「PJ管理あれこれ」のINDEX