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

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

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

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

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

  缺陷分析的重要性

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

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

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

  缺陷查找技术

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

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

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

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

  缺陷跟踪管理

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

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

  目前,不少缺陷跟踪管理系统是采用B/S结构来实现的,这类系统的用户界面所显示的信息一般应根据用户的角色不同而略有差异,因为各个角色使用该系统完成的任务各不相同。

  例如,测试人员用于报告缺陷或确认缺陷是否可以关闭;开发人员用于了解哪些缺陷需要他去处理以及缺陷经过处理后是否被关闭;而项目负责人需要及时了解当前有哪些新的缺陷,哪些必须及时修正等。

  引入软件测试缺陷管理系统可以提高软件测试过程效率,提高软件缺陷报告的质量,编译实施软件测试管理,这些方法对于终软件质量有很大指导性意义。

  案例

  确保NASD系统完整性

  纳斯达克证券交易市场的母公司全美证券商协会(NASD)是世界上大的自主管理组织(SRO),主要为纳斯达克系统提供运营支持和监控服务。

  作为证券交易市场,任何点滴的疏忽和错误,都会带来巨大的损失。为了在NASD复杂的、多样的应用环境中提高效率和准确度并减少部署成本,他们选择了美科利的TestDirector在所有将要开展测试的地方提供测试架构,开展以TestDirectorOpenTestArchitecture为核心,WinRunner和LoadRunner并用的测试贯穿全美证券商协会所有应用程序和平台。

  “我们的测试管理小组是IT部门中大的,但人多并不总是好事,”NASD测试管理组的副主管EricHenry说,“TestDirector为我们提供一种方法在组织各处提供稳定的测试,无需理会测试的应用,并将软件缺陷降到低。在运行中的测试种类或者测试模式都在我们的选择之内。结果是实现无缝的管控。”

  TestDirctor的缺陷检测首先在RequirementsManager中,将测试的程序与其应用功能需求相联系;然后开发小组将测试计划建立在MercuryQualityCenter中,测试小组将在未来的应用测试中便捷地重复使用测试计划或独立的测试案例;其次是测试小组通过真实地模拟整个交易的过程,执行Web缺陷检测;后进行缺陷和问题的分析,DefectManager支持整个缺陷生命周期?从初始问题发现,直至缺陷修复和验证修复。

  Henry表示,在测试过程中通过WinRunner脚本可以识别和详细记录特殊功能。依照功能性确定重新修复的需求,不必再运行整套测试。这使他们的工作变得轻松。

  其次,它能定位特殊场景。帮助测试小组利用手动的方法有效的节省了时间。后,它还大化企业资源的价值。脚本易于再次使用,并且在同一组测试中获取的信息可以和其他小组成员一起使用。