软件质量管理实践(连载四十)

发表于:2009-5-22 14:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:于波、姜艳    来源:51Testing提供试读

关键字:软件质量 质量管理 缺陷分析

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软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号