제목: 동등 클래스 분할(Equivalence Class Partitioning)
저자: Dr. A. Williams
문서유형: 강의 노트, 2008년
동등 클래스 분할 기법의 기본 개념을 간단한 예를 들어 소개한 자료
동등 클래스 분할 예
아래와 같은 정수의 절대값을 계산하는 함수를 구현하고 테스트 한다고 가정했을 때
- 완전한 테스팅(Exhaustive testing)은 int 타입의 모든 가능한 값들을 테스팅하는걸 요구하지만, 이는 현실적으로 불가능하며 버그 발견 측면에서 효과적이지도 않음. 대신 입력 값들의 유사성을 기반으로 하여 입력 도메인을 동등 클래스들로 분할할 수 있음
- 동등 클래스(equivalence class)는 테스트 대상 프로그램이 유사한 반응을 보일 것으로 예상되는 입력 도메인 값들의 집합을 의미함. 예를 들어, 절대값 함수의 입력 데이터 -36과 -37은 동일한 동등 클래스에 속하게 되는 반면, -36과 +37은 다르게 반응하므로 다른 클래스로 분할됨
위 절대값 함수의 동등 클래스 집합이 아래와 같이 표현될 수 있다.
① 음수값 클래스: 결과값이 입력값의 부정이어야 함
② 양수값 클래스: 결과값이 입력값과 동일해야 함
③ Zero 클래스: 다른 정수 값들과 다른 속성을 가진 0를 별개 클래스로 구분함
테스트 값 선택하기
동등 클래스로부터 테스트 값을 선택하는데 있어서 아래를 포함한 다양한 전략을 가질 수 있다.
- 동등 클래스의 대표적인 값들을 선택함
- 경계상에 있는 모든 값들을 선택함
- 경계로부터 한 뼘 떨어져 있는(“one off” from a boundary) 모든 값들을 선택함
예를 들어, 각 동등 클래스로부터 대표적인 값 하나 만을 선택하기로 한 경우(즉, 해당 클래스에 속하는 어떤 값이든 모두 동일하게 취급됨), 아래와 같이 테스트 값을 선택할 수 있다.
또는 일부 경계값을 추가하여 아래와 같이 테스트 데이터를 선택할 수도 있다.
유효 클래스(Valid Class)와 무효 클래스(Invalid Class) 예
- 명세서가 입력 조건(input conditions)을 포함한 경우, 이를 동등 클래스를 식별하는데 사용할 수 있음. 입력 조건이 어떤
값들의 범위(a range of values)를 기술하고 있다면, 아래의
세 개 클래스가 도출될 수 있음
- 범위 내: 유효한 입력값 동등 클래스
- 너무 큼: 유효하지 않은 입력값 동등 클래스
- 너무 작음: 유효하지 않은 입력값 동등 클래스 - 입력 조건이 어떤 열거값들의 집합을 명세하고 있다면(예, “차”, “트력”, 등등) 각 열거 값에 상응하는 유효한 동등 클래스를 하나씩 생성하고, 열거값 집합에 들어가지 않는 다른 모든 값들을 위한 하나의 무효 클래스를 도출함
입력 조건 |
유효 동등 클래스 |
무효 동등 클래스 |
1과 10 사이의 정수 |
V1: [1,10] |
I1: [-¥,0] I2: [11,+¥] I3: [non-integer] |
X, Y, 또는 Z 중의 하나 |
V1: [X] V2: [Y] V3: [Z] |
I1: [not X, Y, or Z] |
동등 분할 생성 시 아래의 조건들을 처리하는 것도 고려한다.
- Default: 값이 주어지지 않음, 어떤 값이 대신 사용될 것으로 가정됨
- Empty: 값이 존재하지만 콘텐츠가 없음 예, 비어 있는 스트링 ″″
- Blank: 값이 존재하고 콘텐츠가 있음 예, 스페이스 문자 ″ ″를 포함하는 스트링
- Null: 값이 존재하지 않거나 또는 할당되지 않음 예, 생성되지 않은 오브젝트
- Zero: 수치 값 0
- None: 예, 리스트에서 선택을 하도록 되어 있는 경우 어떤 선택도 하지 않음
'테스트케이스설계기법별 > 명세 기반' 카테고리의 다른 글
문서요약 - 의사결정표 테스팅 by Hassan (1) | 2020.03.09 |
---|---|
영상자료 - 유한 상태 기계 테스팅 by Udacity (0) | 2020.03.05 |
상태 전이 테스팅 기법 (0) | 2020.03.02 |
영상자료 - 분류 트리 방법의 이론과 TESSY 툴 by Hitex (0) | 2020.02.27 |
페이퍼요약정리 – 분류 트리를 이용한 테스트 케이스 설계 by Grochtmann (0) | 2020.02.24 |