关 山
(北京信息职业技术学院,北京 100018)
软件缺陷分析方法一般情况下是建立在软件缺陷分类基础上,软件缺陷是存在于程序或者计算机系统中,是一种能够对系统正常运行产生破坏的隐藏问题,在系统中以瑕疵、错误的方式存在,通常情况下,在软件测试过程中就会被发现。通过对这些缺陷进行分析处理,有利于软件测试工作人员制定科学的软件测试方案,为今后软件缺陷数据分析工作提供技术支持,可以对软件进行预判,提高软件预防工作,进而保证软件产品质量。
现阶段对软件缺陷进行分类一般是对软件属性分类,常用的有缺陷标识/名称、缺陷来源、缺陷程度、缺陷类型、缺陷状态、缺陷可能性等原因,这其中一部分属于定性属性,一部分是定量属性,还有一些分类是在基本分类之上进行更详细的分类,如表1。
表1 软件缺陷属性分类
完成软件测试一般包括三个方面,分别是验证需求是否符合使用者要求、发现软件中存在的错误、软件质量评价。在进行软件测试的过程中,实现软件缺陷数据分类就需要建立在这三个方面基础上,软件缺陷基础属性分类已经不能够满足当下软件质量评估不断发展的需求。还需要结合软件自身的属性充分考虑软件测试技术,以便于更好的收集软件缺陷数据。促使软件缺陷分类方法具有综合性。对软件实行缺陷分类主要目的就是为了分析软件产生缺陷的原因、过程,并且从中找到解决的办法,为软件测试人员识别软件缺陷提供辅助作用。结合软件缺陷的发现途径,完善软件测试方案,进而提高软件测试效果,保证软件具有更高质量。在对软件进行数据管理时,还需要添加能够对软件缺陷加以描述的内容,比如,缺陷描述、软件描述、测试环境和时间描述等内容。
软件缺陷数据分析最基本的依据就是数据收集与整体,只有保证收集的数据真实、完整、整理出来的结果才可靠、有用,进而提高分析效果。软件缺陷数据主要包括定性和定量两种数据,只采用其中一种数据对软件缺陷数据进行整理都不能够满足所有软件。为此,本文采用了多种数据整理方式,如散布图、直方图、排列图、折线图、因果图、控制图、检查表方式开展软件缺陷数据整理工作[1]。
直方图是统计报告图中的一种,也被称之为质量分布图,通常情况下,都是由横坐标来展示统计数据的类型,纵坐标展示数据分布情况。能够以图形的方式展示出软件缺陷分类分析数据,能够呈现出软件缺陷严重程度、状态、类型、原因等,通过对直方图可以直观的掌握软件缺陷整体分布情况。如图一所示。在软件缺陷数据分析过程中,使用直方图可以将各属性分布状态与标准软件缺陷数值之间的关系充分展示出来,通过直方图可以直接对软件质量进行评估,是软件测试组用来掌握软件缺陷数据定量分布状态的一种手段。
散布图是一种可以了解相互关系的图,主要用于呈现两种变量存在的关系和关联程度,可以直观的看出是否存在异常数据。通过直方图展示出的数据并不能够满足测试组的全部需求,对于测试组而言,更在乎软件缺陷等级、严重程度、缺陷类型、缺陷原因等各种因素之间的关系,下面提供散布图是以缺陷类型和原因之间的关系为例,赋予它们一定数值,以便于更直观、清晰展示出他们之间的联系。
软件缺陷类型与原因存在一定关系,导致软件缺陷主要因素是由于需求不清楚,其次是人员疏忽导致缺陷问题出现。根据这个结果,软件测试组相关工作人员就需要深入分析软件需求这个影响因素,重视容易导致人员疏忽的过程。
排列图数据主要是将软件缺陷原因和内容进行分层,按照一定顺序将其表示出来,是检测人员发现问题、选择问题、确认问题和改进问题的一种办法。软件测试工作并不是反复测试同一个软件,换言之,采集软件缺陷数据是通过多种不同产品进行测试得来的结果[2]。可以针对类似产品进行测试,收集、整理这些产品出现缺陷的概率,观察类似软件产品容易产生什么种类的缺陷,进而为测试组提供参考依据。
除上述整理方式还有其他整理法,如折线图、控制图、因果图、检查表等。其中控制图是一种控制接线的图形,主要用在分析和判断软件使用期间是否一直保持在稳定状态,是用来了解软件随工序变化而变化的过程。在软件使用寿命期限内,可以运用控制图整理出软件缺陷处于各阶段变化的状态,可以针对同一软件进行阶段性测试。但是对于上述总表二中软件分类并不是适用控制图来表现。同理,折线图是用来表示随时间变化而产生变量的数据,在同一个软件中开展阶段测试软件缺陷数据并不受时间变化限制,因此针对同一个软件阶段性测试也不适用折线图进行分析。因果图是一种树状型图,呈现出的是因果关系,这种方法可以用了解软件缺陷产生原因,可以提供数据分析基础依据,但是对于软件缺陷分布实用性不高,同样检查表主要是提供现场检查工作,对数据分析工作帮助不大,不适用数据分析中。
综上所述,软件缺陷有很多种分类,分析软件缺陷数据对软件管理和应用具有重要作用。针对软件缺陷数据整理方法本文主要研究了直方图整理法、散布图整理法、排列图整理法等,通过这三种方式实现软件缺陷数据分析整理工作。在软件测试的基础上,采用合适的软件缺陷数据分析方法,可以准确找到软件存在问题的地方,进行针对性解决,进而优化软件产品质量,提高软件使用率,为今后发展提供保障。