缺陷检测百分比DDP(Defect Detection Percentage)常常可以用来评判软件测试生命周期内某个阶段的测试有效性。但是,在实际评判测试有效性过程中,DDP也存在某些方面的欠缺。本文通过分析DDP的基本原理,笔者提出了更适合测试有效性评估的优化DDP(简称O-DDP)。
1)DDP
穷尽测试是不可能的,因此,不可避免有一些缺陷会遗漏到客户的使用现场,从而触发软件产品产生令用户不满意的失效或者各种问题。通常来说,在测试过程中判断测试人员的测试有效性是很困难的。但是通过用户反馈的缺陷数目,却可以直观的说明测试人员是否遗漏了比较多的问题,从而反映测试人员的测试有效性。缺陷检测百分比DDP(Defect Detection Percentage)就是基于这样的目的进行定义的,它可以用来评判软件测试生命周期内某个阶段的测试有效性,它以百分比的形式进行计算。其计算公式为:
DDP = [R1 / (R1 + R2)] * 100%
其中:
1)R1指的是被评估阶段发现所发现的缺陷数目;
2)R2是被评估阶段之后所发现的所有的缺陷数目;
DDP计算公式的分母并不是发现的总的缺陷数目,而是指该阶段之后所有发现的缺陷数目(包括该阶段的缺陷数目)。表1是计算DDP的一个例子(主要针对动态测试而言的):表1 DDP计算的例子
采用DDP作为测试有效性的评估指标,主要存在两个问题:第一个是DDP无法在测试过程中对测试有效性进行评估,必须要等待产品发布一段时间之后才能进行,例如:产品发布之后3个月;另一个问题是DDP计算过程中只考虑了用户反馈的缺陷的数目,而没有考虑每个缺陷的严重程度;单纯的缺陷的数目,并不能正确的反映遗漏到客户的缺陷对用户造成的影响程度。而测试的有效性,要求测试人员尽早发现尽量多的严重的问题,而不仅仅是尽量多的缺陷数目。
对于DDP的第一个问题,由于DDP本身的定义要求,无法提供好的建议来解决该指标对测试有效性评估的延后性。而对于第二个问题,本文将综合考虑用户反馈的缺陷数目和严重程度,对DDP计算实现优化,从而更好的评估测试有效性。
2)O-DDP
O-DDP的基本原理和DDP是一样的,只是在计算过程中,同时考虑了缺陷的数目和缺陷的严重程度。根据笔者所在组织和项目的特点,其定义的缺陷严重程度如下[2]:
1)严重程度1(致命的):产品在正常的运行环境下无法给用户提供服务,并且没有其他的工作方式可以补救;或者软件失效会造成人身伤害或危及人身安全;
2)严重程度2(严重的):极大地影响系统提供给用户的服务,或者严重影响系统要求或者基本功能的实现;
3)严重程度3(一般的):系统功能需要增强或存在缺陷,但有相应的补救方法解决这个缺陷;
4)严重程度4(轻微的):细小的问题,不需要补救方法或对功能进行增强;或者操作不方便,容易使用户误操作;
不同的缺陷严重程度,其定义的权重分别为w1 = 10、w2 = 4、w3 = 2和w4 = 1,分别对应严重程度1(致命的)、严重程度2(严重的)、严重程度3(一般的)和严重程度4(轻微的)。
下面通过案例的阐述,说明DDP和O-DDP计算得到的不同结果,以及根据结果分析得到的不同结论。在该案例中,评估的目标是系统测试的有效性,因此采用的缺陷数目分别来自系统测试发现的缺陷和在产品发布3个月之内用户反馈的缺陷。表1是根据DDP得到的结果:表2 DDP
我们从表1中得到的DDP = 89.54%结果来看,系统测试的有效性应该是非常不错的,因为遗留到用户现场的缺陷数目相对比较少。但是,在我们进行具体详细的分析用户反馈的缺陷的时候,发现用户对该产品的质量严重不满意。他们所反馈的缺陷,很多都是严重影响他们正常使用的问题。因此,上表中的DDP结果并不是让人信服的。
而后我们引入O-DDP,重新进行测试有效性的评估,其计算公式和DDP的公式一样,只是其中每个参数的计算进行了优化:
O-DDP = [R1 / (R1 + R2)] * 100%
其中:
1)R1是系统测试阶段发现的缺陷和它们不同严重程度权重乘积之和,具体计算公式是R1 = m1*w1 + m2*w2 + m3*w3 + m4*w4,其中m#指的是系统测试阶段不同严重程度的缺陷的数目;
2)R2是产品发布之后在用户现场发现的缺陷和它们不同严重程度权重乘积之和,具体计算公式是R2 = n1*w1 + n2*w2 + n3*w3 + n4*w4,其中n#指的是系统测试阶段不同严重程度的缺陷的数目
得到的详细数据如表2所示:表3 O-DDP
3)O-DDP和DDP比较
DDP的计算仅仅考虑了遗留到用户现场的缺陷的数目,完全没有考虑不同缺陷对用户的不同影响程度。而O-DDP的计算兼顾了缺陷的数目和缺陷的严重程度,相对于DDP而言,在判断测试人员的测试有效性方面O-DDP更加全面。
根据表1得到的DDP = 89.54%,而表2计算得到O-DDP = 80.31%,其中的差距差不多是10%。这里面说明了什么?我们可以对此进行简单的分析:
1)第一个可能是测试人员在进行系统测试的时候,发现的严重程度为1和2的缺陷占的比重较低;
2)第二个可能是在用户现场发现的缺陷严重程度为1和2的缺陷占比比较高;
3)不管是哪种情况,都应该引起测试人员的注意:测试人员在系统测试过程中遗漏了某些重要的缺陷,特别是用户特别关注的受到影响的缺陷。