软件测试 作业二
fault:代码错误
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=x.length-1; i > 0; i--) {
if (x[i] == y) {
return i;
}
}
return -1;
}
// test: x=[2, 3, 5]; y = 2
// Expected = 0
我认为错误是i的判断条件出现了错误。i的判断条件应为i>=0而非i>0。
对于第二个问题,我认为测试用例应该是:Test: x = [], y = 2;
Excepted: NullPointerException
Actual: NullPointerException
对于第三个问题,我认为测试用例应该是:Test: x = [2,3,5], y = 5;
Excepted: 2
Actual: 2
对于第四个问题,我认为测试用例应该是:Test: x = [2,2,5]; y = 0;
Excepted: -1
Actual: -1
Failure: none
对于第二个程序:
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;
}
我认为错误出现在i的初值设置上,设置初值为0会导致读取数据的方向发生错误。应更改为:for (int i=x.length-1; i >= 0; i--)。
对于第二个问题,我认为不存在这样的测试用例;
对于第三个问题,我认为测试用例应该是:Test: x = [0];
Excepted: 0
Actual: 0
对于第四个问题,我认为测试用例应该是:Test: x = [1,0,1];
Excepted: 1
Actual: 1
Failure: none