5.1.1. 테스트 계획서의 목적과 내용
테스트 계획서는 테스트 프로젝트의 목적, 자원, 프로세스를 설명한다.
- 테스트 목적 달성을 위한 방법과 일정을 문서화한다.
- 수행한 테스트 활동이 정해진 기준을 충족하는 데 도움을 준다.
- 팀원과 기타 이해관계자의 의사소통 수단으로 사용된다.
- 테스팅이 수립한 테스트 정책 및 전략을 준수함을 보여준다.
테스트 계획서는 다음과 같은 내용을 포함한다.
- 테스팅 정황
- 테스트 프로젝트의 가정 및 제약 사항
- 이해관계자
- 의사소통
- 리스트 목록
- 테스트 접근법
- 예산 및 일정
5.1.2. 반복 주기와 릴리스 계획에 대한 테스터의 기여
일반적으로 반복적 소프트웨어 개발수명주기(SDLC)에서 두 가지의 계획, 즉 릴리스 계획과 반복 주기 계획이 이루어진다.
릴리스 계획
- 제품 릴리스를 계획하는 단계로 제품 백로그를 (재)정의한다.
- 큰 사용자 스토리를 작은 사용자 스토리들로 세분화하는 작업을 포함할 수 있다.
- 개별 반복 주기의 테스트 접근법과 테스트 계획을 위한 기반이 된다.
- 릴리스 계획에 참여하는 테스터는 다음 상황을 계획 및 참석한다
- 사용자 스토리와 인수조건 작성
- 프로젝트 및 품질 리스크 분석에 참여
- 사용자 스토리와 관련된 테스트 노력을 추정
- 테스트 접근법을 결정
- 릴리스를 위한 테스팅을 계획
반복 주기 계획
- 개별 반복 주기를 계획하는 것으로 반복 주기 백로그와 관련이 있다.
- 반복 주기 계획에 참여하는 테스터는 다음 상황을 계획 및 참석한다.
- 사용자 스토리의 구체적인 리스크 분석에 참여
- 사용자 스토리의 테스트 용이성을 판단하고, 사용자 스토리를 업무 단위로 분류
- 테스팅 업무에 필요한 테스트 노력을 추정
- 테스트 대상의 기능 및 비기능적 측면을 식별 및 구체화
5.1.3. 시작 조건과 완료 조건
시작 조건
정의
어떤 활동을 수행하기 위한 전제 조건을 정의한다. 시작 조건을 충족하지 못하면 해당 활동을 수행하는 것이 어려워져 들어가는 시간과 비용이 늘어나고 원할하게 진행되지 않을 위험도 높아진다.
많이 사용되는 시작 조건
- 자원의 가용성
- 테스트 웨어 가용성
- 테스트 대상의 초기 품질 수준
완료 조건
정의
특정 활동의 종료를 선언하기 위해 달성해야 하는 사항을 정의한다. 시작 조건과 완료 조건은 각 테스트 레벨에 대해 정의해야 하며 테스트 목적에 따라 달라진다.
많이 사용되는 완료 조건
- 충분함에 대한 측정
- 종료 기준
- 시간 및 예산의 소진
- 이해관계자들이 추가 테스트 없이 배포하는 리스크를 검토하고 수용했다면 다른 완료 조건이 충족되지 않아도 테스트를 종료할 수 있다.
애자일 소프트웨어 개발에서의 완료 조건과 시작조건
- 완료의 정의
- 릴리스 가능 항목에 대한 팀의 목표 메트릭을 정의
- 준비의 정의
- 개발 및 테스트 활동을 시작하기 위해 사용자 스토리가 충족되어야함
5.1.4 추정 기법
테스트 프로젝트의 목적을 달성하는 데 필요한 테스트 관련 작업량을 예측하는 것이다.
추정치는 여러 가정을 기반으로 하ㅏ며, 추정에는 항상 오류가 있을 수 있다는 점을 이해관계자가 명확히 이해하도록 하는 것이 중요하다.
추정기법
비율 기반 추정(Estimation based on ratios)
조직에서 수행한 이전 프로젝트의 데이터를 수집하여 유사 프로젝트를 위한 "표준" 비율을 도출하는 방법이다. 과거 프로젝트에서 수집한 비율을 사용하여 새로운 프로젝트의 테스트 노력을 추정한다.
예시
이전 프로젝트에서 개발노력 대 테스트 노력의 비율이 3:2였고, 현재 프로젝트에서 개발 노력을 600MD로 예상한다면, 테스트 노력은 400MD로 추정할 수 있다.
현재 프로젝트에서 데이터 수집을 위해 가능한 빨리 측정을 수행한다. 관찰 결과가 충분히 쌓이면 이 데이터를 가지고 외삽법(수학정 모델)을 적용해 남은 작업에 필요한 노력의 근사치를 추정할 수 있다.
와이드밴드 델파이(Wideband Delphi)
전문가의 경험을 기반으로 추정을 한다. 각 전문가는 독립적으로 노력을 추정 후 결과를 수집해서 합의된 범위를 벗어난 편차가 있다면 각자의 추정치에 대해 논의한다. 논의를 바탕으로 다시 새로운 추정치를 제시하도록 한다. 합의에 도달할 때까지 이과정을 반복한다.
플래닝 포커
애자일 소프트웨어 개발에서 많이 사용하는 와이드밴드 델파이의 변형모델로 노력의 규모를 나타내는 숫자가 적힌 카드를 사용해 추정함
3점 추정(Three-point estimation)
전문가 기반 기법으로, 전문가가 세 개의 추정치를 도출한다.
세 개의 추정치는 다음과 같다.
- 낙관적 추정치(a)
- 확률적으로 가장 높은 추정치(m)
- 가장 비관적인 추정치(b)
계산 방법
최종 추정치(E)는 가중 산술 평균으로 계산된다: E=(a+4*m+b)/6
표준 편차(SD)는 다음과 같이 계산된다: SD=(b-a)/6
5.1.5. 테스트 케이스 우선순위지정
테스트 케이스와 테스트 절차를 도출해서 테스트 스위트로 조립하고 나면 테스트 스위트를 테스트 일정으로 구성할 수 있다.
테스트 케이스 우선순위지정법
- 리스크 기반 우선순위지정
- 리스크 분석 결과에 따라 테스트 실행 순서를 결정한다
- 가장 중요한 리스크를 다루는 테스트 케이스를 먼저 실행한다.
- 커버리지 기반 우선순위지정
- 테스트 실행 순서를 커버리지에 따라 결정한다
- 가장 높은 커버리지를 달성하는 테스트 케이스를 먼저 실행한다
- 요구사항 기반
- 테스트 실행 순서를 해당 테스트 케이스의 기반이 되는 요구사항
의 우선순위에 따라 결정한다.
- 요구사항의 우선순위는 이해관계자가 정의한다
- 가장 중요한 요구사항 관련 테스트 케이스를 먼저 실행한다.
예외사항
- 테스트 케이스 또는 테스트 대상 기능이 종속성을 가진 경우 우선순위 지정방법이 어려울 수 있다.
- 우선순위 높은 테스트 케이스가 우선순위 낮은 테스트 케이스에 종속되는 경우, 우선순위가 낮은 테스트 케이스를 먼저 실행해야 할 수도 있다
주의사항
- 테스트 실행 순서에서는 자원의 가용성도 고려해야 한다.
5.1.6. 테스트 피라미드
- 테스트 피라미드는 테스트에 따라 입도가 다를 수 있다는 것을 보여주는 모델이다.
- 테스트 자동화 수준에 따른 목표를 보여주며, 팀의 테스트 자동화와 테스트 노력 할당을 돕는다.
피라미드 구조
- 아래층
- 규모가 작고 독립적이며 빠른 테스트
- 대상이 되는 기능이 작기 때문에 적절한 커버리지를 달성하기 위해 많은 테스트가 필요하다.
- 위층
- 복잡하고 상위 수준의 엔드-투-엔드 테스트를 대변한다.
- 속도가 느리며 큰 규모의 기능을 확인하기 때문에 적은 수의 테스트로 적절한 커버리지를 달성할 수 있다.
피라미드의 층
5.1.7. 테스팅 사분면
애자일 소프트웨어 개발에서 테스트 레벨을 적합한 테스트 유형, 활동, 테스트 기법, 작업 산출물과 묶어 시각화한 것이다. 테스트 관리자와 이해관계자가 필요한 모든 테스트 유형과 테스트 레벨을 소프트웨어 개발수명주기(SDLC)에 포함하고 이해하는 데 도움을 준다.
테스팅 사분면의 구성
- 테스트는 비즈니스 또는 기술에 대한 테스트로 나뉘며, 팀을 지원하거나 제품을 평가할 수 있다.
- 이 두 가지 조합에 따라 네 개의 사분면이 결정된다.
1사분면
- 기술 측면, 팀 지원
- 컴포넌트 및 컴포넌트 통합 테스트 포함
- 자동화되어 지속적인 통합(CI) 프로세스에 포함됨
2사분면
- 비즈니스 측면, 팀 지원
- 기능 테스트, 예제, 사용자 스토리 테스트, 사용자 경험 프로토타입, API 테스팅, 시뮬레이션 포함
- 인수 조건을 확인하며, 수동 또는 자동화 가능
3사분면
- 비즈니스 측면, 제품 평가
- 탐색적 테스팅, 사용성 테스팅, 사용자 인수 테스팅 포함
- 사용자 중심으로 이루어지며, 수동 실행이 많음
4사분면
- 기술 측면, 제품 평가
- 스모크 테스트와 비기능 테스트(사용성 테스트 제외) 포함
- 자동화되는 경우가 많음