용어집 · 테스트 설계
동등 분할
영어: Equivalence partitioning
다른 이름: 동치 분할, 동등 클래스 분할, 동등 분할 테스트, equivalence class partitioning
정의
시스템이 똑같이 처리해야 하는 입력을 그룹으로 나누고, 각 그룹에서 대표값 하나씩만 테스트하는 테스트 설계 기법입니다.
동등 분할(Equivalence partitioning, 동등 클래스 분할이라고도 함)은 가능한 입력을, 모든 값이 같은 동작을 내야 하는 파티션으로 나눕니다. 파티션 안의 한 값이 동작하면 나머지도 동작한다고 가정하고, 한 값이 실패하면 나머지도 같은 방식으로 실패할 가능성이 높다고 봅니다. 그래서 가능한 모든 값 대신 파티션마다 대표값 하나만 테스트합니다.
예시: 18세에서 60세까지 허용
폼이 18세 이상 60세 이하의 정수 나이를 허용합니다.
| 파티션 | 유효 여부 | 대표값 | 기대 결과 |
|---|---|---|---|
| 18 미만 | 무효 | 10 | 거부: “18세 이상이어야 합니다” |
| 18~60 | 유효 | 35 | 허용 |
| 60 초과 | 무효 | 75 | 거부 |
| 숫자가 아님 | 무효 | abc |
거부: “숫자를 입력하세요” |
| 빈 값 | 무효 | (공란) | 거부: “나이는 필수입니다” |
| 소수 | 무효 | 25.5 | 거부 |
| 음수 | 무효 | -5 | 거부 |
테스트 7개가 개념적으로 전체 입력 공간을 커버합니다. 이어서 경계값 분석이 결함이 가장 많이 숨어 있는 숫자 파티션의 가장자리 17, 18, 60, 61을 추가합니다. 두 기법은 거의 항상 함께 쓰입니다.
출력과 다른 입력의 분할
파티션은 숫자에만 국한되지 않습니다.
- 카테고리: 배송 국가 필드는 국내, EU, 기타 국가, 금수 조치 국가로 나뉘며 각각 규칙이 다를 수 있습니다.
- 출력: 세금 계산기에 세율 구간이 세 개 있다면, 각 구간에 해당하는 입력을 고르세요.
- 형식: 이메일 주소는 유효,
@누락, 도메인 누락, 너무 긴 값으로 나뉩니다.
무효 파티션은 하나씩 테스트하기
폼에 필드가 여러 개 있으면 유효 파티션은 자유롭게 조합해도 되지만, 무효 파티션은 다른 필드를 모두 유효하게 두고 하나씩 따로 테스트하세요. 잘못된 나이와 잘못된 이메일을 함께 제출하면 첫 번째 검증 오류가 두 번째를 가릴 수 있어서, 두 검사가 모두 동작하는지 알 수 없습니다.
흔한 실수
- 잘못된 파티션. 파티션은 명세와 시스템의 실제 동작에서 나옵니다. 코드가 18~25세를 다르게 처리한다면(예: 보험료가 다름), 폼이 모두 허용하더라도 별도의 파티션입니다.
- 유효 파티션만 테스트하기. 입력 처리 결함의 대부분은 무효 파티션에 있습니다.
- 파티션에서 멈추기. 파티션당 값 하나로는 경계의 off-by-one 오류를 잡지 못합니다. 경계값을 추가하세요.