다음 소스 코드와 테스트 입력을 사용한 테스트 커버리지 설명으로 옳지 … | [7급 국가직 소프트웨어공학] 21년 1회차 기출문제 상세 페이지
1[7급 국가직 소프트웨어공학] 21년 1회차
다음 소스 코드와 테스트 입력을 사용한 테스트 커버리지 설명으로 옳지 않은 것은? (단, 단축연산(short-circuit evaluation)은 수행하지 않는다)
| 문장 번호 | 소스 코드 | 테스트 입력 |
|---|---|---|
| void temp(int x, int y) { | T = {t1:(x=-2, y=3), t2:(x=2, y=0)} | |
| 1 | if(x < 0 && y >= 0) | |
| 2 | printf("%d",y); | |
| 3 | if(x >= 0) | |
| 4 | printf("%d",x); | |
| } |
1
t2만 사용하면 문장(statement) 커버리지가 75 %이다.
2
T를 사용하면 문장 커버리지가 100 %이다.
3
T를 사용하면 분기(branch) 커버리지가 100 %이다.
4
T를 사용하면 조건(condition) 커버리지가 100 %이다.
해설
T로는 조건 y ≥ 0이 거짓이 되는 경우가 없으므로 조건 커버리지는 100%가 아니다.
t1(x=-2, y=3)은 문장 1·2·3을, t2(x=2, y=0)는 문장 1·3·4를 실행한다. 개별 조건을 보면 x < 0과 x ≥ 0은 참·거짓이 모두 나오지만 y ≥ 0은 두 입력 모두 참이다.
- t2만 사용한 문장 커버리지: 문장 4개 중 1·3·4를 실행하므로 75%이다.
- T의 문장 커버리지: t1이 문장 2를, t2가 문장 4를 실행해 4개 모두 실행되므로 100%이다.
- T의 분기 커버리지: 첫째 if는 t1에서 참·t2에서 거짓, 둘째 if는 t1에서 거짓·t2에서 참이므로 100%이다.
오류나 개정된 내용이 보이면 알려주세요