화이트박스·커버리지·경로
전체 요구 개수를 분모로 두고 실제 실행한 항목만 분자에 넣는다.
실기 학습 목표
전체 요구 개수를 분모로 두고 실제 실행한 항목만 분자에 넣는다.
핵심 이론
구문 커버리지는 실행 명령문 비율, 결정·분기 커버리지는 결정의 참·거짓 결과 비율, 조건 커버리지는 개별 조건의 참·거짓 평가 비율이다. 조건을 모두 바꿔도 결정 결과가 한쪽뿐일 수 있다.
MC/DC는 각 조건이 독립적으로 결정 결과를 바꾸는 쌍을 확인한다. 다른 조건을 고정하고 대상 조건만 바꿔 결과가 바뀌는지 검사한다.
다중 조건 커버리지는 가능한 조건 조합을 검사한다. 독립된 불리언 n개의 전체 조합은 2^n이지만 실제 입력으로 불가능한 조합과 단락 평가로 미평가된 조건은 따로 다룬다.
순환 복잡도는 제어흐름 그래프에서 E−N+2P다. P는 연결 성분 수이며 단일 연결 그래프는 E−N+2다. 모든 경로를 실행하는 것과 모든 분기를 덮는 것은 다르다.
커버리지는 분모가 무엇인지부터 정한다
구문은 명령문, 분기는 각 결정의 참·거짓, 조건은 개별 불리언의 참·거짓을 센다. 실행 횟수가 많아도 같은 항목을 반복했다면 충족 항목 수를 더 늘리지 않는다. 요구 항목 목록을 만든 뒤 실행한 항목에 표시한다.
A OR B에 (참,거짓)과 (거짓,참)을 넣으면 A와 B 각각 참·거짓을 모두 얻어 조건 커버리지는 충족한다. 하지만 전체 결과는 두 번 모두 참이므로 결정 커버리지는 절반이다. 단락 평가를 실제 실행 기준으로 세는 문제라면 평가하지 않은 B를 실행한 것으로 표시하지 않는다.
MC/DC는 다른 조건을 고정한 채 대상 조건만 바꿨을 때 전체 결과가 바뀌는 쌍을 찾는다. A AND B에서는 B=참을 고정해 A만 바꾸고, A=참을 고정해 B만 바꾼 쌍이 필요하다. 단순히 모든 행의 조건값이 달랐다는 이유로 독립 영향이 입증되지는 않는다.
순환 복잡도는 연결 성분 수를 확인해 E−N+2P로 계산한다. 모든 분기를 덮는 경로 조합을 고를 때는 각 경로의 분기 집합을 합쳐 요구 집합 전체와 비교한다. 분기 커버리지 100%가 가능한 모든 경로의 실행을 뜻하는 것은 아니다.
풀이 예시
결정식 A OR B를 검사한다. A와 B의 논리값은 모두 기록하며 단락 평가에 따른 미평가는 고려하지 않는다. 테스트 (A,B)=(참,거짓), (거짓,참)을 실행했다. 각 조건의 참·거짓을 확인하는 조건 커버리지와 전체 결정의 참·거짓을 확인하는 결정 커버리지를 각각 충족하는지 순서대로 쓰시오. 답은 충족 또는 미충족으로 제한한다.
예시 정답
① 충족, ② 미충족
풀이 과정
A와 B는 각각 참과 거짓을 한 번씩 가져 조건 커버리지는 충족한다. 그러나 OR 전체 결과는 두 테스트 모두 참이어서 거짓 분기가 없다. 결정 커버리지는 미충족이다.
답안 점검
위 풀이 예시의 답을 가린 뒤, 핵심 이론의 규칙을 적용해 직접 풀어 보세요. 코드와 계산 문제는 중간값·단위·최종 출력의 순서를, 용어 문제는 지문의 핵심 단서와 답의 의미를 점검하세요. 해설과 다른 부분이 있으면 어느 조건을 놓쳤는지 확인하고 연결된 실기 문제로 다시 연습하세요.