Part01. 테스트 개요(제2장 테스트 분류와 테스팅 방법)
제2장 테스트 분류와 테스팅 방법
2.1 개요
- 테스트 분류 : 테스트 레벨(컴포넌트, 통합, 시스템, 인스), 테스트 유형(기능, 품질), 테스트 설계 기법
- 테스팅 방법 : 개발 생명 주기, 프로젝트 단계
2.2 테스트 분류
2.2.1 개요
- 테스트 레벨 : 컴포넌트 테스트, 통합 테스트, 시스셈 테스트, 인수 테스트
- 테스트 유형 : 기능 테스트, 성능 테스트, 신뢰성 테스트, 보안 테스트 등
- 비기능 테스트 : 성능 테스트, 신뢰성 테스트, 보안 테스트 등
- 테스트 설계 기법 : 정적 테스트, 동적 테스트
2.2.2 테스트 레벨에 의한 분류
- 컴포넌트/단위 테스트 : 시스템을 구성하는 단위 모듈을 테스트 대상. 개별 단위 모듈을 독립적으로 테스트
- 통합 테스트 : 시스템을 구성하는 단위 모듈들이 정확하게 통합되었는지. 구조 설계 명세서를 바탕으로 테스트 진행
- 시스템 테스트 : 전체 시스템을 테스트 대상. 요구사항 명세서에 초점
- 인수 테스트 : 전체 시스템을 테스트 대상. 고객/사용자 관점에서 고객이 기대하는 방식으로 동작하는지 확인
2.2.3 테스트 유형에 의한 분류
[기능 테스트]
- 기능 요구사항 측면의 겨람 검출 및 충족 여부 확인을 목적
- 모든 테스트 수준에서 진행
[비기능 테스트]
- 품질 요구사항 측면의 결함 검출 및 충족 여부 확인을 목적
- 시스템 테스트와 인수 테스트 수준에서 진행
[ISO 25010 품질 모델]
- 주특성 : 기능 적합성, 사용성, 성능 효율성, 호환성, 신뢰성, 보안성, 유지보수성, 이식성
- 부특성 : 8개의 주특성별로 세부적인 품질 특성
2.2.4 테스트 설계 기법에 따른 분류
2.2.4.1 개요
- 정적 테스트 : 리뷰, 정적 분석
- 동적 테스트 : 명세 기반 테스트, 구조 기반 테스트, 경험 기반 테스트
2.2.4.2 정적 테스트
- 정적 테스트 : 테스트 대상을 실행하지 않는 방식.
2.2.4.2.1 리뷰
- 리뷰 : 소프트웨어의 다양한 산출물에 존재하는 결함을 검출하거나 프로젝트의 진행 사항을 점검하기 위한 활동
- 순서
1) 경영진 준비 5) 개별 준비
2) 리뷰 계획 6) 그룹 검토
3) 리뷰 절차 개요 설명 7) 재작업
4) 작업물 개요 설명 8) 후속 작업
리뷰 유형 | 설명 |
관리 리뷰 | 프로젝트 진행 사항황에 대한 검토를 바타으로 일정, 인력, 범위 등에 대한 통제 및 의사 결정을 지원 |
기술 리뷰 | 정의된 계획 및 명세를 준수하고 있는지에 대한 검토를 수행 |
인스펙션 | 문제를 식별하고 문제에 대한 올바른 해결을 검증 |
워크쓰루 | 문제를 식별하고 더 나아가서 대안 조사, 개선 활동, 학습 기회 제공을 수행 |
감사 | 객관적인 표준과 규제에 대한 준수를 독립적으로 평가 |
2.2.4.2.2 정적 분석
- 정적 분석 : 산출물의 구조적 속성을 이용하여 자동화된 방식으로 도구에 의해서 수행
2.2.4.3 동적 테스트
- 동적 테스트 : 테스트 대상을 실행하여 결함을 검출하는 방법
2.2.4.3.1 명세 기반 테스트와 구조 기반 테스트
- 명세 기반 테스트 : 소스 코드를 참고하지 않고 테스트 케이스를 결정 (ex. 임의 테스트 방법)
- 구조 기반 테스트 : 구현된 소스 코드를 참고해서 테스트 케이스를 결정
2.2.4.3.2 경험 기반 테스트
- 경험 기반 테스트 : 기존의 테스트 경험, 테스트 대상이 되는 시스템 및 해당 도메인에 대한 경험 등을 바탕으로 수행
2.2.4.3.2.1 오류 추정
- 오류 추정 : 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하는 방법
- 동등 분할이나 경곗값 분석 같은 명세 기반 테스트 방법과 함께 사용
2.2.4.3.2.2 탐색적 테스트
- 탐색적 테스트 : 테스트 대상에 대상에 대한 이해를 바탕으로 즉석에서 테스트 케이스를 결정한 후, 문서화 없이 해당 테스트를 바로 수행
2.3 테스팅 방법
2.3.1 개요
2.3.2 리그레이션 테스트
- 리그레이션 테스트 : 소프트웨어가 변경된 후에 수행하는 테스트
- Retest-all 전략, 선택적 리그레이션 테스트 전략, 테스트 최소화 전략, 테스트 우선 순위화 전략
2.3.3 소프트웨어 생명 주기 모델과 테스트
- 소프트웨어 생명 주기 : 소프트웨어 개발 체계의 추상적 표현이며 순차적 또는 병렬적인 일련의 단계로 구성
- 순차적 생명 주기 모델 : 폭포수 모델, V-모델
- 진화적 개발 모델
- 애자일 개발 방법론 : 테스트 주도 개발(TDD)
2.3.4 위험 기반 테스트
- 위험 기반 테스트 : 피처에 대한 위험 분석을 바타으로 테스트에 대한 계획과 설계 그리고 실행 등의 활동을 수행하는 것
2.3.5 모델 기반 테스트
- 모델 기반 테스트 : 테스트 절차를 수행할 수 있는 정보가 자동으로 추출될 수 있을 정도로 정형화되고 상세한 모델을 바탕으로 테스트