基于软件测试的缺陷分析及度量方法

2021-09-22 06:13王银娟台宪青马治杰
电子技术与软件工程 2021年15期
关键词:软件缺陷测试人员开发人员

王银娟 台宪青 马治杰

(江苏物联网研究发展中心数据与服务研发中心 江苏省无锡市 214135)

计算机软件是由专业人员开发并长期维护的软件产品[1]。一套完美的软件产品离不开软件测试人员的支持,软件产品在长期运行中,不可避免会出现软件故障,阻碍产品正常使用,因此,在软件产品上线前,需软件测试人员进行一系列的测试工作,发现缺陷,并由开发人员及时修复。为此,有必要做软件测试的缺陷进行分析和度量的研究,并最终形成测试报告,以便产品相关人员查阅,以作依据。

1 软件缺陷

软件缺陷,是指计算机软件或程序中存在的某种破坏正常运行能力的错误、隐藏的功能缺陷等[2]。缺陷的存在会导致软件产品在某种程度上不能满足使用者的需要。在IEEE729-1983中对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

一个完整的软件缺陷,主要的组成元素有:缺陷的编号、标题、基本信息、测试软硬件环境、测试软件版本、缺陷类型、严重程度、缺陷等级、复现步骤、实际结果描述、期望结果、截取缺陷的图像、备注信息等,确保每个缺陷是准确、清晰、简洁、完整、一致。

通过分析软件缺陷,可帮助公司获取更多的产品价值,主要有:分析测试活动工作量及输出价值、提供素材,供测试或开发过程进行改进、归纳统计,反映内在问题、帮助测试人员确定一个测试缺陷基线,方便未来测试目标的选定等。也许,各个公司或测试人员对缺陷的分析理解都不一样,但大体方向都是为了以后工作做的更好,为我们最终的产品服务。

1.1 缺陷分类

在测试过程中发现的缺陷,一般可分为如下几类,分别为:

(1)代码错误:不满足需求、功能实现有误等;

(2)设计缺陷:页面美观性、协调性、错别字等;

(3)用户体验:对产品、项目的建议性意见等;

(4)性能问题:性能测试时使用,如:网络延时、内存问题等;

(5)安全问题:业务功能存在的安全问题;

(6)接口问题:涉及有模块间数据传递时使用;

(7)配置问题:由于提供的配置不当或者配置不能够满足实际要求而出现的问题。

上述缺陷分类表中的说明内容,也是测试人员在测试过程中,以此作为判断问题是否为缺陷的依据,除此之外,测试人员还需要结合软件测试准则、产品需求说明书、产品原型图等多方面的资料进行参考验证。

1.2 缺陷严重等级

在测试过程中,除了进行缺陷分类,同时,还需要对缺陷进行严重等级选择,其严重等级常规有如下几种,分别为:

(1)建议缺陷:5级,测试人员对测试对象的改进意见、建议、质疑等;

(2)微小缺陷:4级,操作者不方便,但又不影响功能的操作和执行,如:界面不规范;

(3)一般缺陷:3级,次要功能没有完全实现但不影响使用,如:提示信息不太准确;

(4)严重缺陷:2级,系统的主要功能部分丧失、数据不能正确保存,系统的次要功能完全丧失;

(5)致命缺陷:1级,造成系统或应用程序崩溃、死机等,主要功能完全丧失。

1.3 缺陷优先级

软件测试缺陷优先级表示在开发进行缺陷修复过程中,以供开发参考进行缺陷修复顺序,这既是确保测试工作的顺利进行,也是保证软件质量的重要环节,分别为:

(1)Low:严重等级5,使用率低,且非主要流程;

(2)Medium:严重等级为4,使用率中等,主要是从用户体验角度出发;

(3)High:严重等级为3,使用率高,主要是系统常规功能错误等;

(4)Very high:严重等级为2,使用率偏高,主要是系统业务逻辑错误等;

(5)Urgent:严重等级为1,使用率低,主要是系统崩溃等异常。

1.4 缺陷生命周期

生命周期的概念是一个物种从诞生到消亡经历了不同的生命阶段,那么,在测试过程中,软件缺陷生命周期并非测试人员提出后,就一直处于激活状态,应该指的是一个软件缺陷被发现、报告到这个缺陷被修复、验证直至最后关闭的完整过程。在整个软件缺陷生命周期中,通常是以改变软件缺陷的状态来体现不同的生命阶段。因此,对于一个软件测试人员来讲,需要关注软件缺陷在生命周期中的状态的变化,来跟踪项目进度和软件质量。一个简单、优化的软件缺陷生命周期状态,分别为:

(1)New:新建,测试人员初始提单;

