软件测试应该贯穿于整个软件开发生命周期,这个概念已经成为了软件测试行业的一个基本原则。评审作为静态测试的一种有效手段,大家都知道它可以有效的降低项目的成本和提升质量。但是,我们很多的时候只能是概念上有这个意识,很难通过量化的方式来说明评审的意义。本文以通用的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模型的右边,通常缺陷数目会是缺陷放大效应之后的数目;
● 左下角为为本阶段引入的缺陷数目。在需求和设计阶段,缺陷存在于规格说明中。在实现阶段,缺陷来自于代码中。而测试阶段,缺陷主要来自缺陷的修改之后引入;
● 右上角为本阶段的缺陷移除有效性(以%表示);
● 右下角为本阶段移除的缺陷数目;
下面将通过分析和计算的方式,说明评审引入之后,它是如何降低成本、提高质量,以及用于过程改进的。
1)降低成本和提高质量
通过在软件开发生命周期的早期开展评审活动,在项目早期发现和修复缺陷,将可以大大的降低成本。降低成本不仅是由于早期发现和修复缺陷的成本,比在后期发现和修复的成本低,并且可以更好的预防缺陷的雪崩效应,即减少前期的缺陷遗留到后续的阶段。下表通过数据和计算的方式,来分析通过评审的引入是如何降低成本的。
表1 开展评审如何降低成本和提高质量
从上表中,可以清楚的看到:在软件开发生命周期的每个阶段开展评审活动,并在测试阶段同样开展动态测试活动,其花费的总成本是25167;而假如只在测试阶段开展动态测试活动,而没有在早期进行评审活动,其花费的总成本是92270;两者数据进行比较,可以发现开展评审活动之后降低的成本是非常可观的。
开展评审活动可以很好的提高产品质量,也是非常明显的。在软件开发生命周期的早期开展评审活动,其遗留到客户现场的缺陷数目是20个,而没有开展评审活动,其遗留到客户现场的缺陷数目是75个。也就是说,通过在软件开发生命周期的早期进行评审活动,可以使得遗留到客户现场的缺陷数目大大降低,从而大大的提高产品的质量。
2)过程改进
通过在评审过程中收集和分析其中的缺陷数据,例如:分析缺陷引入的主要原因,缺陷的具体分布等。通过将分析之后的结果和采取的应对措施应用于V模型左边的软件开发活动,提高开发活动工作产品的质量,降低缺陷引入的数目。那么,通过评审活动得到的过程改进将是非常可观的。下表是假设通过评审活动,在前期引入的缺陷数目降低了50%。从表中我们可以得到其遗漏的客户现场的缺陷数目变成了10个,提高了质量。同时,发现和修复缺陷的成本也降低了一半。
表2 评审如何有助于过程改进
上面分别通过数据和数据的计算,阐述了评审活动是如何降低项目的成本、提高产品的质量,以及如何有助于过程改进的。尽管上面的这些数据,例如:缺陷的放大系数、修复的成本等,并不一定适合我们的组织和项目,但是其中体现的趋势和思想是值得我们思考的,相信它们也可以指导我们更好的认识评审的作用,从而不断的提高评审在整个软件开发过程中的有效性和效率。
本文转自:http://www.51testing.com
因篇幅问题不能全部显示,请点此查看更多更全内容