테스트 프로세스(test process)는 테스트 목표를 이루려고 하는 테스트 활동의 묶음이다.[1][2] ISTQB CTFL 강의계획서에 따르면 테스트 프로세스는 상황에 맞게 조정할 수 있고, 테스트를 어떻게 하는지는 개발 생명주기, 테스트 대상의 중요도와 리스크, 일정과 예산 같은 프로젝트 제약 등 맥락에 따라 달라진다.[3]
ISO/IEC/IEEE 29119-2의 프로세스 모델
ISO/IEC/IEEE 29119-2:2021은 테스트 프로세스를 조직, 테스트 관리, 동적 테스트의 세 층으로 나눈다.[1]
- 조직 테스트 프로세스(organizational test process): 조직 테스트 명세를 만들고 관리한다. 대표적인 조직 테스트 명세는 테스트 정책과 조직 테스트 실무(organizational test practices)다.
- 테스트 관리 프로세스(test management processes): 테스트 전략과 계획(test strategy and planning), 테스트 모니터링과 제어, 테스트 완료의 세 프로세스로, 테스트를 조율하고 모니터링하고 제어한다.
- 동적 테스트 프로세스(dynamic test processes): 테스트 설계와 구현, 테스트 환경과 데이터 관리(test environment and data management), 테스트 실행, 테스트 사건 보고(test incident reporting)의 네 프로세스다.[1]
같은 표준은 각 프로세스를 이렇게 정의한다. 테스트 전략과 계획 프로세스는 테스트 전략을 설계하고 테스트 계획을 마쳐 테스트 계획서를 만들고 유지한다. 테스트 모니터링과 제어 프로세스는 테스트가 테스트 계획서와 조직 테스트 명세대로 이루어지게 한다. 테스트 완료 프로세스는 쓸모 있는 테스트 자산을 뒤에 쓸 수 있게 하고, 테스트 환경을 알맞은 상태로 두고, 테스트 결과를 기록해 이해관계자에게 알린다. 테스트 설계와 구현 프로세스는 테스트 케이스와 테스트 절차를 끌어내 명세하고, 테스트 환경과 데이터 관리 프로세스는 테스트 환경과 테스트 데이터를 갖추고 유지한다. 테스트 실행 프로세스는 테스트 설계와 구현에서 만든 테스트 절차를 준비된 테스트 환경에서 실행하고 그 결과를 기록하며, 테스트 사건 보고 프로세스는 테스트 실행에서 찾은, 후속 조치가 필요한 사건을 관련 이해관계자에게 보고한다.[1]
ISO/IEC/IEEE 29119-3:2021은 테스트 문서의 서식을 그 문서를 내는 프로세스별로 나눈다. 테스트 계획서, 테스트 상태 보고서, 테스트 완료 보고서는 테스트 관리 프로세스의 문서로, 테스트 실행 로그와 테스트 사건 보고서는 동적 테스트 프로세스의 문서로 둔다.[4]
테스트 활동
CTFL 강의계획서에 따르면 테스트 프로세스는 대개 아래 활동 묶음으로 이루어진다. 활동은 순서대로 늘어놓았지만 흔히 되풀이되거나 나란히 진행된다.[3]
| 활동 | 하는 일 |
|---|---|
| 테스트 계획 | 목표를 정하고, 제약 안에서 그 목표를 이룰 접근법을 고른다. |
| 테스트 모니터링과 제어 | 계획에 견주어 진행을 계속 살피고, 목표를 이루는 데 필요한 조치를 한다. |
| 테스트 분석 | 테스트 기준을 분석해 테스트할 수 있는 특성을 찾고, 테스트 조건을 정해 리스크를 고려해 우선순위를 매긴다. |
| 테스트 설계 | 테스트 조건을 테스트 케이스와 그 밖의 testware로 다듬고, 커버리지 항목을 찾고, 테스트 데이터 요구사항을 정하고 테스트 환경을 설계한다. |
| 테스트 구현 | 테스트 데이터 같은 testware를 만들거나 구하고, 테스트 케이스를 테스트 절차로 엮어 테스트 스위트로 묶고, 테스트 환경을 갖춰 바르게 차려졌는지 확인한다. |
| 테스트 실행 | 실행 일정에 따라 테스트를 실행하고, 실제 결과를 기대 결과와 견주고, 이상을 분석해 보고한다. |
| 테스트 완료 | 마일스톤에서 하며, 뒤에 쓸 testware를 보관하거나 넘기고, 교훈과 개선점을 찾고, 테스트 완료 보고서를 써서 알린다. |
테스트 계획서
테스트 계획서(test plan)는 이룰 테스트 목표와, 그 목표를 이룰 수단과 일정을 적어 테스트 활동을 조율하는 문서다.[4][5] CTFL 강의계획서에 따르면 테스트 계획서는 테스트 프로젝트의 목표, 자원, 프로세스를 적고, 대개 다음 내용을 담는다.[3]
- 테스트의 맥락(범위, 테스트 목표, 제약, 테스트 기준)
- 가정과 제약
- 이해관계자(역할, 책임, 테스트와의 관계, 교육 필요)
- 의사소통(형식, 빈도, 문서 서식)
- 리스크 목록(제품 리스크와 프로젝트 리스크)
- 테스트 접근법(테스트 레벨, 테스트 유형, 테스트 기법, 산출물, 진입 기준과 종료 기준, 테스트의 독립성, 측정할 메트릭, 테스트 데이터와 테스트 환경 요구사항)
- 예산과 일정[3]
테스트 계획서에 담는 리스크는 리스크 기반 테스트에서 다룬다.
진입 기준과 종료 기준
ISTQB 용어집은 진입 기준(entry criteria)을 정해진 작업을 공식적으로 시작하기 위한 조건의 묶음으로 정의한다.[6] CTFL 강의계획서에 따르면 흔한 진입 기준은 자원(사람, 도구, 환경, 테스트 데이터, 예산, 시간)과 testware(테스트 기준, 테스트할 수 있는 요구사항, 사용자 스토리, 테스트 케이스)를 갖췄는지, 그리고 테스트 대상의 처음 품질이 어떤지(스모크 테스트를 통과했는지 등)다.[3]
종료 기준(exit criteria)은 활동을 끝났다고 볼 조건이고, completion criteria라고도 부른다.[1][7] CTFL 강의계획서에 따르면 흔한 종료 기준은 철저함의 척도(커버리지 수준, 해결하지 않은 결함 수, 결함 밀도, 실패한 테스트 케이스 수)와 예·아니오로 가리는 기준(계획한 테스트를 모두 실행했는지, 정적 테스트를 했는지, 찾은 결함을 모두 보고했는지)이다. 시간이나 예산이 다 떨어지는 것도 종료 기준으로 볼 수 있고, 이해관계자가 리스크를 검토해 받아들이면 다른 기준을 채우지 못해도 테스트를 끝낼 수 있다.[3]
실행과 완료의 산출물
- 테스트 로그(test log): ISTQB 용어집은 테스트 로그를 테스트 실행에 관한 세부 사항을 시간순으로 적은 기록으로 정의한다.[8]
- 사건 보고서(incident report): 정의와 결함 보고서와의 관계, 처리는 결함 관리에서 다룬다.
- 테스트 진행 보고서(test progress report): ISTQB 용어집은 테스트 진행 보고서를 기준선에 견준 테스트 활동의 진행, 리스크, 결정할 대안을 담는 정기 테스트 보고서로 정의하고, test status report를 같은 말로 둔다.[9] CTFL 강의계획서에 따르면 테스트 진행 보고서는 테스트 모니터링과 제어 중에 대개 정기적으로 낸다.[3]
- 테스트 완료 보고서(test completion report): ISO/IEC/IEEE 29119-3:2021은 테스트 완료 보고서를 수행한 테스트를 요약한 보고서로 정의하고, test summary report를 같은 말로 둔다.[4] ISTQB 용어집은 테스트 완료 보고서를 완료 마일스톤에서 내며 테스트 항목을 종료 기준에 견주어 평가하는 보고서로 정의한다.[10] CTFL 강의계획서에 따르면 테스트 완료 보고서는 테스트 완료 중에 쓰고, 테스트 계획서의 목표와 종료 기준에 견준 평가, 완화하지 못한 리스크와 고치지 않은 결함, 교훈을 담는다.[3]