원인-결과 그래프
IT위키
더 많은 작업
원인-결과 그래프(Cause-Effect Graphing)는 입력 조건(원인)과 출력 동작(결과) 사이의 논리 관계를 불 대수 그래프로 그린 뒤, 그 그래프를 결정 테이블로 바꾸어 테스트케이스를 뽑는 명세 기반 테스트 설계 기법이다.
1970년대 IBM 에서 쓰이기 시작했고, 글렌포드 마이어스(Glenford Myers)의 『The Art of Software Testing』이 대표 기법으로 소개하면서 널리 알려졌다. 동치 분할 테스트나 경계값 분석 테스트는 입력 하나하나를 따로 보므로 여러 조건이 함께 만족될 때의 동작을 놓치기 쉽다. 원인-결과 그래프는 조건들의 조합과 그 조합이 내는 결과를 명시적으로 따진다.[1]
국제 표준 ISO/IEC/IEEE 29119 파트 4(테스트 기법)는 원인-결과 그래프를 결정 테이블 테스트, 동치 분할, 경계값 분석 등과 함께 명세 기반 테스트 설계 기법의 하나로 정의한다. 그래프에서 결정 테이블을 만들고, 테이블의 규칙(열)마다 테스트케이스를 하나씩 도출한다.[2]
- 명세를 다룰 수 있는 크기로 나눈다
- 원인(입력 조건)과 결과(출력·상태 변화)를 찾아 번호를 붙인다
- 원인과 결과를 AND·OR·NOT 으로 이어 그래프를 그린다
- 원인끼리, 결과끼리 동시에 성립할 수 없는 관계를 제약으로 표시한다
- 그래프를 결정 테이블로 바꾼다
- 테이블의 각 열을 테스트케이스로 만든다[1]
명세에 따라 어떤 원인 조합은 실제로 일어날 수 없다. 이런 조합을 테스트케이스로 만들지 않도록 그래프에 제약 기호를 단다.
| 기호 | 이름 | 적용 대상 | 뜻 |
|---|---|---|---|
| E | 배타(Exclusive) | 원인 사이 | 표시한 원인들 가운데 많아야 하나만 참이다 |
| I | 포함(Inclusive) | 원인 사이 | 표시한 원인들 가운데 적어도 하나는 참이다 |
| O | 오직 하나(One and only one) | 원인 사이 | 표시한 원인들 가운데 정확히 하나만 참이다 |
| R | 요구(Requires) | 원인 사이 | 원인 a 가 참이면 원인 b 도 반드시 참이다 |
| M | 마스크(Mask) | 결과 사이 | 결과 a 가 참이면 결과 b 는 거짓이 되도록 강제한다 |
배타·포함·오직 하나·요구는 원인에 거는 제약이고, 마스크만 결과에 거는 제약이다. 그래서 "원인 사이의 제약"을 묻는다면 마스크는 해당하지 않는다.[1]
- 장점 - 조건 조합을 빠짐없이 검토하게 하고, 그 과정에서 명세의 모순·누락이 드러난다. 결정 테이블이라는 중간 산출물이 남아 검토하기 쉽다
- 단점 - 원인 수가 늘면 그래프와 테이블이 빠르게 커진다. 원인을 잘게 나누거나 페어와이즈 테스트 같은 조합 축소 기법과 함께 쓴다
| 기법 | 다루는 것 | 원인-결과 그래프와 다른 점 |
|---|---|---|
| 원인-결과 그래프 | 조건 조합과 결과의 논리 관계 | 그래프와 제약 기호로 관계를 먼저 모델링한다 |
| 결정 테이블 테스트 | 조건 조합과 동작의 표 | 그래프 없이 곧바로 표를 만든다. 원인-결과 그래프의 결과물이 결정 테이블이다 |
| 동치 분할 테스트 | 입력 값의 구간 | 입력을 하나씩 본다. 조합은 다루지 않는다 |
| 페어와이즈 테스트 | 매개변수 값 쌍 | 조합의 수를 줄이는 데 초점이 있고, 논리 관계는 따지지 않는다 |
- ↑ 1.0 1.1 1.2 Glenford J. Myers, Corey Sandler, Tom Badgett, 『The Art of Software Testing』 3판, Wiley, 2011, 4장 Test-Case Design(Cause-Effect Graphing).
- ↑ 「ISO/IEC/IEEE 29119-4:2021 Software and systems engineering - Software testing - Part 4: Test techniques」, ISO, https://www.iso.org/standard/79430.html, 확인일: 2026-11-04.