문제
다음 코드에 대해 문장 커버리지 테스트를 수행하려고 한다. 문장 번호와 실행 순서로 가장 적절한 것은?
Cint main(int b[], int m, int x) { int a = 0; // ① while (a < m && b[a] < x) { // ② if (b[a] < 0) // ③ b[a] = -b[a]; // ④ a++; // ⑤ } return 1; // ⑥ }
<조건> 문장 ④가 한 번 실행되고, 그 다음 while 조건이 거짓이 되어 반복문을 종료하는 테스트 경로를 기준으로 한다.
① ①→②→③→④→⑤→②→⑥ ② ①→②→③→⑤→②→⑥ ③ ①→②→⑥ ④ ②→③→④→⑤→①→⑥
정답
1번
해설
정답: 1. 초기화 문장 ①을 수행한 뒤 while 조건 ②가 참이 되어 반복문에 진입한다. if 조건 ③이 참이면 문장 ④가 실행되고, 이후 증가 문장 ⑤가 실행된다. 다음 while 조건 ②가 거짓이 되면 반복문을 빠져나와 return 문장 ⑥을 실행한다.
오답 풀이
- 1번: 조건에서 제시한 테스트 경로의 실행 순서와 일치한다.
- 2번: 문장 ④가 실행되는 경로가 아니다.
- 3번: 반복문 내부 문장이 실행되지 않는 경로이다.
- 4번: 초기화 문장 ①이 조건 검사보다 먼저 실행되어야 하므로 순서가 틀렸다.
보충 개념 문장 커버리지는 프로그램의 모든 문장이 최소 한 번 이상 실행되도록 테스트 경로를 선정하는 기준이다. 실행 순서를 묻는 문항은 입력 조건 또는 테스트 경로가 명확히 제시되어야 한다.