- 테스팅은 소프트웨어 개발 활동과 독립적으로 존재하지 않고 밀접하게 연계되어 있으므로 개발 수명 주기 모델(Life cycle model)에 기반하여 테스트 접근법을 다르게 적용해야 함


V-모델(순차적 개발 모델)

- 폭포수 개발 모델(Waterfall model)에 근간을 두고 있음

- 테스팅은 한번에 이루어 지는 것이 아니라 각각의 개발 단계에 대응하는 테스트 레벨이 별도로 존재

- 개발 단계의 요구사항 분석, 논리 설계, 물리 설계, 프로그램 코딩의 4단계의 개발 활동과 대응(반드시 1:1 대응은 아님)


1. V-모델에서 제시하는 테스트 레벨

- 일반적인 유형의 V-모델에서는 4단계의 테스트 레벨을 제시

- 테스팅에서 V-모델의 역할은 각각의 개발 단계에서 테스팅을 접근하는 방법을 개략적으로 이해하기 쉽게  모델화하여 보여주는 것

- 프로젝트나 소프트웨어 제품의 특성에 따라 V-모델에서의 개발 단계 및 테스트 레벨을 더 많이 구성할 수도 있고, 적게 구성할 수도 있음


1) 컴포넌트(단위) 테스팅

2) 통합 테스팅

3) 시스템 테스팅(시스템 테스팅 이후에 세스템 통합 테스팅이 존재할 수도 있음)

4) 인수 테스팅


V&V(Verification and Validation)

 

 Verification (검증)

 Validation (확인)

 정의

 개발단계의 산출물이 그 단계의 초기에 설정된 조건을 만족하는지 여부를 결정하기 위해 구성요소나 시스템을 평가하는 프로세스

 명시된 요구사항들을 만족하는지 여부를 확인 하기 위해 개발 단계 말이나 중간에 구성 요소나 시스템을 평가하는 프로세스

 특징

 인간에 의한 테스팅(Human Testing)

- 주로 산출물 위주의 검토 행위

 컴퓨터 기반 테스팅(Computer-based Testing) 실제로 소프트웨어를 실행

 Non-executable methods

 executing

 You built it right.

 You built the right system.

 종류

 Requirements reviews

 Code Inspection

 Code Walkthrough

 Buddy Check

 Test Review

 Testing

 



반복적-점증적 개발 모델

- 요구사항 분석, 시스템 설계, 구현 및 테스팅하는 개발 주기가 잛게 연속적으로 반복하는 활동으로 이루어짐


1. 반복적-점증적 개발 모델의 장점

- 개발 리스크를 조기에 감소시킴

(초기 반복 단계에서 리스크가 높은 모듈이나 주요 아키텍처에 해당하는 시스템 일부를 우선적으로 개발하고 테스팅을 통해 결함이나 장애를 조기에 발견, 제거할 수 있는 기회를 확보)


2. 반복적-점증적 개발 모델의 예

1) 애자일(Agile) 개발 모델

2) RUP(Ration Unified Process)

3) RAD(Rapid Application Development)

4) 이해관계자 중심의 소프트웨어 개발(Outside-in Software Development)

5) 프로토타이핑(Prototyping)


3. 반복적-점증적 개발 모델에서의 테스팅

- 반복단계에서 생성한 산출물(프로그램, 시스템)은 일반적으로 테스트 레벨(컴포넌트, 통합, 시스템, 인수 테스팅) 전체 또는 일부를 거치면서 검증됨


1) 반복 단계의 증분 테스팅 수행 

2) 부분 시스템 리그레션 테스팅 필요

- 이전 반복 단계에서 개발한 결과물은 현재의 반복에서 추가 개발한 증분(증가된 부분)에 의해 규모가 점차 커져 부분 시스템을 형성

- 리그레션 테스팅은 첫번째 반복 단계에서 테스팅한 이후로 모든 반복 단계에서 수행되어야 함

- 반복 단계가 거듭될수록 중요


3) 반복 단계별로 각각의 증분 산출물을 포함한 부분 시스템을 대상으로 베리피케이션과 벨리데이션을 수행

4) 초기 개발 단계에서 테스팅 및 테스트 환경과 개발(반복)이 진행되면서 테스팅 및 테스트 환경이 변경됨

- 제한된 세트의 집중된 테스트에서 시작하여 광범위한 세트의 분산된 테스트로 확장

- 테스트 대상 컴포넌트 점차 증가

- 단순한 테스트 환경에서 복잡한 테스트 환경으로 변화

- 시간이 지남에 따라 개별 유즈케이스 테스팅에서 유즈케이스간의 통합 테스팅으로 변화


개발 수명주기(Life Cycle) 모델에서의 테스팅

- 모든 개발 활동은 테스팅 활동과 대응

- 각 테스트 레벨은 그 레벨에 맞는 특정한 목적을 가지고 있음

- 주어진 테스트 레벨에 맞는 테스트의 분석과 설계는 대응되는 개발 활동 동안에 시작

- 테스터는 개발 라이프 사이클 동안에 초안이 준비됨과 동시에 해당 문서를 Review하는 활동에 참가