软件测试系列---缺陷管理
  一、软件缺陷的基本概念
  1、软件缺陷的基本概念主要分为:缺陷、故障、失效这三种。
  (1)缺陷(defect):存在于软件之中的偏差,可被激活,以静态的形式存在于软件内部,相当于bug;
  (2)故障(Fault):软件运行中出现的状态,可引起意外情况,若不加处理,可产生失效,是一个动态行为;
  (3)失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致,功能能力终止,用户无法完成所需要的应用。
  二、软件缺陷的三个基本概念的相互关系
  1、bug一定会被激活吗?激活后一定表现为故障吗?
  答案是不一定,任何一个软件即便测试的非常严格,在发布后也会存在遗漏的bug,但是这些bug在用户使用的时候不一定会被激活,因为有些bug隐藏的比较深,用户在使用的过程中不可能触发这些bug,所以这些bug一直隐藏在软件内部,没有被激活,也是说即使软件内部有bug,软件也可以正常运行,但也有可能,在某些情况下,这些bug会被激活,表现为故障*。
  2、故障一定会导致失效吗?
  答案也是不一定,开发人员在做设计的时候,更多的考虑了在软件使用期间可能出现的故障,然后针对这些故障采取的一些预防的措施,比如:数据库会出现的数据丢失的问题,为了避免这种失效的出现,产品开发人员在做设计的时候,也许会采取数据库时时备份的方式,也是在本地有一个数据库,在异地也有一个数据库,这个地方的数据库会实现时时的备份,当其中一个数据库出现了异常,那另外一个数据库还可以启动工作,所以说,缺陷不一定会导致故障,故障不一定会导致失效。
  三、软件缺陷报告单
  缺陷报告单是任何缺陷修改的一个起始,也是我们测试人员在进行测试执行的时候,发现了一个缺陷,发现缺陷后,我们不要口头和开发人员交流,因为口头的交流不仅没有任何的约束力,而且有可能表达不清楚,所以我们要把缺陷落实在纸面上,也是要测试人员填写缺陷报告单。
  缺陷报告单的作用:
  1、测试执行过程中,发现缺陷失效后(不一定是失效,也许是故障,一般来说这个缺陷在测试阶段被发现往往表现为产品失效),提出书面的报告,提供给开发人员作为定位缺陷的依据,也作为日后缺陷度量的数据依据,开发人员接到缺陷报告单后,他会根据缺陷报告单上描述的缺陷外在表现来重现这个问题,然后找出这个问题,也是缺陷产生的根源。
  2、缺陷报告还可以作为我们日后缺陷度量的数据依据,度量是对整个产品进行考核,比如说,我们的软件在什么时候可以发布,什么时候可以交付给客户等等问题,这个时候我们往往从缺陷度量的数据来看,比如我们子啊后一轮进行测试的过程中,每千行代码只有0.1个缺陷,说明我们产品的质量已经非常高了,而且遗留的缺陷也非常少了,这个时候可以发布产品了,所以这个缺陷的统计数据时非常重要的,它可以作为缺陷度量的依据。
  四、软件缺陷管理的目的
  缺陷管理的目的是:对各个阶段测试发现的缺陷进行跟踪管理,以保证各级缺陷的修复率达到标准,主要实现以下目标:
  (1)保证信息的一致性;
  (2)保证缺陷得到有效的跟踪,缩短沟通时间,解决问题更高效;
  (3)收集缺陷数据并进行数据分析,作为缺陷度量的依据。
  五、软件缺陷管理工具
  软件缺陷管理的流程一定要有相关的软件进行支撑,否则软件缺陷管理的流程是无法正常运行的,类似于我们在做开发的过程中,开发JAVA相关的程序我们需要JBOSS这样的工具,,如果我们开发C++需要Visual C++工具,在软件缺陷跟踪中我们也需要一些工具,比如商用工具Mercury Quality Center是目前非常强大的软件测试管理工具,它的功能包括业务管理、测试用例的管理、缺陷的分析及测试脚本的管理,所有缺陷仅仅是其一个点;Rational ClearQuest它主要用于变更控制和缺陷管理这一块,此外还有Bugzilla,Mantis,Jira三个开源工具。
  使用商用的软件缺陷管理工具或软件测试工具,好处是由商家提供一系列支持、工具的相关制定以及后期的升级服务,所以商用软件缺陷管理工具从整体的易用性和可用性来看,要比开源工具好得多,开源工具大的好处是便宜,不用去花钱购买,但是易用性和可用性相对来说弱一些。
  六、软件缺陷管理的相关角色
  软件开发和软件测试的任何一个流程,都应该有流程的入口,流程的出口,还有流程的具体过程以及参与到这些过程中的相关角色。
  在软件跟踪的流程当中,有以下几类角色:
  (1)软件开发人员;
  (2)软件测试人员;
  (3)软件测试项目经理;
  (4)软件开发项目经理;
  (5)CCB(Change Control Board):变更控制委员会。所谓的变更控制委员会,他是在开发人员和测试人员对缺陷出现争议的时候,做出后的裁判;
  (6)配置管理员:是测试人员提交BUG,开发人员修改,修改完check in ,那么在check in这个过程中需要配置管理员参与进来,只有经过配置管理员授权,开发人员才有资格把代码从本地Check in到服务器中去,所以配置管理员在软件缺陷管理中也很重要。