동등분할(등가분할)기법에 대한 몇 가지 단상

2009. 12. 7. 18:00QA


렉스 블랙이 쓴 책에서 동등분할(혹은 등가분할)에 관한 부분을 읽으면서 느낀 몇 가지를 적어보면 다음과 같다. 이 양반이 글은 좀 어렵게 쓰는 경향이 있지만 그래도 경력이 경력인지라 생각할 거리를 꽤 많이 던져준다.

1.     명세 기반 테스트는 요구사항에 기반하고 있다(Specification-based tests are requirement-based).

: 명세 기반 기법, 그리고 블랙박스 기법 중의 대표적인 기법이 동등분할이다 보니 그 얘기하면서 다시 리뉴얼해주는 부분임. 명세는 요구사항을 반영하고 있어야 한다. 당연한 이야기.

2.    등가분할을 통해 나누어진 각 클래스 간에는 교집합 영역이 없어야 한다.

: 등가분할은 동일한 메타 태그 아래 동일한 성격을 가지는 데이터(무엇에 관한 것이라도 상관없다)로 분류되는 것이다. 나누어진 각 데이터 집합 간에는 서로 겹치는 값이 있어서는 안 된다. 동등분할로 나뉘어진 입력 데이터 값에서 임의의 한 값을 취했을 때, 2개 이상의 클래스에 속한다면 그것은 데이터를 잘못 분할한 것이다.

3.    등가분할의 값들은 서로 독립적이어야 한다(종속적이라면 수행할 수 없다)

: 예를 들어, OS 항목과 일반 애플리케이션 항목을 등가분할 한다고 가정해보자. OS를 크게 MAC과 윈도로 나누었다. 애플리케이션은 A, B, C로 나누었는데, 이중 C MAC에서만 돌아가고 윈도에서는 돌아가지 않는 애플리케이션이라고 가정해보자. 이럴 경우 일반 애플리케이션 항목의 값이 OS 값에 따라 Valid가 결정되므로 등가분할을 사용할 수 없다 

4.     유효하지 않은 값들도 테스트해서 예외 처리되어야 하는지를 확인해야 한다.

: 개인적으로 등가분할 기법에서 가장 중요한 부분 중의 하나라고 생각한다. 등가분할의 본래 목적은 등가분할되는 데이터 입력값들의 유효한 출력값을 검증하는 것과 함께, 유효하지 않은 입력값이 앞서 검증된 유효한 입력값의 유효한 출력값과 동일한 출력값을 내는지 검증하는 것도 포함된다.

5.    등가분할을 사용해도 동등한 값이 나와야 하는 결과도 있고, 다른 결과가 나와야 하는데 동등한 결과가 나올 때도 있다.

: 등가분할을 사용한다고 하더라도 다른 속성의 결과값은 동일할 수 있다. 즉, 서로 다른 동등분할 클래스의 입력값을 사용한다고 하더라도, 다른 속성은 동일한 출력값을 낼 수 있다는 것이다. 예를 들어, 노인과 청소년으로 분류하는 것(나이에 따른 동등분할)은 정상이나 실행속도(애플리케이션의 속도, 즉 다른 속성)에는 차이가 없어야 한다. 이와 함께 데이터 입력 이후 출력값을 내는 과정에서 작용하는 환경 변수나 기타 프로세스 역시 고려해야 하는 대상이다. 예를 들어, 청소년으로 분류되었지만 (필터링과 같은 환경 변수를 조작해서) 노인이 들어갈 수 있는 성인 사이트로 들어갈 수도 있다.