摘要:
本文主要讲有关软件缺陷的知识,是软件测试的第一篇。
软件缺陷是什么
有许多不同的软件失败的术语,在不同的教材可能有不同的叫法,在不同的公司内部也有不同的叫法。他们大致有下面这三类,代表着不同程度的软件缺陷。
- 故障、失败、缺点
- 异常、事件、偏差
- 问题、错误、缺陷
软件缺陷的官方定义
软件缺陷其实不容易有精准的定义,还容易产生循环定义。下面给出5条具体的定义,避免产生循环定义。
- 软件未实现产品说明书要求的功能
- 软件出现了产品说明书指明不应该出现的错误
- 软件实现了产品说明书未提到的功能
- 软件未实现产品说明书虽未明确提及但应该实现的目标
- 软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好
以上都可以称之为软件缺陷,尤其值得注意第三条,不要以为实现了更多的功能就是好的,实现了但是产品说明书没有提到就是软件缺陷,因为这样会导致出现一些用户意想不到的结果,这样就是不允许的。
导致软件缺陷原因
从上面的五条定义就可以看到,产品说明书肯定会是一个关键点,确实也是如此的。
- 导致软件缺陷最大的原因是产品说明书
- 导致软件缺陷第二大原因来源是设计
- 无论是产品说明书还是设计,都有易变的特点,加上随意的态度,一旦沟通不足就构成了软件缺陷。
修复费用
想要修复软件缺陷是有费用的,修复费用也有一个特点:
- 随着时间推移,费用呈十倍增长
我们可以来看几个例子:- 迪斯尼的狮子王:这是迪斯尼发布的一款游戏,这款游戏发布之后大受欢迎,但是迪斯尼未能对不同类型pc机型进行测试,结果导致很多机型无法正确安装游戏,这不仅仅造成大量售后问题,还流失用户,损失惨重。如果能在早期对不同的pc机进行测试,避免这个问题,那这将是一款非常成功的游戏。
- 奔腾的浮点数缺陷:这次缺陷导致的召回损失大家有目共睹。其实这个问题在测试的时候,工程师已发现这个问题,但是想到大部分用户的日常使用不会出现问题,便忽略了这个缺陷,不解决,结果酿成悲剧。
以上的例子都可以看到软件测试的重要性,尽早发现并解决可以减少修复成本。
软件测试员的工作
软件测试员的工作大致有两个要点:
- 发现软件缺陷
- 并且要尽可能快的找出
软件测试员应该具备的品质
一个优秀的软件测试员应当有以下的品质:
- 应该是探索者、故障排除员
- 不会放过任何蛛丝马迹
- 具有创造性、追求完美
- 判断准确
- 注重策略和外交:如何和程序员沟通
- 善于说服