티스토리 뷰
1. 동등 분할
동등 분할(Equivalence Partitioning, EP)은 데이터를 분할(동등 분할)하여 각 분할의 모든 요소가 테스트 대상 객체에 의해 동일한 방식으로 처리될 것이라고 가정하는 기법이다.
이 기법은 특정 분할에서 값을 테스트했을 때 결함이 발견되면, 동일한 분할 내의 다른 값에서도 동일한 결함이 발견될 것이라는 이론에 기반한다. 따라서 각 분할에 대해 하나의 테스트만 수행해도 충분하다.
특징
- 분할은 입력값, 출력값, 구성 요소, 내부 값, 시간 관련 값, 인터페이스 매개변수 등과 관련하여 식별될 수 있다.
- 분할은 연속적 또는 이산적, 순서 있음 또는 없음, 유한 또는 무한할 수 있다.
- 각 분할은 중복되지 않고 비어 있지 않아야 한다.
분할의 유형
- 유효 분할: 테스트 대상이 처리해야 할 값들로 구성된 분할.
- 무효 분할: 테스트 대상이 무시하거나 거부해야 할 값들로 구성된 분할.
유효 및 무효 분할 예시
- 로그인 시스템
- 유효 분할: 올바른 사용자 ID와 비밀번호 입력.
- 무효 분할: 비밀번호가 틀리거나 사용자 ID가 없는 경우.
- 숫자 입력 필드
- 유효 분할: 1~100 사이의 숫자.
- 무효 분할: 음수, 101 이상의 숫자, 알파벳 또는 특수문자.
동등 분할 테스트 기법의 실제 사례
- 금융 소프트웨어
금융 소프트웨어에서 동등 분할 기법은 주로 입력값의 유효성을 검사하는 데 사용한다. 예를 들어, 은행의 대출 신청 시스템에서 대출 금액이 1,000,000원에서 10,000,000원 사이일 때만 유효하다고 가정할 경우, 다음과 같은 동등 클래스를 생성한다.- 유효한 클래스: 1,000,000원, 5,000,000원, 10,000,000원
- 무효한 클래스: 999,999원, 10,000,001원
- 이러한 클래스를 기반으로 테스트 케이스를 작성하여 시스템이 올바르게 작동하는지 확인한다.
- 전자상거래 플랫폼
전자상거래 웹사이트에서는 동등 분할 기법을 사용자 입력을 검증하는 데 적용한다. 예를 들어, 사용자가 비밀번호를 설정할 때 다음과 같은 규칙을 따른다고 가정한다.- 비밀번호는 8자 이상이어야 하며, 대문자, 소문자, 숫자, 특수문자를 포함해야 한다.
- 이 경우 다음과 같은 동등 클래스를 생성한다.
- 유효한 클래스: 'Password1!', 'Test@123'
- 무효한 클래스: 'short', 'NoSpecialChar1', 'ALLUPPERCASE'
- 이러한 테스트 케이스를 통해 다양한 비밀번호 입력에 대한 시스템의 반응을 검증한다.
- 모바일 애플리케이션
모바일 애플리케이션에서도 동등 분할 기법을 활용한다. 예를 들어, 사용자가 나이를 입력하는 경우, 다음과 같은 동등 클래스를 구성한다.- 유효한 클래스: 18세, 30세, 65세
- 무효한 클래스: 0세, 17세, 100세
- 이를 통해 애플리케이션이 나이 입력에 대해 올바르게 반응하는지 확인한다.
- 게임 소프트웨어
게임 소프트웨어에서도 동등 분할 기법을 활용한다. 예를 들어, 게임에서 캐릭터의 레벨이 1에서 100 사이일 때, 다음과 같은 동등 클래스를 설정한다.- 유효한 클래스: 1, 50, 100
- 무효한 클래스: 0, 101
- 이를 통해 게임의 레벨 시스템이 올바르게 작동하는지 검증한다.
- 의료 소프트웨어
의료 소프트웨어에서는 환자의 나이, 체중, 혈압 등의 입력값을 검증하는 데 동등 분할 기법을 적용한다. 예를 들어, 특정 약물의 투여량이 환자의 체중에 따라 달라질 때, 다음과 같은 동등 클래스를 생성한다.- 유효한 클래스: 50kg, 70kg, 90kg
- 무효한 클래스: 0kg, 150kg
- 이를 통해 약물 투여 시스템이 올바르게 작동하는지 확인한다.
- 항공 소프트웨어
항공 소프트웨어에서는 비행기의 속도, 고도, 연료량 등을 입력받아 비행 계획을 수립하는 시스템에 동등 분할 기법을 활용한다. 예를 들어, 비행기의 고도가 0에서 12,000미터 사이일 때만 유효하다고 가정할 경우, 다음과 같은 동등 클래스를 생성한다.- 유효한 클래스: 1,000m, 6,000m, 12,000m
- 무효한 클래스: -1m, 12,001m
- 이를 통해 비행 계획 시스템이 올바르게 작동하는지 검증한다.
- 자동차 소프트웨어
자동차의 주행 보조 시스템에서도 동등 분할 기법을 활용한다. 예를 들어, 차량의 속도가 0에서 200km/h 사이일 때만 주행 보조 기능이 활성화된다고 가정할 경우, 다음과 같은 동등 클래스를 설정한다.- 유효한 클래스: 0km/h, 100km/h, 200km/h
- 무효한 클래스: -10km/h, 210km/h
- 이를 통해 주행 보조 시스템이 올바르게 작동하는지 확인한다.
커버리지
- 100% 커버리지를 달성하려면, 모든 분할(유효 및 무효)을 각각 한 번 이상 테스트해야 한다.
2. 경계값 분석
경계값 분석(Boundary Value Analysis, BVA)은 동등 분할의 경계를 테스트하는 기법이다.
특징
- BVA는 순서가 있는 분할에서만 사용 가능하다.
- 최소값과 최대값이 각 분할의 경계값을 나타낸다.
- 경계값은 구현된 경계가 의도된 위치에서 벗어나거나 생략된 경우 결함을 발견할 가능성이 높다.
버전
- 2-값 BVA: 각 경계값과 인접 분할의 가장 가까운 이웃값을 테스트한다.
- 예: 값의 범위가 1~100인 경우, 1, 100, 0, 101을 테스트.
- 3-값 BVA: 각 경계값과 두 개의 이웃값을 테스트하며, 더 엄격한 결함 발견이 가능하다.
- 예: 값의 범위가 1~100인 경우, 1, 100, 0, 2, 99, 101을 테스트.
커버리지
- 100% 커버리지를 달성하려면 모든 경계값 및 이웃값을 테스트해야 한다.
3. 결정 테이블 테스팅
결정 테이블 테스팅(Decision Table Testing)은 다양한 조건 조합이 서로 다른 결과를 초래하는 시스템 요구사항의 구현을 테스트하는 기법이다.
특징
- 조건과 결과는 테이블의 행으로 정의된다.
- 열은 각 조건 조합과 관련된 결정을 나타낸다.
- 불가능한 조건 조합은 삭제하거나, 결과에 영향을 미치지 않는 조건은 병합하여 테이블을 단순화할 수 있다.
예시) 온라인 쇼핑몰 할인 정책
- 조건: 회원 여부, 쿠폰 사용 여부.
- 결과: 10% 할인, 20% 할인, 할인 없음.
회원 여부 | 쿠폰 사용 여부 | 결과 |
Y | Y | 20% 할인 |
Y | N | 10% 할인 |
N | Y | 10% 할인 |
N | N | 할인 없음 |
커버리지
- 100% 커버리지를 달성하려면 가능한 모든 조건 조합(테이블의 열)을 테스트해야 한다.
장점
- 모든 조건 조합을 체계적으로 식별하여 놓치기 쉬운 결합을 발견할 수 있다.
- 요구사항의 결함(모순, 격차)을 발견하는 데 유용하다.
4. 상태 전이 테스팅
상태 전이 테스팅(State Transition Testing)은 시스템의 가능한 상태와 유효한 상태 전이를 모델링하여 동작을 테스트하는 기법이다.
특징
- 상태 전이 다이어그램 또는 상태 표(State Table)로 표현된다.
- 다이어그램에서는 이벤트가 상태 전이를 유발하며, 필요 시 가드 조건과 동작이 추가될 수 있다.
- 상태 표는 상태와 이벤트를 명확히 나열하며, 유효하지 않은 전이를 비어 있는 셀로 나타낸다.
예시) ATM 기기
- 상태: 대기 상태, 카드 삽입, PIN 입력, 인출 중, 종료.
- 이벤트: 카드 삽입, PIN 입력, 금액 선택, 카드 제거.
현재 상태 | 이벤트 | 다음 상태 | 동작 |
대기 상태 | 카드 삽입 | PIN 입력 | 카드 인증 |
PIN 입력 | PIN 올바름 | 인출 중 | 계좌 인증 및 거래 |
인출 중 | 금액 선택 | 종료 | 금액 인출 및 종료 |
커버리지 유형
- 모든 상태 커버리지: 모든 상태를 한 번 이상 방문한다.
- 유효 전이 커버리지(0-switch 커버리지): 모든 유효 전이를 테스트한다.
- 모든 전이 커버리지: 모든 유효 및 무효 전이를 테스트한다.
장점
- 모든 전이 커버리지는 미션 크리티컬 및 안전 크리티컬 소프트웨어에서 최소 요구 조건으로 권장된다.
결론
동등 분할, 경계값 분석, 결정 테이블 테스팅, 상태 전이 테스팅은 서로 다른 요구사항과 상황에 적합한 강력한 테스트 설계 기법이다. 각 기법은 테스트 범위와 효율성을 극대화하며, 결합하여 사용할 경우 더욱 높은 품질 보증을 제공할 수 있다. 프로젝트와 시스템의 특성에 맞게 적절한 기법을 선택하고, 체계적으로 적용하는 것이 중요하다.
'소프트웨어 테스팅' 카테고리의 다른 글
테스트 활동 관리 (0) | 2025.01.13 |
---|---|
협업 기반 테스트 접근법 (0) | 2025.01.13 |
경험 기반 테스트 기법 (0) | 2025.01.13 |
화이트박스 테스트 기법 (0) | 2025.01.13 |
테스트 분석 및 설계 (0) | 2025.01.13 |
피드백과 리뷰 프로세스 (0) | 2025.01.13 |
정적 테스트 (0) | 2025.01.12 |
유지보수 테스트 (0) | 2025.01.12 |