软件中是不可能没有缺陷的。如何对软件缺陷跟踪和管理,对于终的软件质量有关键意义。 

近,北京宏一科技公司项目组的负责人李征遇到了麻烦事,由他的项目组负责一个客户的定制软件在交付使用后,仅一个月,受到了客户的投诉,理由是在软件使用过程中出现了错误。 

经李征多次上门检验后,发现确实是软件质量的问题,为此,公司限定李征必须在两周内完善软件质量。并扣除他全年奖金。 

软件中的缺陷(Defect或Bug)是软件开发过程中的副产品。通常,缺陷会导致软件产品在某种程度上不能满足用户的需要。 

现在,很多企业都根据自己的业务模式,或自己研发或通过开发商定制应用软件,而这种开发方式往往由于软件的开发周期较短、开发小组跨部门进行软件开发而导致部门的关键信息没有尽量准确的传递等原因,终造成一般软件与成熟的通用软件之间的差距?存在较多的缺陷。 

缺陷分析的重要性 

如何大限度地发现软件产品和软件项目中的缺陷,首先,是提高开发人员的素质和责任心,应用科学的测试方法和制定的测试方案。但这是不够的,我们还需要实施缺陷分析。 

开发人员通过进行缺陷分析,将发现各种类型缺陷发生的概率,并掌握缺陷所集中的区域、明晰缺陷发展趋势及了解缺陷产生主要原因。 

在获取这些有效信息后便可以有针对性地提出遏制缺陷发生的措施、降低缺陷数量。这对于改进软件开发,提高软件质量有着十分重要的作用。 

缺陷查找技术 

在典型项目中,产品被分成很多小的模块,由不同的工程师负责开发。在模块设计、实现、编译后,工程师作初始的单元测试;单元测试后,多个模块组成一些大组件进行集成测试;经过各种级别的组件测试后,这些组件集成为产品进行产品设计。后,将产品集成到系统中进行系统测试。 

虽然缺陷总是存在,但在开发过程中尽早发现和修复缺陷还是可能的。有多种发现程序中的缺陷的方法,基本上都包括以下步骤:表示缺陷征兆;从征兆中推断出缺陷的位置;确定程序中的错误;决定如何修复缺陷;修复缺陷;验证这个修复是否已经解决了这个问题。 

有多种工具和辅助手段来帮助完成这些步骤,工程师常用的工具是编译器,它能够表示出大部分语法缺陷。但是编译器基本的任务是生成目标代码,并且可能会在源程序有缺陷的情况下生成代码。 

另外一种常用方法是上面讲述的测试。测试的质量是由测试用例覆盖所有程序功能的程度决定的。测试可以用来验证程序几乎所有的功能,但有自己的缺点:同编译器一样只能满足缺陷排除的第一个步骤,但仍必须从缺陷征兆找出问题的根源,然后才能修复;随着项目规模的扩大,全面的测试会花费大量的时间,要进行完全测试几乎不可能的。 

缺陷跟踪管理 

软件缺陷跟踪管理系统可以通过添加、修改、排序、查寻、存储操作来管理软件缺陷。目前市场上已经出现了一些通用缺陷跟踪管理软件,例如美科利的TestDirctor和Mozilla公司的Buzilla软件。 

美科利的TestDirctor可以提供稳定一致的并可重复的流程来规划和安排软件测试进度、分析结果、管理软件缺陷等问题,从而使开发小组能更快捷、更有效地部署高质量的应用。Mozilla公司的Buzilla软件能够建立一个的Bug跟踪体系,可自行配置并产生报表。