다중 조건 테스팅 (Branch Condition Combination Testing)
다중 조건 테스팅은 각 결정문에서 가능한 모든 조건 조합을 테스트하는 기법이다.
이는 조건 커버리지의 확장된 형태로, 가능한 모든 부울 조건 조합을 테스트하는 것을 목표로 한다.
주요 특징
- 완전한 조건 조합: 결정문 내의 모든 개별 조건식에 대해 가능한 모든 true/false 조합을 테스트한다.
- 높은 커버리지: 100% 다중 조건 커버리지를 달성하면 결정 커버리지와 조건 커버리지도 100% 달성된다.
- 복잡한 로직 테스트: 여러 조건이 복합적으로 사용되는 복잡한 의사결정 구조를 철저히 테스트할 수 있다.
장점
- 철저한 테스트: 모든 가능한 조건 조합을 테스트하므로 누락된 경우의 수 없이 철저한 테스트가 가능하다.
- 숨겨진 버그 발견: 특정 조건 조합에서만 발생하는 오류를 찾아낼 수 있다.
- 로직 오류 검출: 복잡한 조건문의 로직 오류를 효과적으로 발견할 수 있다.
단점
- 테스트 케이스 증가: 조건의 수가 증가할수록 테스트 케이스의 수가 기하급수적으로 늘어난다.
- 시간과 비용: 많은 테스트 케이스로 인해 테스트 수행 시간과 비용이 증가한다.
- 복잡성: 조건이 많은 경우 모든 조합을 고려하는 것이 매우 복잡해질 수 있다.
사용 사례
다중 조건 테스팅은 다음과 같은 상황에서 특히 유용하다:
- 안전 중요 시스템: 모든 가능한 시나리오를 철저히 테스트해야 하는 경우
- 금융 시스템: 복잡한 조건에 따라 중요한 결정이 이루어지는 경우
- 복잡한 비즈니스 로직: 여러 조건이 복합적으로 작용하는 경우
예시
다음과 같은 코드가 있다고 가정해 보자:
이 함수에 대한 다중 조건 테스트 케이스는 다음과 같이 구성될 수 있다:
- age < 18, is_student = True, purchase_amount > 100
- age < 18, is_student = True, purchase_amount <= 100
- age < 18, is_student = False, purchase_amount > 100
- age >= 18, age < 60, purchase_amount > 200
- age >= 18, age < 60, purchase_amount <= 200
- age >= 60, purchase_amount > 200
- age >= 60, purchase_amount <= 200
이렇게 모든 가능한 조건 조합을 테스트함으로써, 함수의 모든 경로와 로직을 철저히 검증할 수 있다.