品質メトリクス -テスト密度-
「ソフトウェア開発データ白書」(IPA発行)の最新版(2018-2019)が2018年10月に発行されたので、最新版の品質指標値を引用する。
旧版との大きな違いは、「言語別の統計値」の掲載が取りやめになっていることである。その理由を、 以下に新版「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 |
データ白書では、主要なデータ間の相関関係にも言及しているので、代表的なものを引用しておく。 |
回帰式 | 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 |