はじめに
本記事では、何かとわかりにくい単体試験の”品質合格”の判断基準を記載しています。(品質合格 = 単体試験完了基準)。本記事は、基本情報技術者 平成28年秋期 午後 問6をもとに記載をしております。また、あまり言及されない、単体試験のテスト密度とバグ密度の目安についても記載をしております。
![](https://kukuru99ru.com/wp-content/uploads/cocoon-resources/blog-card-cache/704e47faaad817816c054e22c2e7aafa.png)
単体試験 品質評価グラフ
![](https://kukuru99ru.com/wp-content/uploads/2022/10/image-38-1024x566.png)
単体試験の品質評価は上記のようにまとめられます。
それぞれのエリアについて記載を進めていきます。
Ⅰ. バグ密度が高い
このエリアはバグ件数が多く、プログラム品質不良である可能性が一番高いエリアとなります。本エリアに入った場合は、注意深くバグの内容を確認し、原因分析を行い、必要な対処を行う必要があります。
Ⅱ. テスト不足
このエリアはテスト不足であるため、十分な試験ができていない可能性があります。このまま次工程に進んでしまうと、バグが流出する可能性があるため、改めて試験設計を見直す必要があります。
Ⅲ. 品質良好 or テスト品質不良
このエリアは以下2種類に分解されます。
- プログラム品質が非常に高く、バグが想定を下回ったケース。
- テスト品質が悪いケース。
特に2であることを確かめるため、試験の網羅性や、重複試験などが存在しないかを確かめる必要があります。
Ⅳ. 品質良好
このエリアは、プログラム品質・テスト品質共に良好であったと考えられるエリアです。
しかし、担当者が故意にこのエリアに持っていくように数値を作っている可能性は捨てられないため、テスト内容とバグ内容を品質分析し、問題ないかを確認する必要があります。
まとめ
簡単に(口語的に)まとめると下になります。雰囲気としては下を理解すれば十分です。
![](https://kukuru99ru.com/wp-content/uploads/2022/10/image-41-1024x618.png)
品質分析の考え方は以下で記載していますのでご確認ください。(結合試験・総合試験について記載していますが、単体試験でも考え方は同じです。)
単体試験 品質基準
最後に、単体試験の品質基準(テスト密度とバグ密度の基準値)の考え方について記載します。
IPAが発行している、「ソフトウェア開発 データ白書」にも”結合試験”・”総合試験”についてしか記載がないため、単体試験の考え方について触れておきます。
目安として、単体試験におけるバグ密度テスト密度は結合試験に対して、以下のようにするのが良いと考えます。
開発種別 | 項目 | 係数(結合試験比) |
---|---|---|
新規開発 | テスト密度 | 2倍 |
バグ密度 | 2倍 | |
改良開発 | テスト密度 | 1.5倍 |
バグ密度 | 2倍 |
改良開発のテスト密度のみ下げているのは、改良開発のほうが結合試験件数が多くなることが一般的であるため、過剰な件数となることを防ぐためです。大体結合試験の2倍くらいが目安だと思っていれば十分です。(ITベンダーから出てきた単体試験数が結合試験と比べてどんなもんか?を見てみましょう。)
![](https://kukuru99ru.com/wp-content/uploads/2022/10/image-39-1024x497.png)
もちろん、この値は目安でしかないので、どこまで必要かはプロジェクト特性によって変わってきます。
![](https://kukuru99ru.com/wp-content/uploads/2022/08/478119_s-160x90.jpg)
単体試験 新規開発 テスト密度・バグ密度
具体的に2018-19年度 ソフトウェア データ白書の値に当て込むと以下のようになります。ソフトウェアデータ白書は更新されるため、最新情報にアップデートいただくのが良いと思います。
[件/KSLOC] | 最小値 | P25 | 中央値 | P75 | 最大値 |
---|---|---|---|---|---|
結合テスト(テストケース) | 0.17 | 17.85 | 35.70 | 64.27 | 1,332 |
単体テスト(テストケース) | 0.34 | 35.70 | 71.40 | 128.54 | 2,664 |
結合テストバグ密度(現象) | 0.010 | 0.943 | 1.600 | 2.626 | 28.771 |
単体テストバグ密度(現象) | 0.020 | 1.886 | 3.200 | 5.252 | 57.542 |
結合テストバグ密度(原因) | 0.039 | 0.545 | 1.391 | 2.261 | 28.771 |
単体テストバグ密度(原因) | 0.078 | 1.090 | 2.782 | 4.522 | 57.542 |
単体試験 改良開発 テスト密度・バグ密度
[件/KSLOC] | 最小値 | P25 | 中央値 | P75 | 最大値 |
---|---|---|---|---|---|
結合テスト(テストケース) | 0.590 | 32.98 | 65.72 | 171.76 | 100,000 |
単体テスト(テストケース) | 0.885 | 49.47 | 98.58 | 257.64 | 150,000 |
結合テストバグ密度(現象) | 0.000 | 0.308 | 1.010 | 2.425 | 7,846 |
単体テストバグ密度(現象) | 0.000 | 0.616 | 2.020 | 4.850 | 15,692 |
結合テストバグ密度(原因) | 0.000 | 0.431 | 1.200 | 2.260 | 7846 |
単体テストバグ密度(原因) | 0.000 | 0.862 | 1.208 | 4.520 | 15,692 |
おわりに
本記事では、単体試験の評価基準と、単体試験におけるテスト密度とバグ密度の目安について、記載を行いました。
単体試験は、ITベンダーに閉じた試験となることが多く、問題に気づきにくいことが多いため、注意して進行するように努めるのが良いと思います。
ユーザ企業側が気を付けるべきポイントは以下にまとめておりますので、こちらもご参照いただければ嬉しいです。
コメント