-
조합테스트기법 - 모든 단일 값 찾기Object & Test 2010. 12. 7. 23:24어떤 메소드나 프로시져를 테스트한다고 가정해 보겠습니다. 테스트 하려는 메소드는 여러 개의 파라미터를 갖고 각 파라미터는 또 여러 종류의 값을 취할 수 있습니다. 예를 들어 메소드가 3개의 파라미터를 갖고 각 파라미터는 10가지 경우를 갖는 다면, 파라미터가 조합될 수 있는 경우의 수는 10 X 10 X 10 이 되므로 총 1,000가지 경우가 됩니다.
(이미지출처)
이제 테스트를 작성하려고 합니다. 1,000가지의 경우에 대한 테스트 코드를 모두 작성해야 할까요? 아마도 다들 고개를 저으실 겁니다. 모든 경우를 다 테스트하려 한다면 큰 비용이 들기 때문입니다. 또한, 비용 대비 효과도 그닥 장담할 수 없습니다.
이런 다양한 조합을 테스트할 수 있는 좋은 방법이 있을까요? 먼저 소개해 드릴 방법은 “모든 단일 값 찾기” 입니다.
이 방법을 수행하기 위해서는 영역 분할 및 대표 값을 먼저 찾아야 합니다. 먼저 각 변수가 가질 수 있는 값들의 분포를 잘 살펴보고 각 변수를 대표할 수 있는 값들을 찾습니다. 위와 같은 경우 각 변수의 대표 값을 3개 정도로 한정하여 영역을 좁힌다면, 3 X 3 X 3 개의 경우로 조합이 줄어들어 총 27개의 조합이 됩니다. 하지만 여전히 테스트하기에는 많다고 느껴집니다. 이를 더 줄이기 위해 모든 단일 값 찾기를 적용합니다. 단일 값 찾기는 각 변수들이 겹치지 않고 유일한 조합을 갖도록 만드는 과정입니다.
각 변수 마다 3개의 대표 값을 갖는다면 다음과 같이 총 3개의 단일 값 조합을 찾아 낼 수 있습니다.
변수1변수2변수3case 1 A I V case 2 B J W case 3 C K X
이 방법은 조합의 경우를 테스터가 관리할 수 있는 수준으로 줄이기 위해 사용하는 방법입니다. 대표 값을 찾고 이를 단일 값을 갖도록 조합함으로써 무작위적인 변수의 조합 보다는 더 근사적인 방법으로 테스트를 작성할 수 있게 됩니다. 하지만 기계적인 방법을 통해 조합을 찾아 내기 때문에 중요한 변수의 조합을 놓칠 수 있습니다. 만약, 명확히 알고 있는 변수의 조합이 있다면 그걸 우선적으로 테스트 해야 합니다.
'Object & Test' 카테고리의 다른 글
디버그 코드를 SVN에 체크인하지 마세요. (0) 2011.07.22 단위 테스트용 테스트 데이터베이스 싱크하기 (2) 2011.07.07 Mock Object 탄생 비화(1) (0) 2011.06.27 올바른 단위테스트 검증 로직 작성법 (0) 2010.12.06 올바른 단위 테스트 작성법 (0) 2010.12.03