테스트 프로세스
CSTS 자격증 시험: 테스트 프로세스 상세
CSTS 자격증 시험에서 다루는 소프트웨어 테스트 프로세스는 효과적이고 효율적인 테스트 활동을 위한 체계적인 접근 방식을 제공합니다. 일반적인 테스트 프로세스는 여러 상호 연관된 활동들로 구성되며, 이러한 활동들은 프로젝트의 특성, 개발 모델, 테스트 레벨 등에 따라 다르게 적용될 수 있습니다. 다음은 일반적인 테스트 프로세스의 주요 단계 및 활동입니다.
테스트 프로세스 주요 단계
1. 테스트 계획 (Test Planning)
테스트 활동의 목표와 접근 방식을 정의하고, 테스트 노력을 계획하며, 필요한 자원 및 일정을 수립하는 단계입니다.
- 테스트 범위 및 목적 정의: 무엇을 테스트하고 무엇을 테스트하지 않을 것인지 명확히 합니다. 테스트의 주요 목표를 설정합니다.
- 테스트 전략 수립: 정의된 테스트 범위와 목적을 달성하기 위한 접근 방식을 결정합니다. 테스트 레벨, 테스트 유형, 테스트 기법 등을 고려합니다.
- 테스트 활동 정의 및 일정 계획: 수행할 구체적인 테스트 활동들을 식별하고 각 활동에 대한 일정을 수립합니다.
- 자원 및 역할 할당: 테스트 활동에 필요한 인력, 장비, 도구 등의 자원을 식별하고 각 역할에 대한 책임을 할당합니다.
- 위험 분석 및 관리 계획 수립: 테스트와 관련된 잠재적인 위험을 식별하고 해당 위험에 대한 완화 또는 대응 계획을 수립합니다.
- 테스트 완료 기준 정의: 테스트 활동이 언제 종료될지에 대한 기준을 명확히 정의합니다. (예: 특정 테스트 케이스 통과율, 결함 밀도 등)
- 테스트 계획서 작성: 위의 내용을 포함하는 테스트 계획 문서를 작성하고 이해관계자들의 승인을 받습니다.
2. 테스트 모니터링 및 제어 (Test Monitoring and Control)
테스트 활동의 진행 상황을 추적하고, 계획과의 차이를 분석하며, 필요한 경우 테스트 활동을 조정하는 지속적인 프로세스입니다.
- 테스트 진행 상황 추적: 테스트 케이스 실행 현황, 결함 발견 및 수정 추이 등을 지속적으로 모니터링합니다.
- 테스트 메트릭 수집 및 보고: 테스트 활동의 효율성과 효과성을 측정하기 위한 메트릭(Metric)을 수집하고 보고서를 작성하여 이해관계자들에게 공유합니다.
- 계획과의 차이 분석: 실제 테스트 진행 상황과 테스트 계획 간의 차이를 분석하고 그 원인을 파악합니다.
- 테스트 활동 조정 및 통제: 분석 결과를 바탕으로 테스트 일정을 조정하거나, 자원을 재분배하거나, 테스트 범위를 변경하는 등 필요한 조치를 취하여 테스트 활동을 제어합니다.
3. 테스트 분석 (Test Analysis)
테스트 대상 시스템의 요구사항, 설계 문서 등 테스트 베이시스를 분석하여 테스트할 항목(Test Condition)을 식별하는 단계입니다.
- 테스트 베이시스 검토: 요구사항 명세서, 설계 문서, 유스케이스, 사용자 스토리 등 테스트의 근거가 되는 문서를 상세히 검토합니다.
- 테스트 조건 식별: 테스트 베이시스를 기반으로 테스트해야 할 기능, 비기능 특성, 구조적 요소 등을 구체적인 테스트 조건으로 도출합니다. (무엇을 테스트할 것인가?)
- 테스트 가능성 평가: 식별된 테스트 조건들이 실제로 테스트 가능한지 여부를 평가하고 필요한 경우 테스트 베이시스에 대한 질문이나 수정을 요청합니다.
4. 테스트 설계 (Test Design)
테스트 분석 단계에서 식별된 테스트 조건을 충족시키기 위한 테스트 케이스를 설계하는 단계입니다. 어떤 "어떻게" 테스트할 것인가를 정의합니다.
- 테스트 케이스 설계: 식별된 테스트 조건에 따라 입력값, 실행 사전 조건, 예상 결과, 실행 사후 조건 등을 포함하는 테스트 케이스를 구체적으로 설계합니다. 다양한 테스트 설계 기법(동등 분할, 경곗값 분석, 상태 전이 테스트, 결정 테이블 테스트, 커버리지 기반 기법 등)이 활용됩니다.
- 테스트 데이터 식별 및 설계: 테스트 케이스 실행에 필요한 테스트 데이터를 식별하고 설계합니다.
- 테스트 환경 요구사항 식별: 테스트 실행을 위해 필요한 하드웨어, 소프트웨어, 네트워크 등의 테스트 환경 요구사항을 식별합니다.
5. 테스트 구현 (Test Implementation)
테스트 설계 단계에서 정의된 테스트 케이스를 실행 가능한 형태로 구현하고, 테스트 환경을 준비하는 단계입니다.
- 테스트 절차 개발: 테스트 케이스들을 특정 순서에 따라 실행하기 위한 테스트 절차(Test Procedure) 또는 테스트 스크립트(Test Script)를 작성합니다.
- 테스트 데이터 준비: 설계된 테스트 데이터 요구사항에 따라 실제 테스트 데이터를 생성하거나 수집합니다.
- 테스트 환경 구축 및 확인: 식별된 테스트 환경 요구사항에 따라 테스트 실행을 위한 환경을 구축하고 올바르게 설정되었는지 확인합니다.
- 테스트 스위트 구성: 관련 있는 테스트 케이스들과 테스트 절차들을 묶어 테스트 스위트(Test Suite)를 구성합니다.
6. 테스트 실행 (Test Execution)
구현된 테스트 절차에 따라 테스트 케이스를 실행하고, 실제 결과와 예상 결과를 비교하며, 발견된 결함을 보고하는 단계입니다.
- 테스트 실행: 계획된 순서와 절차에 따라 테스트 케이스를 실행합니다.
- 결과 기록: 각 테스트 케이스의 실행 결과(통과, 실패, 미실행 등)와 실제 결과(관찰된 시스템 동작)를 기록합니다.
- 예상 결과와 실제 결과 비교: 테스트 케이스에 명시된 예상 결과와 테스트 실행 시 관찰된 실제 결과를 비교하여 불일치하는 경우를 식별합니다.
- 결함 보고: 예상과 다른 결과(실패)가 발생하면 결함을 상세히 기록하고 결함 관리 시스템에 등록합니다. 결함의 심각도, 발생 조건, 재현 절차 등을 명확히 기술합니다.
- 재테스팅 (Retesting): 수정된 결함이 성공적으로 해결되었는지 확인하기 위해 해당 결함을 발견했던 테스트 케이스를 다시 실행합니다.
- 회귀 테스트 (Regression Testing): 결함 수정이나 기능 변경으로 인해 기존 기능에 부작용이 없는지 확인하기 위해 관련 테스트 케이스들을 다시 실행합니다.
7. 테스트 완료 (Test Completion)
정의된 테스트 완료 기준이 충족되거나 프로젝트의 특정 마일스톤에 도달했을 때 테스트 활동을 공식적으로 종료하는 단계입니다.
- 테스트 완료 기준 평가: 테스트 계획서에 정의된 테스트 완료 기준이 충족되었는지 평가합니다.
- 테스트 산출물 관리: 테스트 계획서, 테스트 케이스, 테스트 결과 보고서, 결함 보고서 등 테스트 과정에서 생성된 모든 산출물을 최종적으로 정리하고 관리합니다.
- 테스트 프로세스 평가: 수행된 테스트 프로세스 자체를 평가하여 개선점을 도출합니다.
- 테스트 종료 보고서 작성: 테스트 활동의 요약, 결과, 발견된 결함 현황, 테스트 커버리지, 다음 릴리즈를 위한 권고 사항 등을 포함하는 테스트 종료 보고서를 작성하고 이해관계자들에게 공유합니다.
- 테스트 환경 정리: 테스트 실행에 사용되었던 테스트 환경을 정리하고 필요한 경우 다음 테스트 활동을 위해 보존합니다.
이러한 테스트 프로세스 단계들은 순차적으로 진행될 수도 있지만, 애자일과 같은 반복적인 개발 모델에서는 여러 단계가 중첩되거나 반복적으로 수행될 수 있습니다. CSTS 자격증 시험에서는 각 단계의 목적과 주요 활동, 그리고 단계 간의 관계를 이해하는 것이 중요합니다.