다음 Java 코드의 조건 커버리지(condition coverage)… | [7급 국가직 소프트웨어공학] 26년 1회차 기출문제 상세 페이지
1[7급 국가직 소프트웨어공학] 26년 1회차
다음 Java 코드의 조건 커버리지(condition coverage)를 가장 크게 만족하는 테스트 케이스는? (단, 단축 연산(short-circuit evaluation)은 수행하지 않는다)void method(int x, int y, int z) {
if (x > 20 && y == 5) {
x = 10;
z = 5;
}
if (x == 10 || z % 2 == 0) {
z += 10;
}
}
1
(x=10, y=10, z=4), (x=5, y=5, z=3)
2
(x=25, y=5, z=3), (x=8, y=5, z=3)
3
(x=10, y=10, z=4)
4
(x=25, y=5, z=3), (x=10, y=5, z=3), (x=5, y=5, z=1)
해설
단축 연산 없이 네 조건의 참·거짓 8가지를 세면, (x=10, y=10, z=4)와 (x=5, y=5, z=3)의 조합이 7가지를 충족해 가장 크다.
조건은 x>20, y==5, x==10, z%2==0이며, 두 번째 if는 첫 번째 if 실행 후의 x·z 값으로 평가한다.
(10,10,4): 거짓, 거짓, 참, 참
(5,5,3): 거짓, 참, 거짓, 거짓
x>20만 거짓 하나뿐이고 나머지 세 조건은 참·거짓이 모두 나온다.
- (x=25, y=5, z=3), (x=8, y=5, z=3): 첫 입력이 x=10, z=5로 바뀌어 z%2==0은 거짓만, y==5는 참만 나와 6가지이다.
- (x=10, y=10, z=4) 단독: 각 조건이 한 값씩만 나와 4가지이다.
- (x=25, y=5, z=3), (x=10, y=5, z=3), (x=5, y=5, z=1): y==5는 참만, z%2==0은 거짓만 나와 6가지에 그친다.
오류나 개정된 내용이 보이면 알려주세요