구조 기반 테스트(화이트박스 테스트)
프로그램 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스를 설계
즉 내부 구조 정보를 기반으로 테스트 케이스를 설계
=> 모든 프로그램 경로를 실행하는 것은 현실적으로 불가능 => 일부 경로만 테스트
문장 테스트
- 실행 가능한 모든 문장을 최소 한 번은 실행을 목표
- 문장 커버리지(%) = (테스트 케이스 집합에 의해 실행된 문장의 수 / 전체 가능한 문장의 수) x 100
결정(분기) 테스트
- 프로그램상에 나타난 모든 결정문의 결과가 참인 경우와 거짓이 되는 경우를 최소 한 번 실행
- 결정문은 제어 흐름 그래프에서 결정 노드 하나를 의미
- 결정 커버리지(%) = (테스트 케이스 집합에 의해 실행된 결정문의 수 / 전체 가능한 결정문의 수) x 100
- 엄밀히 말해 프로그램에 k=(x>10)&&(y<3) 과 같은 코드가 있을 때 결정 테스트와 분기 테스트는 달리 정의
- 결정 테스트는 모든 Boolean이 나오도록 해야 하고 분기 테스트는 제어 흐름 그래프에서 하나의 블럭일 뿐이므로 k가 어떤 값을 가지든 상관 없음
조건 테스트
- 조건은 논리연산자(and, or)를 포함하지 않은 Boolean 식을 의미
- 더 이상 분할될 수 없는 조건
- 조건 커버리지(%) = (테스트 케이스 집합에 의해 실행된 조건 수 / 전체 가능한 조건 수) x 100
- 조건 테스트와 결정 테스트는 포용하지 않는다
- 문장 테스트는 결정 테스트와 조건 테스트에 포용된다
- 단축연산이 이루어지는 경우 논리 연산자로 연결된 뒤의 조건이 실행되는지 주의해야 한다
결정/조건 테스트
- 결정테스트와 조건테스트를 모두 만족하는 테스트 케이스 설계
- 결정/조건 커비리지 = (테스트 케이스 집합에 의해 실행된 결정문과 조건 수 / 전체 결정문과 조건 수) x 100
다중조건 테스트
- 결정을 구성하는 기본 조건들이 가질 수 있는 모든 가능한 조합까지 최소 한번 수행
- 즉 조건들의 모든 가능한 조합을 테스트
- 만약 조건이 두가지이면 각 조건이 true이고 false인 경우 두가지가 나올수 있으니 모든 경우는 2x2 = 4가지
- 결정은 따로 더해준다(조건이 두개인 결정문과 조건이 하나인 결정문의 전체 조건 경우 = 4+2 = 6)
- 다중조건 커버리지 = (테스트 케이스 집합에 의해 실행된 조건 조합 수 / 전체 조건 조합 수) x 100
- 문장, 결정, 조건, 조건/결정 테스트를 포용
MCDC(변형된 조건 테스트)
- 결정을 구성하는 각 조건이 독립적으로 결정에 영향을 미치는지를 확인
- 테스트 데이터 수 = (조건의 수 + 1)
- ((A && B) || C) 결정문에 각 조건 A,B,C가 있다고 가정
- A를 독립적으로 확인 => A,B,C,결과 => (T,T,F,T), (F,T,F,F)
- B를 독립적으로 확인 => A,B,C,결과 => (T,T,F,T), (T,F,F,F)
- C를 독립적으로 확인 => A,B,C,결과 => (T,F,T,T), (T,F,F,F)
- 이전의 모든 테스트를 포용
명세 기반 테스트(블랙박스 테스트)
- 컴포넌트, 통합, 시스템, 인수 테스트 전 과정에 걸쳐 사용
- 규모가 큰 단위에도 효과적
- 코드가 없어도 요구사항을 바탕으로 수행 가능 => 코드가 구현될 때까지 기다릴 필요 없음
- 누락 결함을 검출할 가능성 증가
동등분할
- 입력, 출력 영역을 동등 클래스로 분할하여 각 클래스에서 하나의 값을 선택하여 테스트 케이스로 이용
- 유효한 분할과 유효하지 않은 분할(명세에 기술되어 있지 않음)의 입력과 출력을 고려
- One-to-One 동등 분할: 분할한 클래스들과 테스트 케이스 간 일대일 관계
- 최소화 동등 분할: 하나의 테스트 케이스에 여러 개의 클래스가 포함
- 유효하지 못한 테스트 케이스는 One-to-One, 유효한 테스트 케이스는 최소화 동등 분할
경계값 분석
- 입력 영역 경계 근처에 있는 값들을 이용하여 테스트 케이스를 설계
- 세 가지 방식의 경계값 분석(BVA)
- 1-value BVA: 경계 값
- 2-value BVA: 경계와 경계 외부에 있는 값 중 가장 경계와 가까운 값
- 3-value BVA: 2-value에서 경계 내부에 있는 값중 가장 경계와 가까운 값을 더한 것
조합 테스트
- 테스트 대상 프로그램 내 여러 클래스의 각 입력 인자를 동등 분할이나 BVA 등의 방법으로 여러 클래스 또는 값으로 분할하였을 때 이들을 조합하여 테스트 케이스를 구성하는 방식
- All combinations 테스트: 모든 입력 인자의 모든 가능한 클래스 조합이 테스트 케이스
- Each choice 테스트: 각 입력 인자의 분할된 클래스에서 최소 하나의 입력값이 테스트 케이스에 포함
- Base choice 테스트: 기반이 되는 테스트 조합을 미리 선정
- 페어와이즈 테스트: 각 인자의 값과 다른 인자의 값을 최소한 한 번은 조합을 하여 테스트하는 방법
- 짝 조합을 테스트하는 방법, 즉 모든 입력에 대해 존재할 수 있는 모든 상호 작용을 고려하지 않고 모든 두 개의 입력 간에 가능한 모든 상호작용만을 고려
- 두개의 클래스끼리 따져봤을 때 모든 조합이 나오면 된다
결정표 테스트
- 결정표를 이용하여 테스트 케이스를 설계
- 조건을 기술하는 부분과 조건의 조합에 대해 취하는 행위를 기술하는 부분으로 구성
- 복잡한 논리적 관계를 표현하기 좋음
- 누락된 요구사항 검사에 유용
상태 전이 테스트
- 시스템을 상태 전이도로 모델링한 후 테스트 케이스들을 상태 전이도에서 체계적으로 선정
- 상태 전이도는 시스템 상태가 어떻게 정이되고 반응하는지 나타내는 좋은 수단
- 원은 시스템의 상태, 화살표는 상태 간의 전이
- 상태 테스트: 상태 전이도의 모든 상태를 최소한 한 번 방문하는 테스트 케이스를 설계
- 단일 전이 테스트(0-switch): 상태 전이도의 모든 유효한 전이들을 최소한 한 번 방문하는 테스트 케이스 설계
- All transitions 테스트: 유효한 전이를 포함하여 유효하지 않은 전이들도 최소 한 번 방문
- 다중 전이 테스트(N-switch): 상태 전이도에 있는 N+1 개의 전이 시퀀스들을 최소 한 번 방문
'csts' 카테고리의 다른 글
| [CSTS] 테스트 분류와 테스팅 방법(2장~8장) (1) | 2025.07.24 |
|---|---|
| [CSTS] 테스트 개요 (2) | 2025.07.10 |