1. 명세 기반 테스트
- 블랙 박스 테스트 케이스 설계
- 프로그램 코드의 정보를 이용하지 않고 또는 이용할 수 없을 때 테스트 케이스를 설계하는 방법
- 코드 정보 이외의 명세 정보나 시스템 인터페이스 정보 등을 이용하여 테스트 케이스를 설계하는 방법
- 기능 누락 오류 검출
- Equivalence Partitioning(동등 분할)과 Bounadary Value Analysis(경계값 분석)
2. 동등 클래스 분할(ECP)
- 테스트의 기본
- 프로그램의 입력/출력 영역을 몇 개의 동등 클래스(equivalent class)라 불리는 영역으로 분할하여 각 클래스로부터 대표 값을 선택하여 테스트 케이스로 이용
- 동등 클래스는 시스템에 의해 동일하게 처리되고 같은 출력 결과를 생산하는 입력 조건 또는 입력 데이터 값들의 모임
- 각 동등 클래스로부터 선정된 입력 값에 의하여 오류가 발견되면 클래스에 속한 다른 값들에 의해서도 동일한 오류가 발견
- 만약 각 동등 클래스로부터 선정된 입력 값에 의하여 오류가 발견되지 못한다면 클래스에 속한 다른 값들에 의해서도 오류가 발견되지 않아야 함
동등 클래스 분할 규칙
동등 분할 테스팅에서는 테스트 케이스를 설계하기 위하여 입력이나 출력 영역을 유효한 영역과 유효하지 않은 영역으로 분할
-
유효한 입력
테스트 아이템이 정상적으로 받아들여 처리하는 입력이다. 예를 들어 명세에 20에서 50까지 범위에 대해 정상적인 처리를 한다면 유효한 입력 영역은 20<=입력<=50이다.
-
유효하지 않은 입력
유효하지 않은 입력은 테스트 아이템이 정상적으로 처리하지 않은 입력이다 .테스트 아이템은 유효하지 않은 입력에 대해서는 적절한 오류 메시지를 출력할 수 있다. 예를 들어 명세에 20에서 50까지 범위에 대해 정상적인 처리를 한다면 유효하지 않은 입력 영역은 입력>20과 입력<50이다.
-
유효한 출력
명세에 기술된 출력이다. 예를 들어 성적 관리 시스템에서 점수에서 따라 'A', 'B', 'C', 'D', 'F' 및 유효하지 않은 점수에 대해 "다시 입력"이라는 메시지를 출력한다면 유효한 출력은 'A', 'B', 'C', 'D', 'F', "다시 입력"이다.
-
유효하지 않은 출력
- 명세에 기술되지 않은 출력이다. 예를 들어 성적 관리 시스템에서 점수에서 따라 'A', 'B', 'C', 'D', 'F' 및 유효하지 않은 점수에 대해 "다시 입력"이라는 메시지를 출력한다면 유효하지 않은 출력은 'A', 'B', 'C', 'D', 'F', "다시 입력"에 속하지 않는 어떠한 값도 유효하지 않은 출력이 될 수 있다. 예를 들어 'A+'나 'E'는 유효하지 않은 출력이다.
- 유효하지 않은 출력으로 테스트 케이스를 유도할 때 테스터의 경험이나 직관에 의존되는 경우가 많으므로 오류 추정 기법 등을 사용하여 테스트 케이스를 설계할 수 있다.
ISO/IEC/IEEE 29119
One-to-One 동등 분할
- 각 입력/출력 분할로부터 하나의 테스트 케이스를 유도
- 입력/출력 영역을 분할한 클래스들과 테스트 케이스 간 일대일 관계를 명시적으로 보여줌
- 분할된 영역에 대해서 하나의 테스트 케이스를 만드므로 분할된 영역의 개수만큼 테스트 케이스가 유도됨
최소화 동등 분할
- 하나의 테스트 케이스와 하나의 분할된 클래스를 명시적으로 연결한 One-to-One 동등 분할과는 달리 이 방법은 하나의 테스트 케이스에 가능한 많은 분할들을 포함되도록 함
- 테스트 케이스 하나에 여러 개의 분할된 영역을 다 채우도록 함
- 테스트 케이스의 수가 줄어듬
- 입력 모두가 유효하지 않은 입력 값들을 가진 테스트 케이스는 가급적 피해야 함
-> 오류가 발생할 수 있는 경우가 마스킹되어 검출하지 못하게 입력 하나만 유효하지 않은 값, 나머지는 유효한 값으로 구성해야 함
3. 경계 값 분석(Boundary Value Analysis)
- 소프트웨어 오류는 보통 입출력 영역의 경계에서 발생하는 경향이 있다.
- 경계 값 분석(테스트)는 입출력 영역의 경계 근처에 있는 값들을 이용하여 테스트 케이스를 설계하는 테스팅 방법
- 동등 분할과 마찬가지로 입/출력 영역을 여러 클래스들로 분할한다. 그러나 동등 분할이 입력이나 출력을 여러 클래스들로 분할하고 각 클래스로부터 임의의 값을 선정하는 것과는 달리 경계값 분석은 클래스의 경계와 경계 근처에 있는 값들을 사용하여 테스트 케이스를 설계함
도메인 에러
- 오류는 도메인 에러(domain error)와 계산 에러(computation error)로 구분할 수 있음
- 도메인 에러는 입력이 실행해야 하는 경로가 아닌 다른 잘못된 경로를 실행
- 계산 에러는 올바른 경로를 실행하지만 잘못된 계산(로직)을 실행
- BVA를 포함한 도메인 테스트는 도메인 에러를 검출하는 데 효과적
ISO/IEC/IEEE 29119
- 세 기관이 만든 국제 소프트웨어 테스팅 표준 기준
- 테스트 케이스를 구성할 때 동등 분할 테스팅과 같이 식별된 경계 값에 대해 하나의 테스트 케이스를 구성하는 일대일 방식이나 하나의 테스트 케이스에 여러 개의 경계 값을 포함하는 최소화 방식을 사용할 수 있음
- 2-value BVA
경계 값과 경계 외부에 있는 경계와 가장 가까운 값을 선정
- 3-value BVA
경계 값과 경계 내부와 경계 외부에서 경계와 가장 가까운 값을 선정