Fault:静态存在于软件中的缺陷;
Error: 软件运行中,运行到fault,触发产生的错误;
Failure: Error传播到软件外部,使用户观测到失效的行为。
要观测到Failure需要三个必要的条件:
1、执行必须通过错误的代码(Execution-执行);
2、在执行错误代码的时候必须触发出一个错误的中间状态(Infection-感染);
3、错误的中间状态必须传播到最后输出,使得观测到输出结果与预期结果不一致(Propagation-传播)。
一个测试执行到包含fault的代码,不一定会产生错误的中间状态error;
产生了错误的中间状态,不一定会有失效failure