소프트웨어 테스트 작업(二) FAULT, FAILURE, ERROR 분석 및 테스트 용례 설계

Below are four faulty programs. Each includes a test case that results in failure. Answer the following questions (in the next slide) about each program.
program1:
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

program2:
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

Questions
Identify the fault. If possible, identify a test case that does not execute the fault. (Reachability) If possible, identify a test case that executes the fault, but does not result in an error state. If possible identify a test case that results in an error, but not a failure.
Answers
Fault 정적 오류, Failure 외부 오류, Error 내부 오류
프로그램 1:
1. Fault: for 순환의 제어 조건 i>0 여기는 i>=0이어야 합니다. 그렇지 않으면 x[0]에 접근하지 않습니다.
2.fault를 실행하지 않는 예
x = {} y = 3;
이 경우 잘못된 메모리에 직접 접근하여 프로그램이 종료됩니다
3.fault를 실행했지만 잘못된 값을 되돌려 주지 않았습니다.
x={1,2,3} y = 2
기대는 1, 답도 1.
4. 실수를 초래하지만 실패하지 않는다
x={1,2,3},y =0
기대 답안은 -1이고 실제 답안은 -1이다.
프로그램 2:
1.fault 코드는 수조의 마지막 0의 위치를 찾지만 첫 번째 0의 위치를 조회하는 것을 실현한다
2. fault를 실행하지 않습니다. 순환하는 곳에서fault(방향이 반대로)가 있기 때문에fault를 실행하지 않는 용례는 없습니다.
3. fault를 실행하지만 Error가 아닌 경우 그룹은 하나의 요소만 있고 정반이 반복되든 차이가 없습니다. (모두 0이라고 표시된 정반이 존재하지 않습니다.)
예를 들어 x={4};
4.fault를 실행하면 error가 발생하지만failure가 없습니다. x에 하나 또는 0이 없을 때
x = {1,0,2,3}
답은 1이고 기대 답도 1입니다.

좋은 웹페이지 즐겨찾기