浅谈软件测试中的Bug

时间:2017-09-05 09:08

  【IT168 评论】引言

  现在软件开发公司越来越重视产品质量,很多软件公司纷纷成立了自已的测试团队,测试在软件开发的周期中显得越来越重要。软件测试是为发现错误而运行一个程序或者系统的过程。软件测试的主要目的是发现软件中的错误或缺陷。这里软件中的一个错误或缺陷就是一个Bug。软件测试的过程就是不断的寻找Bug,然后排除Bug。微软的研发管理中,它的Bug管理系统是居于核心地位的。测试人员只要发现问题就立即新建一个Bug予以跟踪并指派给相关的开发小组长,开发人员会根据Bug的详细信息找到问题所在,修改程序解这个Bug并把Bug返回给当初的测试人员。阅读每个Bug,你可以详细的看到大家解决这个问题的完整思路。一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug,而系统测试又能找出其余Bug中的15%,最后的5%的Bug可能只有在用户的大范围、长时间使用后才会曝露出来。因为测试只能够保证尽可能多地发现错误,无法保证能够发现所有的错误。

  一、软件Bug涵义

  软件Bug实际是软件产品没有达到预期设计目标,在软件内部存在的一种缺陷。在不影响用户和系统正常运行的情况下处于隐蔽状态,没有表现出来。当Bug发生运行错误时,轻者影响用户使用,重者会构成事故,造成损失或伤害。软件Bug按其危害程度大致分为4类:①致命性错误:Bug一旦运行,造成系统崩溃或挂起、数据被破坏。②严重性错误:造成系统不稳定,产生错误结果,业务处理功能无法实现。③一般性错误:用户在完成某一功能时出现错误,但不影响该功能的实现和系统的正常运行。④操作性错误:用户使用软件时,感觉不方便。

  二、Bug产生的原因

  软件几乎天天在修改,审核,验证再测试,可相当长一段时间的测试过程中会发现居多这样那样的缺陷,层出不穷的发现Bug,到底是什么原因?总结以下几种常见原因:

  2.1 测试遗漏

  软件测试的设计主要体现在测试用例的设计,以及通过测试策略将这些测试用例同测试计划,测试执行,还有测试结果数据的收集整理结合在一起执行,由于测试人员水平的高低,测试工具使用的熟练程度,以及对所测试对象的理解深度等原因,测试设计很难完善,主要表现在测试用例设计的不全面,存在遗漏,或者测试方案的不周密,以及可能的测试人员执行时产生的偏差等等,这些测试方面的遗漏和偏差都可能导致软件问题没有及时发现,造成测试的遗漏。

  2.2 设计及修改原因

  软件需求或者设计方案经常被更改,特别是变更没有导入一套成熟的变更管理体系的情况下,每次变更无疑于埋下大量的地雷,这些都为Bug提供滋生的环境。另外后期修改维护中对Bug未做准确的分析定位,修改方案未审核,或者修改过程中程序员出现“头痛治头,脚痛治脚”,“补了东边漏了西边”等不良修改过程中引发出新的问题,也是导致Bug被扩大的原因。

  2.3 Bug的潜伏性及阶段性

  有时候, Bug实际存在但由于触发它的条件不满足从而呈现潜伏状态只能在某个阶段才能被发现,单元测试,集成测试,系统测试等阶段测试重点关注的对象就不同,如集成测试可以发现单元测试通过后的模块之间接口上的错误。特别象嵌入式系统中多进程以及多任务处理问题、系统容错性问题、内存问题等等,这些情况下表现出的潜伏性更加复杂多变,导致发现这些Bug需要一个特别长的周期或者需要某一特定测试环境能被有效搭建的情

  况下才能查找出。

  2.4 Bug的隐蔽性和周期性

  该Bug实际存在但由于其他Bug的存在导致它所在的代码没有得到执行,因而无法暴露该Bug,这种情况在以黑盒测试为主的测试中表现尤为突出,只有通过周期性的Bug修复及测试才能发现该类Bug。

  三、软件Bug的危害

  2002年美国商务的国家标准技术研究所发表了一份有关软件Bug的损失报告。据该报告推测,美国每年由于软件Bug而引起的损失额高达595亿美元。这一数字相当于美国国内生产总值的0.6%,占美国每年软件销售总额的1/3。也就是说,每卖3美元软件,就会带来l美元的损失。由此可见软件Bug所带来的损失是多么巨大。下面通过两个案例进一步说明软件Bug的危害。

  例1:据《金融时报》报道,2002年4月1日,日

  本最大的银行—瑞穗金融控股集团(富士银行、第一劝业银行和兴业银行三家银行合并后组成)合并后对外营业的第l天,许多储户J凉讶地发现账户的余额被重复扣掉了或存款没有更新余额,原因是该行计算机系统出现了问题,造成200多万账户余额出现错误。一个月后错账还没有处理完毕,一时举国上下震动,为此银行声誉严重受损

  例2:在Mierosoftl981年推出的Basie软件上,