7.7.6 缺陷排除分析
前面我们已经讨论过软件缺陷和失效的定义,失效是缺陷的实例化,通过观测失效的不同原因数目可以近似估算软件中的缺陷数目;还可以通过缺陷排除数据,进行有效的缺陷排除分析。
缺陷率的通用概念是一定时间范围内的缺陷数与错误几率的比值。软件产品缺陷率,即使对某个特定的产品,在其发布前后不同时段内也是不同的。例如,对应用软件的角度来说,90%以上的缺陷是在发布后两年内被发现出来,而对操作系统,90%以上的缺陷通常在产品发布后需要4年的时间才能被发现出来。
1.整体缺陷清除率
假设F为描述软件规模用的功能点,D1为在软件开发过程中发现的所有缺陷数,D2为软件发布后发现的缺陷数,D为发现的总缺陷数,则D= D1 + D2。那么,对于一个应用软件项目,有如下计算软件质量的方程:
质量 = D2/F
缺陷注入率 = D/F
整体缺陷清除率= D1 /D
如果某个系统有100个功能点,开发过程中发现了120个错误,提交后又发现了22个错误,则:
D1 =120,D2 =22,D= D1+ D2 =142
质量(每功能点的缺陷数)= D2/F= 22/100= 0.22(22%)
缺陷注入率= D/F= 142/100= 1.42(142%)
整体缺陷清除率= D1/D= 120/142= 0.845(84.5%)
有资料统计,美国的平均整体缺陷清除率目前只达到大约85%,而对一些具有良好的管理和流程等著名的软件公司,其主流软件产品的缺陷清除率可以超过98%。
2.基于阶段的缺陷排除分析
阶段性缺陷清除率是测试缺陷密度度量的扩展,除测试外,还跟踪开发周期其他阶段中的缺陷,包括需求评审、设计评审、代码审查。基于阶段的缺陷排除分析一般称为DRM模型,这个模型概括了3种度量之间的关系,它们分别是缺陷注入、缺陷排除和有效性。该模型把一组错误注入率和一组阶段有效性作为输入,然后一步一步为缺陷排除模式建模。
下面通过一个稍微复杂些的注入-发现矩阵例子,介绍一下DRM建模的分析过程。在矩阵中,由于某种特殊原因,没有进行正式的需求评审,但是在需求阶段注入缺陷的可能性更大,在以后开发阶段会发现。测试阶段的对角线值表示不良修复数量,本例中,所有不良修复都是在同一阶段内被检测并修补好的。
| 需求 阶段 | 概要设 计阶段 | 详细设 计阶段 | 编码 阶段 | 单元测 试阶段 | 集成测 试阶段 | 系统测 试阶段 | 现场 阶段 | 注入 合计 |
需求评审 |
|
|
|
|
|
|
|
|
|
概要设计审查 | 49 | 681 |
|
|
|
|
|
| 730 |
详细设计审查 | 6 | 42 | 681 |
|
|
|
|
| 729 |
代码审查 | 12 | 28 | 114 | 941 |
|
|
|
| 1 095 |
21 | 43 | 43 | 223 | 2 |
|
|
| 332 | |
集成测试 | 20 | 41 | 61 | 261 | — | 4 |
|
| 387 |
6 | 8 | 24 | 72 | — | — | 1 |
| 111 | |
现场 | 8 | 16 | 16 | 40 | — | — | — | 1 | 81 |
发现合计 | 122 | 859 | 939 | 1537 | 2 | 4 | 1 | 1 | 3 465 |
本阶段缺陷移除率 |
|
|
|
|
|
|
|
|
|
通过公式的计算,这样就有了上表的简化视图,它是这样工作的:
开发阶段出口处存在的缺陷数=前一阶段泄露的缺陷数+本阶段注入的缺陷数-本阶段排除的缺陷数
其中,概要设计评审有效性可以根据此阶段排除的缺陷数730、从入口处(需求阶段)泄露的缺陷数122,以及当前阶段注入的缺陷数859计算得出:
730/(122+859)´100%=74%
单元测试有效性是通过单元测试排除的缺陷数332、入口处存在的缺陷数(从以前各阶段泄漏的缺陷数)122 + 859 + 939 + 1 537 – 730 – 729–1 095 = 903,以及当前阶段注入的缺陷数2计算得出的:
332/(903+2)´ 100%=37%
其他的缺陷排除有效性计算类似,得到表7-9。
阶 段 | 前一阶段泄露的缺陷数(/KLOC) | 注入缺陷数(/KLOC) | 小计(前两列和) | 缺陷排除有效率 | 排除缺陷数(/KLOC) | 阶段出口缺陷数(/KLOC) | |||
需求 | — | 1.2 | 1.2 | — | — | 1.2 | |||
概要设计 | 1.2 | 8.6 | 9.8 | 74% | 7.3 | 2.5 | |||
详细设计 | 2.5 | 9.4 | 11.9 | 61% | 7.3 | 4.6 | |||
编码 | 4.6 | 15.4 | 20.0 | 55% | 11.0 | 9.0 | |||
单元测试 | 9.0 |
| 9.0 | 36% | 3.2 | 5.8 | |||
集成测试 | 5.8 |
| 5.8 | 67% | 3.9 | 1.9 | |||
系统测试 | 1.9 |
| 1.9 | 58% | 1.1 | 0.8 | |||
现场 | 0.8 |
|
|
|
|
|
例如,如果对新的软件发布版本制定质量计划,就可以根据将要进行的改进计划修改模型参数值,如计划对单元测试的有效性改进10%,最终产品的质量会提高多少?之前每阶段在该阶段开发完成前的缺陷率新目标又是多少?如果在技术培训和强化培训方面投入,并计划是错误注入率下降20%,结果又会如何?
这是一个组织的积累数据,如果基于相同的过程经验还要开发类似的软件产品,就可以对表7-9中的数据建模后进行分析并得到答案。这种执行的效果是显而易见的,遗憾的是,目前国内数据度量、过程管理方面,类似的应用不足。
相关阅读:
版权声明:51Testing软件测试网获电子工业出版社授权连载《软件质量管理实践》部分章节,其 他个人或单位未经许可,不得对本内容复制、转载或进行镜像。51Testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。