1. 테스트 커버리지 개념
- 테스트가 코드의 어느 정도를 검증했는지를 측정하는 지표
- 결함을 놓치지 않도록 테스트 범위를 정의하고 향상시키기 위함
- 여러 커버리지 기준으로 테스트의 완성도를 분석할 수 있음
2. 테스트 커버리지 유형
- 기능 기반 커버리지
- 라인 커버리지
- 코드 커버리지
3. 코드 커버리지
| 구분 | 설명 |
|---|---|
| 구문(문장) 커버리지 (Statement Coverage) |
프로그램 내 모든 명령문을 적어도 한 번씩 수행 |
| 결정(분기) 커버리지 (Branch Coverage) |
프로그램 내 전체 결정(분기)가 적어도 한 번씩은 참/거짓 결과를 수행 |
| 조건 커버리지 (Condition Coverage) |
결정 명령문 내의 각 개별 조건식이 적어도 한 번은 참/거짓 결과 수행 |
| 조건/결정 커버리지 (Condition/Decision Coverage) |
전체 결정식뿐 아니라 개별 조건식도 참/거짓 한 번 이상 수행 |
| 변경 조건/결정 커버리지 (Modified Condition/Decision Coverage, MC/DC) |
각 개별 조건식이 독립적으로 전체 결정식 결과에 영향을 주는지 확인 |
| 다중 조건 커버리지 (Multiple Condition Coverage) |
결정 포인트 내 모든 개별 조건식의 모든 가능한 논리적 조합을 고려 → 100% 커버리지 보장 |
(1) 구문 커버리지
- 모든 코드를 한 번 이상 실행했는지 확인
- 코드의 각 문장을 최소 1번 실행
- 가장 기본적이고, 조건 만족 여부는 무관함
(2) 조건 커버리지
- 각 조건식의 True / False 값을 모두 발생시킴
- 모든 조건식을 참 / 거짓으로 테스트
- 조합은 신경 쓰지 않고, 개별 조건만 검증
- 예시: if (A && B) → A(True/False), B(True/False)
(3) 결정 커버리지
- 조건 전체 결과(True/False)가 모두 발생했는지 확인
- 분기점의 전체 흐름을 점검
- if(A && B) : 전체 결과가 True/False 되도록 확인
(4) 조건/결정 커버리지
- 조건 + 결정 커버리지를 동시에 만족
- 조건의 각각과 결정 결과까지 확인
- if(A && B) : A, B 각각 true/false + 결과도 true/false
예시
- 테스트 1: A=true, B=true (결정 true)
- 테스트 2: A=true, B=false (결정 false)
- 테스트 3: A=false, B=true (결정 false)
(5) 변경 조건/결정 커버리지
- 모든 조건은 최소 한 번은 True/False를 가짐
- 한 조건만 바꿔 결과가 바뀌는지 확인
- 이론적으로 가장 안전한 조합이며 케이스도 줄임
예시
- 테스트 1: A=true, B=true → 결과: true
- 테스트 2: A=false, B=true → 결과: false → A 바뀌어 결과 변함
- 테스트 3: A=true, B=true → 결과: true
- 테스트 4: A=true, B=false → 결과: false → B 바뀌어 결과 변함
(6) 다중 조건 커버리지
- 모든 조건의 조합을 테스트 (2ⁿ 개)
- 조건들 간의 모든 경우의 수 검증
- if(A && B) : TT, TF, FT, FF
'💻 CS > 정보처리기사' 카테고리의 다른 글
| [소프트웨어 구축] 모듈의 결합도(Coupling)와 응집도(Cohesion) (0) | 2025.10.21 |
|---|---|
| [소프트웨어 구축] GoF(Gang of Four) 디자인 패턴 (3) | 2025.10.16 |
| [정보 보안] 보안 공격 기법 (0) | 2025.10.16 |
| [데이터베이스] 키와 무결성 (2) | 2025.10.16 |
| [운영체제] 페이지 교체 알고리즘 (4) | 2025.10.16 |