(2)Assign:指派,产品负责人指派给相应开发人员;

(3)Verified:确认,开发修复后产品负责人进行确认;

(4)Open:打开,开发人员已修复,产品负责人未确认;

(5)Duplicate:重复,开发人员确认已存在重复BUG;

(6)Deferred:延期,个别异常缺陷经产品负责人确认延期处理;

(7)Reopened:激活,测试人员进行回归验证未通过缺陷;

(8)Rejected:拒绝,开发人员经确认非缺陷;

(9)Closed:关闭,测试人员经回归通过后关闭。

在实际的工作过程中,软件缺陷的生命周期基本上是不可能为:新建→指派→确认→关闭的简单流程,因此,需要考虑到其他各种可能发生的情况,现整理出如图1所示的一个较为复杂的软件缺陷生命周期流转图。

图1:生命周期流程图

综上所述,软件缺陷在生命周期中经历了数次的审阅和状态变化,最终,测试人员会根据回归测试结果来关闭软件缺陷来结束软件缺陷的生命周期。软件缺陷生命周期中的不同阶段是测试人员、开发人员和负责人员一起参与、协同测试的过程。软件缺陷一旦发现,便进入测试人员、开发人员、负责人员的严密监控之中,直至软件缺陷生命周期终结,这样即可保证在较短的时间内高效率地关闭所有的缺陷,缩短软件测试的进程,提高软件质量,同时减少开发、测试和维护成本。

2 软件缺陷分析方法

缺陷分析是将软件开发、运行过程中产生的缺陷进行必要的收集,对缺陷的信息进行分类和汇总统计,计算分析指标,编写分析报告的活动。对泄漏的缺陷作回归测试和回归分析,可以完善单元测试和集成测试的设计;缺陷分析方法有很多,常见的有单维度和多维度,即:单维度就是抽取一些像缺陷发现阶段、来源、严重性、模块、开发人员等单一要素进行分析;多维度是二者之间的结合,如:来源和开发人员、模块和开发阶段、激活和修复阶段等多种组合方式,具体根据工作实际情况,进行选择组合。

2.1 单维度分析法

在单维度分析法中,可采用折线图、因果图等方式进行统计分析,本文采用饼图进行各项占比值进行数据统计分析。软件缺陷分类能通过数据数值分析的主要有模块缺陷分布、版本缺陷数量、缺陷严重程度统计、缺陷解决方案统计等,通过饼图可以直观统计出软件的缺陷分布占比情况,见图2。

图2:单维度分析法示例

2.2 多维度分析法

在多维度分析法中,可采用直方图、散布图等方式进行统计分析[3],本文采用直方图进行统计分析,直方图中的横坐标代表数据类型,纵坐标代表数据分析,通过直方图可以进行功能模块与严重程度对比、解决与激活缺陷量对比等多种组合,通过直方图可以直观统计多维度缺陷关联关系,见图3。

图3:多维度分析法示例

3 软件缺陷度量方法及分析

所谓软件缺陷度量是软件测试度量中的一个环节,其本身并不能发现缺陷、剔除缺陷,但在实际工作过程中,有助于问题的解决,除此之外,当正确、持续的进行缺陷度量时,产品及过程中的质量属性的数据为实施和管理过程提供了有效的参考基础。

在真实的工作过程中,发现软件产品的质量度量,主要集中在软件的缺陷度量上,缺陷度量是对产品过程中产生的缺陷数据进行采集、量化,将分散的缺陷数据进行统一管理,使其变更的更加清晰,方便对缺陷数据进行分析,从而提高产品质量。

3.1 缺陷度量方法

采取不同的软件缺陷度量方法,其对应目的也不尽相同,从不同的度量角度出发,主要分为如下几种:

(1)组织级缺陷度量,目的是了解组织的整体缺陷分布情况、客户对组织的质量满意程度,建立组织基线,确定后续的改进方向。

(2)项目级缺陷度量,目的是关注项目的实时质量情况,因项目会有运维期,故迭代次数可能较多,故需预测缺陷造成的发布后维护工作量。

(3)个体级缺陷度量,目的是了解个体缺陷产生的详细原因,并为开发提供一定的依据,方便开发进行及时修复。

按上述缺陷度量方法,前两者基本上是面对客户的项目,也是实际工作中常用的方法,其测试覆盖率偏低,其主要原因是面对客户的项目,在运维期,可能会出现需求的变更;对于第三种,基本上是针对公司自研产品,需通过不断迭代开发复测等流程循环,耗费一定的人力、精力,且在执行过程中,需开发组、测试组、需求组等多方面的工作协调,使其测试周期相对较长,故在实际工作中,需根据不同的测试对象选择不同的缺陷度量方法。

