public static int lastZero (int[] x) {
//Effects: if x==null throw
NullPointerException
// else return the index of the LAST 0 in x.
// Return -1 if 0 does not occur in x
for (int i = 0; i < x.length; i++)
{
if (x[i] == 0)
{
return i;
}
} return -1;
}
// test: x=[0, 1, 0]
// Expected = 2
--------------------------------------------------------------------------
1. Identify the fault.
for循环中的判断条件应该为:for (int i=x.length-1; i >= 0; i--)
2. If possible, identify a test case that does not execute the fault. (Reachability)
text:x=[];
测试结果:抛出空指针异常,没有执行下面的程序,没有执行fault
3.If possible, identify a test case that executes the fault, but does not result in an error state.
text:x=[3,2,1]
expected=1
测试结果:执行了含有fault的程序,但是并没有产生错误,即执行了fault,没有执行error
4.If possible identify a test case that results in an error, but not a failure.
test: x=[3, 2, 5]; y = 1
expected = -1
测试结果:没有遍历x=1,直接返回了-1,因此执行了error,没有执行failure
--------------------------------------------------------------------------
public static int lastZero (int[] x) {
//Effects: if x==null throw
NullPointerException
// else return the index of the LAST 0 in x.
// Return -1 if 0 does not occur in x
for (int i = 0; i < x.length; i++)
{
if (x[i] == 0)
{
return i;
}
} return -1;
}
// test: x=[0, 1, 0]
// Expected = 2
---------------------------------------------------------------------------------------
1.Identify the fault.
for循环中的判断条件应该为:for(int i=x.length-1; i > =0; i–-);
2.If possible, identify a test case that does not execute the fault. (Reachability)
test: x=[];
测试结果:抛出空指针异常,没有执行下面的程序,则没有执行fault
3.If possible, identify a test case that executes the fault, but does not result in an error state.
test: x=[1, 2, 0]
Expected = 2
测试结果:执行了含有fault的程序,但是并没有产生错误,即执行了fault,没有执行error
4.If possible identify a test case that results in an error, but not a failure.
test: x=[3, 2, 5];
Expected = -1
测试结果:遍历到i=3时,返回了-1,不符合设计目的,因此执行了error,没有执行failure