作为静态测试的评审,其主要目的是测试人员尽早参与尽早发现尽量多的缺陷,避免在后续阶段出现更多的缺陷。从这个意义而言,尽早参与评审可以作为缺陷预防的一种有效手段。但在评审实践过程中,其效果并不是令人满意。
本文将从评审过程中收集与分析度量入手,阐述一个好的评审应该去收集和分析哪些度量,以评估评审效果是否满足了要求。评审过程中需要收集各种度量,以确保:
1.评估评审对象的质量;
2.评估评审过程的效率和有效性;
3.评估评审的投资回报率;
但在评审实践过程中,针对评审收集度量数据往往会处在两个极端:一种是几乎没有评审度量数据,评估和监控只是凭感觉;而另一种是罗列一堆度量数据,看得你眼花缭乱,好像告诉你 - 你自己看着办吧,喜欢哪个你就选择哪个。这也是大家觉得讨论度量时的第一种感觉:度量好遥远,和我没有什么关系。但是,针对度量我们正确的态度应该是:
度量(量化的结果)不是目的,而是监控与管理的手段!
因此罗列一堆度量数据没有啥用。我们需要做的是将相关的度量数据进行收集和分析,以发现当前我们所处的状态,并与你的目标进行比较:假如当前状态与目标之间出现较大的偏差,此时采取必要的应对手段就是必需的,即作为监控与管理的手段。因此,合理的度量应用应该是目标驱动的!更多关于目标驱动的度量应用,可以参考(Goal - Question - Metric)GQM(以后有机会写篇文章详细描述),GQM的层次结构图如下:
回到评审上面,根据上面罗列的3个目标,我们就可以有针对性的收集与分析度量数据,从而可以更高效对它们进行评估、监控和管理(本文只是提供了建议收集的数据,并没有对其中的数据进行分析,仅供参考。具体的还需要你根据实际情况做调整,适合你的才是最好的,毕竟测试是基于上下文的)。
1.评估评审对象的质量
评估评审对象的质量,主要从3个方面进行数据收集与分析,分别是:
1)评审检测缺陷密度 = 检测的缺陷/页数,或者检测的缺陷/KLOC;
2)评审遗漏缺陷密度 = 遗漏的缺陷/页数,或者遗漏的缺陷/KLOC;其中遗漏的缺陷数目,可以来自项目前期根据KLOC之类估算得到的需求阶段的缺陷数目,减去当前检测缺陷数目;或者作为项目结束之后一段时间,统计得到的需求阶段的缺陷数目与当前缺陷检测数目之差;
3)缺陷集群:根据需求评审中发现的缺陷在不同功能模块的分布,可以帮助选择后续的测试重点,也可以作为将来过程改进中根本原因分析的输入;
2.评估评审过程的效率和有效性
评估评审过程的效率,可以收集与分析下面的数据:
1)评审效率 = 页数(或KLOC)/时间(或工作量);
评估评审过程的有效性,可以收集与分析下面的数据:
1)缺陷检测百分比DDP = 评审发现的缺陷数/总的缺陷数;
2)缺陷遗漏百分比DOP = 评审遗漏的缺陷数/总的缺陷数;
3)评估评审对象质量的一些度量,也可以作为评审过程有效的参考输入;
3.评估评审的投资回报率
评估评审的投资回报,可以收集与分析下面的数据:
1)评审质量成本分析 = 缺陷数目/成本(或工作量);对于不同阶段发现缺陷的质量成本分析,就可以帮助分析评审的投资回报率,同时也可以获取通过评审能够解决的项目时间;
2)评审质量成本与动态测试质量成本之间的对比:基于发现的缺陷成本。