在实际工作中,根据测试对象确定好度量方法后,还需进一步选择相应的缺陷度量元,所谓缺陷度量元是指缺陷度量的各个指标,通过度量指标来进行软件缺陷度量。

(1)缺陷模块分布:反映缺陷按类型、优先级、严重程度等因子,进行缺陷量统计分析,获取各模块等下的缺陷数目。

(2)缺陷总体分布:反映缺陷整体上分布情况,通过总体分布图可分析出软件缺陷主要集中点,可帮助开发人员快速找出问题根源,及时修复,提高测试对象质量。

(3)缺陷到达量:反映某一特定时间内某类缺陷出现次数,产品发布后需对缺陷进行跟踪,在跟踪缺陷过程中可对缺陷进行分类统计,通过对缺陷到达量统计分析可有效提高产品质量。

(4)缺陷修复率:反映测试人员提测质量、开发人员修复质量,根据该指标可间接反映测试对象功能平稳性。

(5)缺陷移除率:反映在产品研发各个阶段中,明确每个阶段发现引入的缺陷及问题的能力,在分析过程中,可与缺陷修复率结合统计分析。

(6)缺陷密度:反映产品每个功能点的缺陷数,缺陷密度越低则产品质量越高,缺陷密度与缺陷率有着一定关联。

(7)缺陷总体趋势:反映新增缺陷数、被解决缺陷数、遗漏或激活缺陷数等各种缺陷状态下变化趋势,从而了解缺陷是否被及时修复。

(8)测试用例执行率:反映在测试过程中,测试人员依据测试用例对测试系统进行测试验证对比,可判断系统是否按需求进行开发,同时反映需求变更情况。

3.2 软件缺陷度量分析

一般来说,为了达到判断出缺陷产生原因的目的,基本度量元可以选择缺陷数量排行、缺陷发现时间、缺陷清除时间,派生度量元可选择整体缺陷清除率、阶段缺陷清除率等。

3.2.1 缺陷到达量分析法

缺陷到达量分析法是指在单位时间内,新建缺陷的数量。通过统计分类进行分析某一时间段内测试引入的缺陷类型、严重程度等缺陷,结合统计结果,可方便产品负责人与客户进行交流沟通,进一步确认解决方案,见图4。

图4:月度缺陷量统计分析图

图4中统计结果可分析得出:一是缺陷量在前四月内是呈下降趋势;二是6月缺陷量有回升现象,主要体现在低严重等级上;三是缺陷数的严重级别呈正态分布等,具体可根据实际工作场景进行详细分析。

3.2.2 缺陷移除率分析法

缺陷移除率是指在产品研发各阶段中,明确和解决本阶段引入的缺陷的比例。依据软件测试基础理论,测试应尽早介入到项目中,一般要求在需求分析阶段,并且要通过静态测试方法对各个阶段的产出进行验证,见图5。

图5:阶段缺陷移除率统计分析图

图5中统计结果可分析得出:一是开发阶段缺陷移除率较低,说明开发过程中可能还存在较大问题;二是验收冒烟阶段,需求缺陷量为0,说明需求团队与客户的沟通顺畅。

3.2.3 缺陷修复率分析法

缺陷修复率是指在一定单位时间内,提出的缺陷、被修复的缺陷、遗留的缺陷数量的对比,该方法是相对比较直观的一种报表,见图6。

图6:缺陷修复率统计分析图

图6中统计结果可分析得出:一是缺陷提出数量在经历过稳定下降后,在项目后期又出现了回升现象;二是开发修复能力在5月出现下滑现象,说明开发人员的工作可能出现了变动或抽调;三是项目在进行验收结尾阶段,还存在缺陷遗留现象,根据图表中的数据可以分析得出当前产品整体缺陷量及开发测试进度等情况。

4 结束语

总之,软件测试是软件开发过程中必不可少一环节,其软件产品质量与产品运行状态是息息相关的[1]。因此,需重点掌握软件缺陷分析及度量方法,它们是针对软件开发项目、过程及产品进行数据定义、收集及分析的持续性定量化的过程。有效的分析及度量的作用在于能够帮助团队认清自身的能力,理解、评价、控制、预测和改进软件工作产品或软件过程。

猜你喜欢
软件缺陷测试人员开发人员
基于源文件可疑度的静态软件缺陷检测方法研究
Semtech发布LoRa Basics 以加速物联网应用
基于NPE-SVM的软件缺陷预测模型
高校分析测试中心测试队伍建设方案初探
开源程序的软件缺陷分布特征的量化分析研究
软件缺陷管理方案分析
犯罪心理测试人员素质要求分析
三星SMI扩展Java论坛 开发人员可用母语