반응형
SW 테스트에도 테스트 레벨이 있다.
테스트의 레벨에 따라서 특징에 맞게 다음을 알맞게 정의해야한다.
- 테스트 목적
- 테스트 베이시스( 테스트 케이스 도출에 필요한 산출물)
- 테스트 대상
- 테스트 하네스(드라이버/스텁) 등 툴
- 테스트 접근 방법
- 테스트 수행 조직
그러므로 어떤 단계의 테스트를 수행하는지 테스트의 레벨에 대한 이해가 필요하다.
각 단계별 테스트의 레벨에 대해서 알아보자!
1. 컴포넌트(단위) 테스팅
테스트가 가능한 최소의 단위로 나누어 소프트웨어를 모듈, 객체, 클래스 등으로 나누어 결함을 찾는 레벨의 테스팅이다.
이때 stub 과 드라이버, 시뮬레이터 등이 필요할 수 있다.
(stub이란? 속이 비어있는 함수를 의미한다. )
(드라이버란? 시스템 컴포넌트를 시험하는 환경의 일부분으로 시험 지원 목적의 코드 ex. 순차 실행되는 프로그램이나 명령 목록이 담긴 배치 파일)
컴포넌트 테스팅 방법은 아래의 테스팅을 포함 한다.
- 구조적인 테스팅(분기 커버리지)
- 리소스 관련 테스팅 (메모리 관련 등)
- Robustness 테스팅
- 코드 레벨로 테스트를 하기 때문에 white-box 테스팅
- 제어 흐름 테스팅
- 조건/결정 커버리지 테스팅
- 최소 비교 테스팅(elementary comparison test)
테스트 케이스는 컴포넌트 명세서, 소프트웨어 상세 설계, 데이터 모델과 같은 개발 산출물에서 도출한다.
2. 통합 테스팅
시스템의 각기 다른 부분과 상호 연동하는 동작을 테스트 하는 기법이다.
통합의 범위가 클 수록 오류를 찾기 어렵기 때문에 다음과 같은 접근법을 사용한다.
Backbone | Big Bang | Bottom up | Top down | |
수행 방법 | 가장 중요하고 리스크가 높은 모듈로 초기 통합 | 모든 테스트 모듈을 통시에 통합 | 가장 하부의 모듈부터 통합 | 상부의 모듈부터 통합 |
드라이버/스텁 | 필요에 따라 사용 | 실제 모듈로 테스트 | 테스트 드라이버를 활용하여 점차 상부 모듈로 대치 | 테스트 스텁이 필요하며 점차 개발된 하부 모듈로 대치 |
장점 | 리스크가 높은 결함 초기에 발견할 수 있따. | 단시간 테스트 | 결함 격리가 쉽다. 하위 모듈을 충분히 테스트 할 수 있다. |
결함 격리가 쉽다. 설계상 결함을 빠르게 찾을 수 있다. |
단점 | 테스트 시간이 오래걸릴 수 있다. | 결함 격리가 어렵다. | 상부 구조상의 설계 결함을 상부 구조되어서야 발견할 수 있다. 비즈니스 로직 반영이 어렵다. |
중요한 결함을 하부에서 발견할 수 있다. |
3. 시스템 테스팅
전체 시스템 또는 제품에 대해서 테스트를 하는 것이다.
이는 실제 사용환경에서 진행한다.
사용하는 테스트 베이시는 다음과 같다 :
- 리스크 분석서
- 요구사항 명세
- 비즈니스 프로세스
- 유즈 케이스
- 기타 비즈니스 레벨의 시스템 동작 명세
- 운영체제 및 시스템 리소스와 상호작용 명세
기능 요구사항 테스트 와 비기능 요구사항을 모두 검증한다.
- 기능 요구사항 : 명세 기반의 블랙박스 테스팅, 결정 테이블이나 구조 기반 기법을 활용하기도 한다.
- 비기능 요구사항 : 성능, 가용성, 보안(ISO/IEC 9126)
주로 독립된 테스트 팀이 수행하는 경우가 대부분이다.
4. 인수 테스팅
결함을 찾기보다 시스템을 배포, 사용할 준비가 되었는지를 테스트 한다.
인수는 고객 인수 뿐아니라 전 단계에서 수행될 수 있다.
일반적으로 다음과 같은 종류가 있다. :
- 사용자 인수 테스팅 : 비즈니스 사용자가 시스템 사요으이 적절성을 확인한다.
- 운영상의 인수 테스팅 : 시스템 관리자에 의한 테스트 활동. 백업/복원 테스팅, 재난 복구, 사용자 관리, 유지보수 작업, 보안 취약성에 대한 정기적 점검
- 계약 인수 테스팅과 규정 인수 테스팅
- 알파 테스팅과 베타 테스팅
- 알파 테스팅: 개발 조직 내의 고객
- 베타 테스팅 : 잠재 고객
반응형