[B]软件
缺陷跟踪管理[/B]
(谢敏、戴金龙)
著作权申明:本文版权归计算机世界所有。任何大幅引用和转载必须征得作者谢敏和戴金龙同意。1为什么要做软件缺陷的跟踪管理
考察一个典型的软件
开发流程:
需求分析—概要设计—详细设计—程序编码—系统集成—交付与维护,你会发现此流程中各阶段之间的依赖与继承关系是相当密切的。前一阶段形成的方案或产品中正确的部分固然会被后一阶段继承和细化,然而,如果前一阶段的方案中出现了错误,而
测试人员没有及时介入此阶段的
质量控制,那么该错误就会被后一阶段继承和放大,并顺序传递下去。如果等到交付与维护阶段,错误才被发现,那么相关的纠错工作将成为一件成本高昂而又收效甚微的事情,在某些的情况下,甚至会导致整个开发工作的失败。这并不是故意危言耸听。据美国国家标准技术研究院的一份报告显示,占据世界软件销售额85%的大型专用软件,其开发的失败率高达70%。
因此,在软件开发流程的每个阶段都必须引入
软件测试技术,及早测试,杜绝错误的蔓延。然而,测试工作的天性决定了
测试人员可能是开发人员总想回避的角色。在测试实践的早期,当测试人员查出某个缺陷,报告给开发人员时,多数情况下开发人员会象征性表示一下感谢,然后把测试报告撂在一边,继续忙手头的工作。事后到底有没有修改,谁也不知道。如果测试人员频繁给同一开发人员报错或不停地追问缺陷的修改情况,开发人员或许会逐渐丧失好脾气,出于维护技术权威或其他目的,他会狡辩:这不是错误,这是软件的一个特殊功能。或者说:这不是什么大问题,现在开发进度紧,而且纠正起来也挺麻烦的,等有时间再说吧。于是,不了了之,问题依旧存在。
为了规避这种情况的发生,软件企业必须引入软件缺陷跟踪管理机制。测试人员不再需要直接与开发人员接触,甚至不需要知道开发者是谁,查出错误以后,直接报到缺陷跟踪管理系统就可以了(有些测试团队是有写入权限控制的),开发人员做不做修改以及什么时间之前必须完成修改是
项目管理部门的事情(当然测试团队也可以提相关建议)。引入缺陷跟踪管理机制一方面划清了各个角色的职责,避免了不必要争执,另一方面也有助于项目管理部门及时了解软件产品在生产过程中所处的质量状况,从而更好地控制产品的质量。
2软件缺陷的描述
在上一节的讨论中,没有对缺陷、错误做严格的区分,在开始本节的论述之前,先简单说明一下这两个概念。缺陷,指软件文档(如软件需求规格说明、设计规格说明等等)或程序代码中存在的数据错误、逻辑错误、内容遗漏以及内容上的不一致性等等。它包括错误,与
bug是同义词(注:针对缺陷、错误、bug有更细致的讨论,鉴于这是一篇实用性文章,笔者不打算做更严格的区分)。在上面一节,我们谈到在软件开发流程的每个阶段开发人员都有可能引入缺陷,那么如何来描述一个缺陷呢?下面笔者谈谈自己的看法。
(1)对缺陷的描述应该包含可追踪信息
如给每个缺陷分配一个缺陷号。每个编号必须是唯一的,可以根据该编号搜索、根据、查看该缺陷的处理情况。
(2)对缺陷的描述应该包含缺陷的基本信息
通常缺陷的基本信息包括缺陷状态、缺陷标题、缺陷严重程度、缺陷紧急程度、缺陷提交人、缺陷提交日期、缺陷所属、缺陷解决人、缺陷解决时间、缺陷解决结果、缺陷处理人、缺陷处理最终时间、缺陷处理结果、缺陷确认人、缺陷确认时间、缺陷确认结果等等。下面笔者简单解释一下:
缺陷状态:标注缺陷待修正、待评审、待验证、关闭等状态信息;缺陷标题:简明地说明缺陷的类型及内容;缺陷严重程度:测试人员给出的缺陷严重程度估计,可以是致命的、严重的、一般的、建议的;缺陷紧急程度:测试人员给出的测试处理优先级;缺陷提交人:发现此缺陷的测试人员,最好附有联系方式,以方便缺陷处理人员进行确认;缺陷提交日期:提交人提交缺陷的日期;缺陷所属:指缺陷所在的模块或者是缺陷所属的开发文档的名称;缺陷解决人:由谁来进行缺陷的解决,明确是需求分析人员、设计人员还是程序编码人员;缺陷解决时间:项目组负责人返回的缺陷预计处理的时间;缺陷解决结果:预计缺陷修改后能达到的结果;缺陷处理人:应该由谁来处理这个缺陷;缺陷处理最终时间:指缺陷得到处理的实际时间;缺陷处理结果:缺陷最后的实际处理结果;缺陷确认人:由谁来确认缺陷已经得到了修正;缺陷确认时间:缺陷修复的确认工作完成的时间;缺陷确认结果:确认软件缺陷的修正工作是否有效。
以上列出的条目不是必须的,读者可以根据项目的实际情况进行剪裁,同时还应该根据测试工作的实际需要适当添加一些笔者没有考虑到的条目。另外,要引起注意的是上述部分条目不是由测试人员来填写的,如:缺陷解决时间、缺陷解决结果、缺陷处理人等等,应该由项目管理人员统筹成本、进度等因素后决定。
(3)对缺陷的描述应该包含缺陷的详细描述;
即是对缺陷的特征应做详细的描述,例如程序代码中的错误,应详细描述错误发生的软硬件环境,相关输入输出数据,出错时程序的状态等等,以方便编码人员进行错误复现和错误定位。又