반응형

제목: 동등 클래스 분할(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: , 리스트에서 선택을 하도록 되어 있는 경우 어떤 선택도 하지 않음



반응형

+ Recent posts