王秀娟
摘 要:软件产品已经步入千家万户,如何最大限度地从开发阶段避免缺陷的发生,实现缺陷预防成为许多学者研究重点内容。本文主要阐述了缺陷预防的概念、目的及常用的缺陷预防分析技术;从缺陷预防几个重要阶段提出具体的改进措施,并对测试过程缺陷进行有效跟踪和度量,验证缺陷预防措施的有效性。
关键词:缺陷预防 度量 缺陷分析
随着软件技术不断发展,人们对缺陷的管理越来越严格,缺陷管理工具的运用,缺陷分析和度量技术越来越纯熟,很多研究学者提出新的研究方向,比如缺陷预防与缺陷漏测。
一、缺陷预防概述
缺陷预防是从需求开发与管理、配置管理以及变更管理等各个软件开发的关键过程进行预防和控制,并采用复用、各种模式确保过程的有效和成果的合格[1]。为了避免软件的各种错误遗留到后续开发阶段,运用各种技术和过程来发现这些问题,从需求开发管理、配置管理以及变更管理等关键过程进行缺陷预防和控制,并采用有效的复用、分析和处理缺陷的共性原因,来实施缺陷预防。缺陷预防是一个持续改进的流程。
缺陷预防目的是识别缺陷产生的原因,从而避免再次发生。测试人员需从项目生命周期之初介入,准确地理解测试对象并生成可测试的需求。软件组织应需量化的理解其过程能力,并持续地改进组织级的开发过程、缺陷发现过程,同时引入新方法、新工具,加强彼此经验交流,从而实现缺陷预防。
所谓漏测,是指软件产品的缺陷没有被测试组发现而遗漏到了用户那里,却最终被用户所发现。在软件开发过程中,缺陷越早被发现,那么发现和解决缺陷所花费的成本就越小。因此进行漏测分析、预防缺陷漏测是非常有意义的,利于降低软件产品成本,提高软件产品质量,提高客户满意度。进行漏测分析的目的是为了促进软件质量提升和开发测试过程得到持续改进。
二、缺陷预防常用分析方法
因为错误是不可避免的,所以需要讨论如何尽可能地把缺陷排除在软件开发周期之外,以便尽量减少错误并提高软件质量。缺陷分析是软件缺陷管理常用的方法,可帮助项目组定位和解决问题,实现缺陷预防。根据LM公司电子银行软件项目缺陷情况提出几点常用的分析技术:
(1)模块缺陷分析:一般采用柱状图或是饼状图分析,统计每一个功能模块发现的BUG比例;参考每次迭代发布的统计情况,分析前后的度量数据。
(2)缺陷起因分析:采用柱狀图或是饼状图统计,一般可分析架构缺陷、需求、功能缺陷、易用性缺陷、安全性缺陷、性能缺陷。
(3)缺陷优先级分析:一般分为一级缺陷、二级缺陷、三级缺陷、轻微及建议类缺陷、业务调整等类型,根据缺陷优先级可以判断系统质量情况。
(4)缺陷类型错误:一般分为需求问题、设计问题、代码问题、接口问题、数据问题、程序逻辑问题、文档问题等类型,根据错误类型定位缺陷发生阶段。
(5)度量指标:运用度量技术,统计缺陷的概况,分析项目中缺陷情况,比如缺陷逃逸率,缺陷回退率情况;分析组内成员编码熟练程度和测试效率。
(6)缺陷预测模型:采用预测模型分析测试有效性和充分性,分析遗留的缺陷数量,进行缺陷预防。
(7)缺陷漏测分析:对已经发生的缺陷进行漏测分析,归纳漏测缺陷类别,对组内成员共享经验,避免类似问题的遗漏。目前项目组根据历史经验和缺陷属性对漏测的缺陷进行分类,主要分为五大类包括多法人分析类、数据脚本类、测试规范类、业务配置类和测试规范类。
三、基于缺陷预防的软件开发流程改进的应用
缺陷预防一般分为事前预防和事后预防,事前预防常用的几个阶段分为需求阶段、设计阶段和编码阶段;事后预防主要是验证即测试阶段,测试阶段可进行缺陷分析,进行下一迭代的缺陷预防。结合本文第二章节缺陷预防阶段和缺陷分析技术,提出以下几点措施:
(1)需求阶段
①进行需求跟踪,制定详细的需求跟踪矩阵;
②需求范围要明确,囊括系统安全性、系统性能、兼容性等;
③需求可执行性,现有技术或框架可实现,需求描述步骤详细具体,尽量做到一步了然;
④对需求变更管理进行控制,严格把控需求变更流程;
⑤用户需求文档避免技术语言,运用通俗易懂语言描述且用户确认;
⑥需要考虑易用性和界面问题,分析漏测分类点。
(2)设计阶段
①增加技术评审环节,概要设计评审、详细设计评审;
②设计文档规范可执行,包含详细的业务逻辑覆盖;
③每个功能或模块有明确的输入、输出和过程功能,并辅助数据测试;
④包含用户界面UI设计描述,接口设计说明以及结果图。
(3)编码阶段
①统一编码规范,制定详尽的编码规范文档;
②增加代码评审环节,提高代码评审力度;
③开发必须执行单元测试,规定单元测试覆盖率;
④增加代码走查环节,静态检查一般采用工具完成;
⑤每次迭代注意上一阶段缺陷类型分析,并着重进行代码评审。
(4)测试阶段
①缺陷模块统计,计算各个模块的缺陷比例,比例越高模块功能开发质量越差,开发人员需要重点关注;
②缺陷类型统计,查看缺陷集中分布情况,集中的则反映了软件问题发生的阶段,比如易用性问题、界面问题则说明需求确认环节需要重新跟踪;
③缺陷起因统计,根据缺陷发生的原因制定规避措施;
④运用缺陷预测模型比如Gompertz模型进行缺陷的预测,估算遗留的缺陷数量和测试时间,并分析测试有效性和充分性,调整测试进度。
⑤根据漏测缺陷分类,在测试阶段进行漏测分析的经验共享,将漏测分类的五大类加入测试案例中,在测试执行过程中避免类似缺陷发生,同时重点关注该类问题测试案例覆盖点。
⑥常用度量指标统计,度量指标值可反映开发阶段组内成员情况和开发质量,针对性进行组内培训或提升技能。
缺陷预防是保证软件质量其中一项最重要的活动,直接影响到项目成本的控制和高质量的软件成果,因此实现软件缺陷预防势在必行。
参考文献:
[1]雷挺.基于缺陷分类和缺陷预测的软件缺陷预防[J].计算机工程与设计,2013,34(01):215-220.
[2]褚洪波.静态软件缺陷预测分析[J].农家参谋,2018(03):207.