Software Testing -- HW2  

Below are two faulty programs. Each includes a test case that results in failure. Answer the following questions (in the next slide) about each program.

 A:

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;

 }

// test: x=[2, 3, 5]; y = 2 // Expected = 0

 B:

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

■    Identify the fault.

 A:  i should be greater than or equal to 0.   

 B:  x should be searched from ending to beginning.

■   identify a test case, does not execute the fault

 A:  test: x=null; y=4;

 B:  test: x=null;

   identify a test case, executes the fault, but does not result in an error state

 

 A:  test: x=[ 3,5,6,7,4,3,2,8]; y=4;  It contains a 4 of index 4, not index 0;

 B:  test: x=[0];  It contains only one 0;

 

 

 

   identify a test case, results in an error, but not a failure

 A:  test: x=[ 3,5,6,7,2,3,2,8]; y=4;  It doesn’t contain a 4;

 B:  test: x=[ 3,5,6,7,2,3,2,8];  It doesn’t contain a 0;