本章节主要讲解“软件测试的缺陷成本放大效应以及集群效应和收敛性”的内容,缺陷成本放大效应是指缺陷修复成本会出现放大的现象,也就是缺陷修复的成本不是一成不变的,随着产品所处阶段不同,缺陷修复成本也不一样,并且产品越是接近推向市场或者已经进入市场,缺陷修复的成本就越高,这就是缺陷修复成本的放大效应。
关于缺陷修复成本的放大效应,在缺陷修复成本中会详细介绍。
缺陷集群效应,Pareto 原则是20 世纪初意大利统计学家、经济学家维弗雷多·帕雷托提出的,他指出:“在任何特定群体中,重要的因数通常只占少数,而不重要的因数则占多数,因此只要控制具有重要性的少数因数即可以控制全局。”这个原理经过多年的演化,已变成当今管理学界所熟知的二八法则,即80%的公司利润来自20%的重要客户,其余的20%的利润则来自80%的普通客户。
在我们的软件测试过程中,对所有的缺陷所分布的规则进行分析时,发现也存在这类集群现象。
80%的缺陷主要集中在20%的模块中,也就是说,缺陷其实并不是平均分布,其也呈现集群分布方式。
依据缺陷集群现象,我们可以对测试过程进行以下改进:
测试时应该将主要精力放在核心的20%的功能模块中。
通常一个模块发现很多缺陷,那么通常这个模块中可能发现更多的缺陷。
注意:所以在测试前对以前研发的类似项目进行缺陷分布的分析是有必要的,可以按功能模块的方式对缺陷进行详细的分析,这样可以得出哪些功能模块曾经出现缺陷集群现象,这为后期项目测试策略的制定有着积极的作用。
缺陷的收敛性是指在系统测试过程中,每个Build 版本所发现的缺陷数是逐渐减少的,呈逐步收敛的现象,最后趋向于零值。缺陷收敛性如图9-5 所示。需要注意的是,虽然缺陷是具有收敛性的,但是并不代表测试过程中下一个Build 版本所发现的缺陷数一定比上一个Build 版本所发现的缺陷数少。在图9-5 中,T2 版本所发现的缺陷就比T1 版本所发现的缺陷多,这种现象一般是由以下两个原因引起的:
需求变更:需求出现修改或增加的情况时,可以导致当前Build 版本所发现的缺陷数增多。
修改上一版本的缺陷时引入了一些新的缺陷。
图9-5 缺陷收敛性
一般情况下,这种情况只会在测试的前期出现,如果在测试后期出现这种情况(后期缺陷数只会出现小幅度的反弹,并且缺陷的数量不多,一般是在5 个以内),说明我们制定的测试策略存在很大的问题。
缺陷收敛性的曲线图中有两个特征:
(1)Bug 收敛点
Bug 收敛点是指发现的缺陷开始逐渐减少的一个转折点,如图9-5 所示,在T3 版测试时Bug 数量开始出现收敛现象,T3 版即为收敛点。
(2)零Bug 反弹
零Bug 反弹是指在某一个Build 测试版本过程中发现零个Bug。零Bug 反弹一般出现在测试的后期,后期主要是验证缺陷修改的情况,如图9-5 所示,在T5 时出现零Bug 反弹现象,即T5版本只发现零个Bug,但在T6、T7 和T8 版又发现一些Bug,此时就出现明显的零Bug 反弹现象。
为什么在后期又可能发现极少一些Bug 呢?工作中有可能出现这种情况,T5 主要是对修改的问题进行回归测试,但开发工程师并没有一次性将所有的遗留问题都修改成功,不得不提交T6 版的测试。但T5回归测试修改的问题时,并未带来新的Bug,而在T6 时遗留问题又引入了新的Bug,这样就容易出现零Bug 反弹现象。