一种递归循环的关系,递归关系要成立必须有一个明确的结束条件,这个条件就是要找出Root Cause,否则将无法完成一个失效分析。Р通过英文例题及答案来更确切的理解三者。Рfault:代码逻辑错误,这是静态的Рfailure:运行结果与预期结果不符合。这是结果Рerror:程序运行过程中的中间状态(count i值的变化)出错(比如count++,过程中count变化,这就是中间状态),最后得到的结果是failure。error相当于一道题的中间运算步骤出错,failure相当于一道题的最终结果。Рerror与failure之间的关系:Рerror比作一道题的中间过程,failure比作一道题的结果。Р一道题中间过程错了,但是结果对了;可能中间过程错了,结果也错了;可能中间过程对了,结果对了。当然只要结果错了,肯定是中间过程错了,这点毋庸置疑,也就是只要failure出现了,error必然发生了。Р例题1Р Р错误算法可以分两类:Р算法部分正确,逻辑缺失一部分,没有考虑到问题的所有情况,可以设计满足了算法中考虑到的问题情况的测试用例,这样执行了fault,导致error,但是没有导致failure。Р算法完全错误,无论何种测试用例,fault都会导致error,进而导致failure。Рerror可以具体到代码中的i值本来是应该递减的,但是却递增了,这时候就出现了error。Р从上面这道例题分析:Р怎么写执行fault代码,但是没有导致error: 这道题错在“代码是将逆序查找写成了正序查找”,那么在数组只有一个元素的情况下,逆序与正序相同,i就是0没有递增递减的变化,所以这个时候就没有error了。Р怎么写执行了fault代码,导致了error,但是没有导致failure的情况:若是这个算法部分正确,没有考虑完整所有的问题情况,可以设计满足了算法中考虑到的问题情况的测试用例