缺陷分析在软件系统测试中的应用
2011-07-13王俐
王 俐
(北京国铁华晨通信信息技术有限公司, 北京 100070)
1 系统测试
软件测试是为了发现错误而执行程序的过程。软件测试工作一般应完成以下各层测试:软件单元测试、软件集成测试、软件系统测试。如图1所示。
软件系统测试(以下简称系统测试)是将经过集成测试后的软件,作为计算机系统的部分,与计算机硬件、某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列的严格有效的测试来发现软件的潜在缺陷,保证软件/系统的质量。
系统测试从软件研发的需求阶段就开始介入,系统测试的生命周期如下:需求获取与评审,测试策略生成(决定风险、环境、定义测试执行流程及成果物),系统测试设计(包括确定系统测试方法、测试工具、系统识别测试项、计划资源及工期、需求变更等),用例开发(用例规格化、前置条件、后置条件及接受标准),测试准备(测试环境搭建、数据准备),测试执行(运行测试、确认结果),发现及剔除缺陷周期(发现及记录缺陷、缺陷跟踪、缺陷分析、验证缺陷),测试周期结束,缺陷分析和结果报告。
2 缺陷管理
2.1 缺陷管理目标
缺陷能够引起软件运行时产生一种不希望或不可接受的外部行为结果,对缺陷的跟踪管理一般需要达到以下目标。
1)确保每个被发现的缺陷都能够被解决,这里的解决不一定是被修正,也可能是其他处理方式(例如,在下一个版本中修正或是不修正)。
2)收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;决定测试过程是否结束有很多种方式,通过缺陷趋势曲线来确定测试过程是否结束,是常用并且较为有效的一种方式。
3)收集缺陷数据并在其上进行数据分析,作为组织的过程财富。
2.2 缺陷跟踪
测试人员在严格按照测试用例执行测试后,发现实际输出与预期输出不一致时,将发现的问题作为缺陷填写到缺陷跟踪表中,缺陷跟踪如表1所示。
我们使用SIM卡管理系统在EXCEL表格中的缺陷跟踪作为例子来看,缺陷跟踪表中的每一条信息都详细地记录了缺陷的多个方面。跟踪表中的各项内容分别由测试人员项目经理或开发人员、以及验证人员来进行填写;跟踪表的各缺陷属性可以根据需要进行调整。
表1 缺陷跟踪表
3 缺陷分析
3.1 缺陷分析的原因
我们可以根据缺陷状态来判断测试进展情况,开发人员的编程质量,修正缺陷的进度。通过缺陷的分析,可以完成产品质量的评估,确定测试是否达到结束的标准,也就是判定测试是否已满足规定的需求。通过缺陷的分析,还可以发现开发过程中存在的问题;无论对测试人员,还是开发人员或管理人员,缺陷分析都是一项必不可少的工作。
缺陷分析分两种:缺陷趋势分析、缺陷分布分析。
3.2 缺陷分布分析和缺陷趋势分析
系统测试完成后,测试工程师对系统测试结果要进行统计分析,其中包括系统测试用例执行情况,缺陷各属性等数据;并生成统计图表,比如缺陷严重程度的饼图、缺陷原因分析的柱状图等,这些都属于缺陷的分布分析。
缺陷趋势分析,也就是看软件/系统缺陷有多严重,缺陷的影响有多大。缺陷趋势分析从记录所有发现的缺陷,为每个缺陷标识属性,定义缺陷相关度量,应用统计方法/工具进行分析开始;缺陷趋势分析的内容,主要是缺陷密度、缺陷重现率和缺陷周期。
3.3 缺陷分析实例
下面以最基础的统计工具EXCEL表格为例,来看一下SIM卡管理系统软件项目的系统测试缺陷分析,统计数据主要来源于《缺陷跟踪表》,主要从缺陷的严重程度、缺陷来源和缺陷在各模块中的分布3方面来分析缺陷。缺陷严重程度分析和缺陷来源分析如图2所示,缺陷按模块分布如图3所示。
由各个统计表格,可以得出严重的缺陷占所有缺陷的比例;哪些模块中存在的缺陷比较多等信息。当然还可以分析缺陷的类型,比如功能上的缺陷、性能上的缺陷、文档缺陷等;或按照修复状态来分析每轮回归测试中,已经修复的缺陷数、新发现的缺陷数、重新打开的缺陷数等信息。缺陷的分析统计,按照软件/系统的需要,可以制定各种类型的统计分析图表模式,充分使用测试过程中采集的基础缺陷数据,为下一步的度量工作打下良好的基础。
3.4 缺陷度量
软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。比如“度量数据采集表及指示图”表中的“质量-测试”度量表,整体缺陷分布、模块缺陷整体分布、测试轮次缺陷分布的采集表分别如表2、表3和表4所示。
以上的测试缺陷分析,作为衡量软件质量的一种标准是非常有效的;每个项目经理在软件项目的阶段报告中都将缺陷分析的度量作为关键的部分;同时度量数据最简单的使用,是可以纳入开发人员的绩效管理。
表2 整体缺陷分布采集表
表3 模块缺陷整体分布采集表
表4 测试轮次缺陷分布采集表
3.5 缺陷分析与出口准则
对于系统测试何时停止,按规定,系统测试满足软件/系统规定的出口准则才能停止。系统测试完成,一般情况下必须同时满足以下条件。
1)系统测试用例100%覆盖软件需求规格说明书。
2)没有遗留严重及一般缺陷。
3)软件/系统的遗留缺陷率少于等于1个缺陷每千行代码等。
这里的遗留缺陷率在项目立项时由项目组和测试组共同确定。要判断软件/系统是否满足出口准则,系统测试是否可以停止,就要通过判断缺陷分析得出的结果与规定的要求是否符合来决定。
3.6 评价及建议
系统测试完成,评价及建议表中缺陷分析的内容如表5所示。
表5 评价及建议表
4 结束语
缺陷管理的发展,可以说从口头缺陷管理开始,到单一的文档管理,在开发及测试团队间传递;继而发展到EXCEL图表管理,也是最基础的工具管理;然后开始使用缺陷跟踪工具,例如BugZilla等;发展到现在,已经有非常全面的企业级测试工具套集,例如,Rational Suite(Clear Case +Clear Quest + Req Pro)来确保标准流程在产品开发全生命周期中得以执行。比如使用Bugzilla进行缺陷跟踪和分析,只需定制需要的分析内容,针对参数进行相应设置。自动化提供了复用性,自动化测试脚本能被多次使用;既保证了统计分析的数据一致性,又提高分析效率,使软件/系统提早上市。
[1] 朱少民.全程软件测试[M]. 北京:电子工业出版社,2008.
[2] 柳纯录.软件评测师教程[M]. 北京:清华大学出版社,2009.