错误、缺陷和失效的相互关系

发表于:2011-2-28 14:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:郑文强    来源:51Testing软件测试网采编

  在日常的软件测试过程中,经常会碰到软件相关的问题,不同的人对问题的称呼也不同,比如错误(mistake或者error)、缺陷(defect)、失效/失败(fail或failure)等。这些不同的术语,虽然在平时讨论的时候,可能含义基本上是一样的,都是指软件中存在的一些问题。但是它们的具体含义和定义是不一样的。根据IEEE 1990中对这些术语的定义,可以帮助我们更好的理解它们的真正含义和它们之间的相互关系:

  ● 错误(mistake):产生不正确结果的人为行为。人为的原因导致一个不正确的结果。它可以是程序内的内部错误,也可能是文档内的错误。甚至是环境方面的问题。

  ● 错误(error):计算机计算得到的、观察到的、测量到的数值或者条件和理论上得到的正确的数值或者条件之间存在的差异。

  ● 缺陷(defect):程序或者软件中不正确的步骤、过程或者数据定义等。比如错误的语句或者错误的标量定义等。缺陷是错误的具体表现,可以是不正确的文档、程序段以及指令或者数据定义。

  ● 失效/失败(failure/fail):软件系统或单元无法实现需求文档中规定的功能特性或者非功能特性。或者说单元/系统产生的结果与期望交付的服务或者结果存在偏差。外部的失效/失败是内部缺陷在执行测试软件时的外部反映。它是规范说明的期望值与实际观察到的值、现象等存在偏差。比如不正确的系统反应、系统崩溃、系统死机等等。

  人为造成的错误(mistake)引入到软件工作产品中就变成了缺陷(fault或defect),或者环境因素导致软件中存在瑕疵。其中的软件工作产品包括软件生命周期中的任何输出,比如规格说明、设计文档或者代码等等。这些错误,引入到软件工作产品中后,就成为了软件的缺陷。假如存在缺陷的代码,进行了运行,这些缺陷就可能会导致系统的不正常,或者导致系统的失效和失败。运行存在缺陷的软件系统,并不一定会产生运行错误或对用户产生消极的影响,即失效。一个缺陷的存在不一定会产生失效,而有的缺陷可以产生非常多的失效。

  软件系统的失效/失败只是表面现象,我们测试的目的之一是发现失效/失败。而对于开发人员,重要的是通过开发活动来发现和消除引起失效/失败的存在软件中的缺陷。发现缺陷(引起软件失效的一个根源)的过程需要花费时间和成本,同时也存在不确定性。同时错误(error)是用来测量得到的结果不正确的程度。

  软件中的失效/失败的演化过程如下面的图示。测试的一个重要目的是让软件系统失败,从而来发现软件中存在的缺陷,在软件提交给客户之前可以将缺陷修改。测试的另一个重要目的是评估软件的整体的质量。比如,假如软件系统中存在太多的高严重度的缺陷,测试团队可以将软件系统打回开发团队,要求他们改进软件产品质量。在软件质量改进之前,测试团队没有必要浪费时间来继续测试执行活动。或者提供管理人员一些软件产品质量的信息,可以帮助他们确定软件产品的质量是不是可以提交给用户使用,还是需要继续花费时间和成本继续测试活动,以发现更多的缺陷。

图1 软件失效/失败的演变过程

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号