错误,缺陷和失效
所有人都会犯错误(mistake),这样就会导致在软件代码或者其他相关工作产品中引入缺陷(fault 或 bug)。在一个工作产品中引入的缺陷就可能会导致其他相关工作产品都引入缺陷。
如果执行了存在缺陷的代码,就可能导致失效,但不一定在所在情况下都是这样。例如,有些缺陷需要非常特殊的输入或先决条件才能触发失效,这种失效可能很少发生,也可能永远不会发生。
发生错误的原因有很多种,例如:
- 时间压力
- 人本身容易犯错
- 缺乏经验或技能不足的项目参与者
- 项目参与之间沟通有误,包括需求和设计之间的沟通误解
- 代码,设计,架构的复杂度,待解决的潜在问题,和/或使用的技术
- 对系统内和系统间接口的误解,特别是当系统内和系统间的交互数量比较多的时候
- 新的不熟悉的技术
除了代码中的缺陷导致的失效之外,环境条件也可能导致失效。例如:辐射,电磁场和污染等都有可能引起固件中的失效,或者由于硬件环境的改变而影响软件的执行。
但并非所有的意外的测试结果都属于失效。由于测试执行方式的错误,或者由于测试数据,测试环境或其他测试件中的缺陷,或者由于其他的原因,可能会出现假阳性结果(误报)。相反的情况也可能发生,即相似的错误或者缺陷会导致假阴性结果(缺陷的漏报)。假阴性结果指的是没有发现测试应该要发现的缺陷;假阳性结果记录为缺陷,但实际上并不是缺陷。