일반적으로 가장 평범한 소프트웨어 응용프로그램을 제외하고 소프트웨어 시스템에서 논리적으로 실현 가능한 입력 조합을 모두 테스트하는 것은 불가능합니다. 따라서 대부분의 오류를 찾을 가능성이 가장 높은 적당한
서브세트를 선택하는 것이 바람직하며 이 선택 작업은 테스터가 수행할 중요한 타스크이기도 합니다.
등가 클래스 분석(동의어: 등가 파티션, 도메인 분석)에 기반한 테스트는 잠재적인 총 테스트 수를 가능한 많은 오류를 다루는 최소의 테스트 세트로 줄이려는 블랙 박스 테스트 분석의
양식입니다[MYE79]. 입력 및 출력 세트를 제한된 수의 등가
클래스로 파티션하는 방법입니다. 이 방법으로 각 클래스에서 대표 테스트 값을 선택할 수 있습니다. 클래스의 대표 값을 표시하는 테스트는 동일한 클래스의 기타 값과 "등가"라고 말할 수 있습니다. 대표
값 테스트에서 오류가 발견되지 않으면 모든 기타 "등가"의 값에서도 오류를 식별하지 않습니다.
등가 클래스의 능력은 샘플링 전략을 사용하도록 테스터를 안내하여 잠재적으로 필요한 테스트의 조합 급증을 줄이는 기능에 기반합니다. 이 기법은 가능한 총 테스트 수의 서브세트를 선택할 수 있는 논리적 기반을
제공합니다. 다음은 많은 테스트에서 등가 클래스의 고려사항에서 이점이 될 수 있는 일부 문제점 카테고리 영역입니다.
-
독립 변수의 조합
-
계층 구조 관계에 기반한 종속 변수
-
임시 관계에 기반한 종속 변수
-
시장 모형에 기반한 클러스터 관계
-
모델링할 수 있는 복잡한 관계
등가 파티션 테스트에서 사용할 수 있는 다양한 전략 및 기법이 있습니다. 다음은 몇 가지 예제입니다.
Glenford Myers가 제안한 등가 파티션 이론[MYE79]에서는 입력
조건을 제한된 등가 클래스 수로 파티션하여 필요한 총 테스트 케이스 수를 줄이려고 합니다. 등가 클래스는 두 가지 유형으로 분류됩니다. 프로그램에 대한 올바른 입력 세트는 올바른 등가 클래스로 간주되고
기타 모든 입력은 올바르지 않은 등가 클래스에 포함됩니다.
다음은 등가 클래스를 식별하는 가이드라인 세트입니다.
-
입력 조건에서 값의 범위를 지정하는 경우(예: 프로그램에서 "10 - 100 사이의 값 허용") 올바른 하나의 등가 클래스(10 - 100) 및 두 개의 올바르지 않은 등가 클래스(10 미만 및 100
초과)가 식별됩니다.
-
입력 조건에서 값 세트를 지정한 경우(예: "빨강, 흰색, 검은색, 초록색, 갈색과 같이 다양한 옷의 색상") 하나의 올바른 등가 클래스(올바른 값) 및 하나의 올바르지 않은 등가 클래스(기타 올바르지 않은
모든 값)가 식별됩니다. 올바른 등가 클래스의 모든 값은 엄격히 처리되어야 합니다.
-
입력 조건을 "필수" 상황으로 지정하는 경우(예: "입력 문자열은 대문자여야 함") 하나의 올바른 등가 클래스(대문자) 및 하나의 올바르지 않은 등가 클래스(대문자를 제외한 기타 모든 입력)가 식별됩니다.
-
타스크를 완료하기 "오래" 전에 모든 사항을 완료한 경우 등가 클래스입니다. 프로그램을 완료하기 전에 짧은 간격을 두고 모든 사항을 완료한 경우 다른 클래스입니다. 프로그램에서 다른 오퍼레이션을 시작하기
방금 전에 모든 사항을 완료한 경우 다른 클래스입니다.
-
프로그램을 64M - 256M 사이의 메모리 크기에서 사용하도록 지정한 경우. 이 크기 범위는 등가 클래스입니다. 기타 메모리 크기(256M 초과 또는 64M 미만)도 허용 가능합니다.
-
출력 이벤트의 파티션은 프로그램 입력에 놓여 있습니다. 다른 입력 등가 클래스에 동일한 유형의 출력 이벤트가 있을 수 있지만 분명히 입력 등가 클래스를 처리해야 합니다.
각 등가 클래스에서 결과로 나타나는 실패를 식별하는 경우 경계 조건이 비경계 조건보다 성공률이 더 높은 것으로 간주됩니다. 경계 조건은 각 등가 클래스의 경계나 "가장자리"보다 바로 크거나 작은 값입니다.
경계 조건을 표시하는 테스트에서는 테스트해야 하는 범위의 최소값(min), 최소 바로 위의 값(min+), 최대 바로 아래의 값(max-) 및 최대값(max)을 사용합니다. 경계 값을 테스트하는 경우 테스터는 각
등가 클래스에서 소수의 테스트 케이스를 선택합니다. 비교적 작은 테스트 샘플의 경우 실패 발견 가능성이 높습니다. 테스터는 테스트 결과에서 큰 차이가 나타나지 않을 것 같은 등가 클래스의 값에서 대규모 모집단을
테스트하는 부담에서 조금 벗어납니다.
다음은 경계 값을 선택하는 경우 일부 권장사항입니다.
-
floating 변수에서 올바른 조건이
-1.0 - 1.0 인 경우 -1.0 , 1.0 ,
-1.001 및 1.001 을 테스트하십시오.
-
정수에서 올바른 입력 범위가
10 - 100 인 경우 9 , 10 , 100 ,
101 을 테스트하십시오.
-
프로그램에서 대문자를 예상하는 경우 A - Z 경계를 테스트하십시오.
@ 및 [ 도 테스트하십시오. ASCII 코드에서 @ 은 A 바로 아래
값이며 [ 는 Z 바로 위의 값입니다.
-
프로그램의 입력 또는 출력이 정렬된 세트인 경우 세트의 첫 번째 및 최종 요소에 주의하십시오.
-
입력의 합계가 특정 숫자(
n )인 경우 합계가 n-1 , n 또는 n+1 인 프로그램을 테스트하십시오.
-
프로그램에서 목록을 허용하는 경우 목록의 값을 테스트하십시오. 기타 모든 값은 올바르지 않습니다.
-
파일에서 읽거나 파일에 쓰는 경우 파일의 첫 번째 및 최종 문자를 확인하십시오.
-
화폐의 가장 작은 단위는 1센트 또는 이와 동등한 단위입니다. 프로그램에서 특정 범위를 허용하는 경우(a - b) a
-0.01 및 b +0.01 을
테스트하십시오.
-
범위가 다양한 변수에서 각 범위는 등가 클래스입니다. 하위 범위가 겹치지 않는 경우 경계 값, 상한 값 위의 값 및 하한 값 아래의 값을 테스트하십시오.
이전에 두 개의 경계 분석 전략을 시도한 후 숙력된 테스터는 "특수 값"의 경우를 발견하도록 프로그램 입력을 관찰합니다. 이 값은 소프트웨어 장애를 발견하는 데 풍부한 소스가 될 수 있습니다. 다음은 몇 가지
예제입니다.
-
정수 유형에서 0이 올바른 등가 클래스에 포함된 경우 항상 0을 테스트해야 합니다.
-
시간(시, 분, 초)을 테스트하는 경우 입력 변수 제한조건에 상관없이 항상 각 필드의 상한 및 하한 값으로 59 및 0을 테스트해야 합니다. 따라서 입력의 경계 값을 제외하고 -1, 0, 59 및 60은
항상 테스트 케이스에 해당합니다.
-
날짜(연, 월, 일)를 테스트하는 경우 여러 테스트 케이스(특정 월의 일 수, 윤년 2월의 일 수, 평년의 일 수)가 관련이 있습니다.
Ostrand와 Balcer[16]는 테스터가 시스템 스펙을 분석하고 테스트 스크립트를 작성하며 관리하는 데 도움이 되는 파티션 방법을 개발했습니다. 대부분
코드에 초점을 둔 공통 전략과는 달리, 이 방법은 스펙 및 디자인 정보에도 기반을 두고 있습니다.
이 방법의 주된 이점은 코드를 작성하기 전에 오류를 발견하는 기능입니다. 입력 소스가 스펙이고 테스트를 통해 해당 스펙을 분석하기 때문입니다. 스펙의 결함은 초기에, 종종 코드에 구현하기 전에도 발견됩니다.
다음은 "카테고리-파티션" 방법에 대한 전략입니다.
-
스펙 분석: 시스템 기능을 여러 함수 단위로 분해합니다. 그러면 스펙 및 구현에 따라 독립적으로 테스트할 수 있습니다.
이 경우,
-
함수 실행에 영향을 주는 환경 조건 및 매개변수를 식별하십시오. 매개변수는 함수 단위의 입력에 해당합니다. 환경 조건은 시스템 상태로, 함수 단위 실행에 영향을 줍니다.
-
환경 조건 및 매개변수의 특성을 식별하십시오.
-
특성을 카테고리로 분류하십시오. 시스템 동작에 영향을 줍니다.
모호하고 모순되며 누락된 동작 설명은 이 단계에서 발견됩니다.
-
카테고리를 선택사항으로 파티션하십시오. 이때 선택사항은 예상하지 못했지만 발생할 수 있는 서로 다른 다양한 상황입니다. 이 선택사항은 카테고리에서 동일한 정보 유형을 표시합니다.
-
선택사항 가운데서 제한조건 및 관계를 판별하십시오. 서로 다른 카테고리의 선택사항은 서로에게 영향을 주며, 테스트 스위트를 빌드하는 경우에도 영향을 줍니다. 서로 다른 매개변수 및 환경의 선택사항 사이에서
모순을 제거하기 위해 제한조건을 추가합니다.
-
카테고리, 선택사항 및 제한조건 정보에 따라 테스트 케이스를 디자인하십시오. 선택사항으로 오류가 발생하면 테스트 케이스를 작성할 때 해당 선택사항을 다른 선택사항과 결합하지 마십시오. 선택사항이 단일
테스트에서 "적절히" 테스트되며 특수 값 또는 선택사항의 대표에 해당합니다.
-
Glenford J. Myers, The Art of Software Testing, John Wiley & Sons, Inc., New York, 1979.
-
White L. J. and Cohen E. I., A domain strategy for computer program testing, IEEE Transaction on Software
Engineering, Vol. SE-6, No. 3, 1980.
-
Lori A. Clarke, Johnhette Hassell, and Debra J Richardson, A Close Look at Domain Testing, IEEE Transaction on
Software Engineering, 8-4, 1992.
-
Steven J. Zeil, Faten H. Afifi and Lee J. White, Detection of Linear Detection via Domain Testing, ACM Transaction
on Software Engineering and Methodology, 1-4, 1992.
-
BingHiang Jeng, Elaine J. Weyuker, A Simplified Domain-Testing Strategy, ACM Transaction on Software Engineering
and Methodology, 3-3, 1994.
-
Paul C. Jorgensen, Software Testing - A Craftsman's Approach, CRC Press LLC, 1995.
-
Martin R. Woodward and Zuhoor A. Al-khanjari, Testability, fault, and the domain-to-range ratio: An eternal
triangle, ACM Press New York, NY, 2000.
-
Dick Hamlet, On subdomains: Testing, profiles, and components, SIGSOFT: ACM Special Interest Group on Software
Engineering, 71-16, 2000.
-
Cem Kaner, James Bach, and Bret Pettichord, Lessons learned in Software Testing, John Wiley & Sons, Inc., New
York, 2002.
-
Andy Podgurski and Charles Yang, Partition Testing, Stratified Sampling, and Cluster Analysis, SIGSOFT: ACM Special
Interest Group on Software Engineering, 18-5, 1993.
-
Debra J. Richardson and Lori A. Clarke, A partition analysis method to increase program reliability, SIGSOFT: ACM
Special Interest Group on Software Engineering, 1981.
-
Lori A. Clarke, Johnette Hassell, and Debra J Richardson, A system to generate test data and symbolically execute
programs, IEEE Transaction on Software Engineering, SE-2, 1976.
-
Boris Beizer, Black-Box Testing - Techniques for Functional testing of Software and System, John Wiley & Sons,
Inc., 1995.
-
Steven J. Zeil, Faten H. Afifi and Lee J. White, Testing for Liner Errors in Nonlinear computer programs, ACM
Transaction on Software Engineering and Methodology, 1-4, 1992.
-
William E. Howden, Functional Program Testing, IEEE Transactions on Software Engineering, Vol. SE-6, No. 2, 1980.
-
Thomas J. Ostrand and Marc J. Balcer, The Category-Partition method
for specifying and generating functional tests, Communications of ACM 31, 1988.
-
Cem Kaner, Jack Falk and Hung Quoc Nguyen, Testing Computer Software, John Wiley & Sons, Inc., 1999.
|