软件测试——软件缺陷

摘要:
本文主要讲有关软件缺陷的知识,是软件测试的第一篇。

软件缺陷是什么


有许多不同的软件失败的术语,在不同的教材可能有不同的叫法,在不同的公司内部也有不同的叫法。他们大致有下面这三类,代表着不同程度的软件缺陷。

  • 故障、失败、缺点
  • 异常、事件、偏差
  • 问题、错误、缺陷

软件缺陷的官方定义


软件缺陷其实不容易有精准的定义,还容易产生循环定义。下面给出5条具体的定义,避免产生循环定义。

  • 软件未实现产品说明书要求的功能
  • 软件出现了产品说明书指明不应该出现的错误
  • 软件实现了产品说明书未提到的功能
  • 软件未实现产品说明书虽未明确提及但应该实现的目标
  • 软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好
    以上都可以称之为软件缺陷,尤其值得注意第三条,不要以为实现了更多的功能就是好的,实现了但是产品说明书没有提到就是软件缺陷,因为这样会导致出现一些用户意想不到的结果,这样就是不允许的。

导致软件缺陷原因


从上面的五条定义就可以看到,产品说明书肯定会是一个关键点,确实也是如此的。

  • 导致软件缺陷最大的原因是产品说明书
  • 导致软件缺陷第二大原因来源是设计
  • 无论是产品说明书还是设计,都有易变的特点,加上随意的态度,一旦沟通不足就构成了软件缺陷。

修复费用


想要修复软件缺陷是有费用的,修复费用也有一个特点:

  • 随着时间推移,费用呈十倍增长
    我们可以来看几个例子:
    • 迪斯尼的狮子王:这是迪斯尼发布的一款游戏,这款游戏发布之后大受欢迎,但是迪斯尼未能对不同类型pc机型进行测试,结果导致很多机型无法正确安装游戏,这不仅仅造成大量售后问题,还流失用户,损失惨重。如果能在早期对不同的pc机进行测试,避免这个问题,那这将是一款非常成功的游戏。
    • 奔腾的浮点数缺陷:这次缺陷导致的召回损失大家有目共睹。其实这个问题在测试的时候,工程师已发现这个问题,但是想到大部分用户的日常使用不会出现问题,便忽略了这个缺陷,不解决,结果酿成悲剧。
      以上的例子都可以看到软件测试的重要性,尽早发现并解决可以减少修复成本。

软件测试员的工作


软件测试员的工作大致有两个要点:

  • 发现软件缺陷
  • 并且要尽可能快的找出

软件测试员应该具备的品质


一个优秀的软件测试员应当有以下的品质:

  • 应该是探索者、故障排除员
  • 不会放过任何蛛丝马迹
  • 具有创造性、追求完美
  • 判断准确
  • 注重策略和外交:如何和程序员沟通
  • 善于说服