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