一、Fault、Error、Failure的区别
1. Fault:软件的静态缺陷,指导致系统失效的异常条件。
2.Error:不正确的内部状态,是一些故障的表现。Error是能导致Failure的系统内部状态。
3.Failure:预期行为出错或与外部状态描述不符。是指系统运行时出现的故障或者功能丧失。
二、Q&A
Q1:找到程序的fault?
程序1:循环条件出错,i>0会忽略数组中的第一个值,故应该为i>=0。
程序2:循环错误,程序为从前往后遍历,应改为从后往前遍历,即for(int i=x.length-1;i>=0;i--)。
Q2:设计一个未执行fault的测试用例?
程序1:x=null,y=2。
程序2:无论x是不是null,程序都会执行到i=0,所以没有用例可以不执行到fault。
Q3:执行fault,但没有触发error的测试用例?
程序1:x=[2,3,2,5],y=2,只要x中第一个元素不是唯一一个和y相等的元素。
程序2:当x为null时,执行fault且会抛出异常,但没有触发error。
Q4:触发error但未导致failure的测试用例?
程序1:x=[9],y=3,当x中只有唯一一个元素且不和y相等,触发error但不导致failure。
程序2:x=[0,1,2,3],y=3,当数组不为空,有唯一一个0或者没有0的情况,触发error但不导致failure。