一、软件程序中的错误

     软件程序中的错误有三种:faults(故障), errors(错误), failures(失败)。

     软件故障(faults):软件中的静态缺陷。

     软件错误(errors):不正确的内部状态,该状态是某个故障的表现。

     软件失败(failures):与需求或其他期望行为的描述有关的,外部的,不正确的行为。

二、分析下列程序

   程序一:

   

public int findLast (int[] x,int y){
   //Effects:If x==null throw NullPointerException
  //else return the index of the last element in x that equals y.
 //if no such element exists,return -1.
    for (int i= x.length-1;i>0;i--)
    {
if(x[i]==y) { return i; } } return -1; }

 (1) 程序故障: for 循环应该为  i>=0.

(2) 不会执行故障的测试用例:x 为空时,不会执行故障。

(3) 执行故障不会导致错误状态的测试用例:x=[5,6,7] y=6时,执行了故障,但没有出现错误的状态。

(4)导致错误而不是失败的测试用例:x=[2,3,4],y=7时。

 

 

public static intlastZero(int[] x) {
//Effects: if x==null throw Null PointerException// else return the index of the LAST 0 in x.
// Return -1 if 0 does not occur in x
for (inti= 0; i< x.length; i++)
{
if (x[i] == 0)
{
return i;
}
} return -1;
}

 (1) 程序故障: for 循环应该为  for (int i = x.length; i >=0; i--)

(2) 不会执行故障的测试用例:所有输入都会执行故障。

(3) 执行故障不会导致错误状态的测试用例:x=[4],x 只有一个元素时,执行了故障,但没有出现错误的状态。

(4)导致错误而不是失败的测试用例:x=[2,0,4]。