软件测试应该贯穿于整个软件开发生命周期,这个概念已经成为了软件测试行业的一个基本原则。评审作为静态测试的一种有效手段,大家都知道它可以有效的降低项目的成本和提升质量。但是,我们很多的时候只能是概念上有这个意识,很难通过量化的方式来说明评审的意义。本文以通用的V模型作为例子,量化分析评审是如何在不同的开发阶段实现项目成本的降低、产品质量的提高以及如何实现过程改进。
该文中的通用V模型,主要有下面几个阶段组成:Concept、Requirements Capture、System Design、System Implement、Unit Test、Integration Test、System Test和System Deployment,其中Concept是系统的概念阶段,可以认为直接来自用户的要求和需求。下图是量化评审在降低成本、提高质量和过程改进等方面的模型图[1]。
图1 量化评审作用的模型图
在上图中,我们可以看出评审和动态测试是用来发现和移除缺陷的两个主要测试活动:评审主要应用于软件开发的早期的阶段(在V模型的左边),而动态测试应用于测试对象可以运行之后的阶段(在V模型的右边)。图中至少体现了两个软件测试的实践经验:
○ 首先,缺陷的放大效应(即缺陷的雪崩效应);
○ 其次,缺陷发现和修复的成本随着开发阶段的演进而快速的上升;
尽管图中提供的缺陷放大系数和缺陷在不同阶段的修复成本,并不一定适合不同的组织和项目,但是,作为案例分析评审在降低成本和提高质量的原理是适合的。下面首先对图中的一些基本概念和数字进行描述:
○ Rev表示是评审活动,Test为动态测试活动;
○ 不同阶段的缺陷修复的成本分布,依次为1、2、5、10、50、100和1000[2];
○ 不同阶段引入的缺陷数目,以及在不同阶段缺陷数目的放大系数。其中左边的放大系数为1.5,而右边为1;而缺陷的移除有效性,左边为65%,右边为50%[3];
○ 图中的方框内的数字分别表示为:
● 左上角为上个阶段遗漏的缺陷数目。在V模型的右边,通常缺陷数目会是缺陷放大效应之后的数目;
● 左下角为为本阶段引入的缺陷数目。在需求和设计阶段,缺陷存在于规格说明中。在实现阶段,缺陷来自于代码中。而测试阶段,缺陷主要来自缺陷的修改之后引入;
● 右上角为本阶段的缺陷移除有效性(以%表示);
● 右下角为本阶段移除的缺陷数目;