[자격증] CSTS_FL 요약정리 (테스트 프로세스)
[자격증] CSTS_FL 요약정리 (테스트 프로세스)
테스트 프로세스 개요
1. 테스트 프로세스
- 소프트웨어 테스트는 체계적인 수행을 위해 계획과 관리가 필요함.
- 수행한 테스트를 평가하여 효과성과 효율성을 개선해야 한다.
2. 테스트 관리 프로세스 (계.모.종료)
계획 부터 모니터링,제어, 테스트 종료까지 함
- 계획서 작성, 현황 보고서 작성, 종료 보고서 작성
3. 동적 테스트 프로세스 (설.환.실.보)
- 테스트 설계/구현 => 환경 구축/관리 => 테스트 실행 => 결함 보고 등의 활동을 수행하는 프로세스.
- 테스트 계획서에 따라 동적 테스트를 수행하기 위한 활동으로 구성됨
3-1. 주요 활동
- 설계 및 구현
- 테스트 설계 및 구현 활동 수행
- 테스트 케이스 및 절차 작성
- 환경 구축 및 관리
- 테스트 환경 및 데이터 준비
- 테스트 실행
- 테스트 절차 실행 및 결과 기록
- 결함 보고 및 관리
- 검출된 결함 등록 및 추적
4. 조직 테스트 프로세스 (목.표. 는 조.개.프.자)
조직 차원에서 테스트 정책과 전략을 개발, 관리, 개선하는 프로세스이다.
테스트 수행 방법에 대한 구체적인 내용은 포함하지 않으며, 조직의 목표 및 원칙을 정의한다.
4.1 주요 활동
- 조직 테스트 명세 개발
- 조직의 테스트 목표를 기반으로 테스트 정책 명세서 및 전략 명세서 개발
- 조직 테스트 명세 활용 모니터링 및 제어
- 조직 내에서 테스트 명세서가 효과적으로 활용되는지 모니터링
- 필요 시 테스트 관리 활동을 제어
- 조직 테스트 명세 갱신
- 테스트 명세서 활용에 대한 피드백을 반영하여 지속적인 개선
4.2 주요 내용
- 테스트 목적 및 표준
- 테스트 조직 및 역할
- 테스트 프로세스 개선
- 테스트 자산 관리
- 위험 관리
- 테스트 선택 및 우선순위
- 테스트 문서화
- 형상 관리
- 결함 관리
- 자동화 도구 활용
- 수행 개별 테스트
5. 프로젝트 수준의 조직 테스트 전략
프로젝트 내 개별 테스트에 공통적으로 적용되는 전략을 수립하는 과정.
5.1 주요 전략 요소
- 위험 관리: 위험 조치(회피, 전가, 완화, 수용)
- 테스트 선택 및 우선순위 설정
- 자동화 도구 활용
- 형상 관리
- 수행 개별 테스트: 소프트웨어의 규모와 특성을 고려하여 레벨 테스트 및 유형 테스트를 정의
- 테스트 문서화
- 결함 관리
6. 개별 테스트 수준의 조직 테스트 전략
프로젝트 수준의 조직 테스트 전략을 기반으로, 수행할 개별 테스트별로 세부적인 전략을 수립하는 과정임.
6.1 주요 전략 요소
- 테스트 독립성: 테스트 수행의 신뢰성을 높이기 위해 독립적인 테스트 팀을 운영
- 재테스팅 및 리그레이션 테스팅: 수정된 코드에 대한 테스트를 반복 수행하여 새로운 결함이 발생하지 않도록 확인
- 테스트 시작 및 종료 조건: 테스트 수행을 시작하고 종료할 기준 정의
- 테스트 설계 기법: 테스트 케이스를 효과적으로 설계하기 위한 기법 적용 (예: 동등 분할, 경계값 분석)
- 테스트 환경 및 테스트 데이터: 테스트 수행에 필요한 환경 및 데이터 준비
- 테스트 메트릭: 테스트 진행 상황과 품질을 측정하기 위한 지표 설정
- 테스트 문서화: 테스트 계획, 테스트 케이스, 테스트 결과 등을 문서로 기록
- 테스트 완료 기준: 테스트 종료를 결정하는 기준 수립 (예: 주요 기능의 결함이 모두 수정되었는지 확인)
7. 테스트 산출물 간의 관계
7.1 산출물 요약
- 조직 테스트 프로세스
- 조직 테스트 정책 명세서
- 조직 테스트 전략 명세서
- 테스트 관리 프로세스
- 테스트 계획서
- 테스트 현황 보고서
- 테스트 종료 보고서
- 동적 테스트 프로세스
- 테스트 설계 명세서
- 테스트 케이스 명세서
- 테스트 절차 명세서
- 테스트 환경 요건 명세서
- 테스트 데이터 요건 명세서
- 테스트 환경 준비 보고서
- 테스트 데이터 준비 보고서
- 테스트 실행 로그
- 결함 보고서
- 결함 추적 보고서
7.2 산출물 간의 관계
- 조직 테스트 정책 명세서는 조직 수준에서 최상위 문서로 개발됨.
- 조직 테스트 전략 명세서를 기반으로 동적 테스트 프로세스 수행을 위한 테스트 계획서가 개발됨.
- 테스트 계획서는 프로젝트 수준과 개별 테스트 수준에서 개발됨.
- 개별 테스트 계획은 컴포넌트 테스트, 통합 테스트 등의 레벨 테스트 계획과 성능 테스트, 신뢰성 테스트 등의 유형 테스트 계획을 포함.
- 개별 테스트 수행 과정에서 동적 테스트 프로세스의 산출물이 작성됨.
- 테스트 실행 시 테스트 절차를 실행하고, 그 결과를 테스트 실행 로그에 기록함.
- 동적 테스트 프로세스 수행 상황을 모니터링하여 테스트 현황 보고서를 작성함.
테스트 계획 (Test Planning)
테스트 계획은 테스트 관리 프로세스의 시작 활동으로, 동적 테스트를 효과적이고 효율적으로 수행하기 위한 계획을 수립하는 것이 주. 조직의 테스트 프로세스 결과물을 바탕으로 수립됨.
테스트 컨텍스트 (Test Context)
테스트 수행의 배경(대상, 범위 등) 을 규정.
1. 위험 분석 (Risk Analysis) (완.수.회.전)
- 테스트를 방해할 수 있는 위험 요소를 사전에 식별, 분석하고 대응 계획을 수립함.
- 위험 완화 (Risk Mitigation): 발생 가능성을 낮추거나 영향도를 줄여 위험도를 감소시킴
- 위험 수용 (Risk Acceptance):
- 위험도가 매우 낮아 모니터링만 수행
- 대응 비용이 너무 많이 소요되는 경우
- 위험 회피 (Risk Avoidance): 위험 요소의 발생 가능성을 제거하여 원천적으로 예방
- 위험 전가 (Risk Transfer): 위험을 타 조직(외부 업체 등)에 이관
2. 테스트 전략 (Test Strategy)
- 효과적이고 효율적인 테스트 수행을 위한 전략을 결정.
3. 테스트 수행 계획 수립 (Test Execution Planning)
- 테스트 조직, 인력, 역할, 활동 및 일정 등의 수행 계획을 수립.
4. 가정 및 제약 사항 (Assumptions and Constraints)
테스트 수행 시 반드시 고려하거나 준수해야 할 사항을 파악.
- 표준, 정책, 전략
- 일정, 비용, 인력
5. 이해관계자 (Stakeholders)
테스트 프로젝트 결과에 영향을 받는 이해관계자를 파악하고 의사소통 방법을 결정.
- 예: 개발팀, 마케팅팀, 운영팀 등
테스트 컨텍스트 명세 (Test Context Specification)
1. 테스트 계획 유형
- 테스트 계획서가 목표로 하는 테스트 유형을 명시함.
2. 테스트 대상 (Test Target)
테스트하고자 하는 대상을 식별하고 명확하게 기술.
- 컴포넌트 테스트 (컴): 서브시스템, 컴포넌트, 클래스, 함수 등 개별 요소
- 통합 테스트 (통): 시스템을 구성하는 각 요소 간의 연결(클래스 간, 함수 간 연결 등)
- 시스템 테스트 (시): 시스템 전체
- 인수 테스트 (인): 최종 사용자 관점에서 시스템 전체 검증
3. 테스트 범위 (Test Scope)
기능 및 비기능 테스트 대상 피처(feature)를 나열.
- 컴포넌트 테스트 (컴): 각 컴포넌트의 기능적 요구사항 검증
- 통합 테스트 (통): 컴포넌트 간의 연결 및 동작 검증
- 시스템 테스트 (시): 시스템 전체의 기능 및 비기능 요구사항 검증
- 인수 테스트 (인): 최종 사용자 관점에서의 기능 및 비기능 요구사항 검증
테스트 전략 수립 (Test Strategy Planning)
1. 테스트 계획 유형
프로젝트 내에서 수행될 개별 테스트 및 유형 테스트를 나열합니다.
- 개별 테스트 : 프로젝트 테스트에 포함될 레벨 테스트 및 유형 테스트를 나열
- 레벨 테스트: 컴포넌트(컴), 통합(통), 시스템(시), 인수(인)
- 유형 테스트: 기능(기), 사용성(사), 신뢰성(신), 효율성(효), 유지보수성(이), 이식성(성), 보안(보), 유효성(유)
- 보안 테스트는 시스템 수준에서만 수행됨
테스트 산출물
- 테스트를 수행하며 작성할 산출물을 정의
테스트 설계 기법
- 테스트 케이스 작성 및 실행을 위한 설계 기법 적용
테스트 환경 요건
- 컴포넌트/통합 테스트 : 개발자 환경에서 테스트 실행 (기능 테스트 초점)
- 시스템/인수 테스트 : 테스트 전용 환경 구성 (기능 + 비기능 요구사항 테스트 수행)
테스트 데이터 요건
- 테스트 케이스 실행을 위해 필요한 데이터 정의
재테스팅 및 리그레이션 테스팅
- 재테스팅 : 결함이 해결되었는지 검증하기 위해 해당 테스트 케이스를 반복 실행
- 리그레이션 테스팅 : SW 변경 후, 기존 기능이 정상 동작하는지 여러 레벨에서 수행
테스팅 중단 및 재시작 조건
- 테스트 계획에 따라 테스트 활동을 중단하거나 다시 시작할 수 있는 조건을 명시
테스트 메트릭
- 테스트 수행과 결과를 정량적으로 판단
- ⚡ 커버리지 측정 가능
- 결함 나이 : 결함이 보고되고 해결될 때까지 걸린 시간 (open ~ closed)
테스트 완료 기준
- 테스트 완료 여부를 판단할 객관적인 기준
- 테스트 케이스 기준 : “90% TC가 통과해야 한다”, “TC10번과 TC20번은 반드시 통과해야 한다” 등
- 테스트 커버리지 기준 : “95% 문장 커버리지를 충족해야 한다” 등
- 결함 기반 기준 : “2개 이하의 결함만 허용” 등
조직 테스트 전략과의 차이점
- 조직의 테스트 전략과 프로젝트의 테스트 전략 간 차이점을 서술
테스트 수행 계획 수립
테스트 조직/인력 및 역할
- 관리자 : 계획 관리, 통제, 종료 관리
- 리더 : 계획 수립, 모니터링, 현황 보고, 종료 관리
- 분석가 : 위험 분석, 전략 수립
- 설계자 : 테스트 설계, 테스트 케이스 개발, 절차 개발, 환경 요건 명세, 데이터 요건 명세
- 환경 전문가 : 환경 구축, 데이터 준비
- 수행자 : 테스트 실행, 결함 보고
테스트 설계 및 구현 개요
- 테스트 계획서를 바탕으로 테스트 범위와 전략을 구체화
- 테스트 설계 명세서 작성
- 테스트 케이스(TC) 및 테스트 절차(T절차) 개발
- (테스트 케이스 명세서, 테스트 절차 명세서)
- 테스트 환경 요건 및 테스트 데이터 요건 정의
- (테스트 환경 요건 명세서, 테스트 데이터 요건 명세서)
테스트 설계 및 구현 활동
테스트 계획서 : 테스트 대상에 대한 테스트 범위를 피처(Feature)로 정의
테스트 설계 및 구현 활동
- 유사한 성격을 가진 피처들을 묶어 피처 집합(Feature Set)으로 정의
- 피처 집합 : 독립적인 테스트를 수행하는 단위
- 각 세부 피처에 대해 테스트 케이스(TC) 개발
- 하나의 세부 피처에 대해 복수개의 TC 개발 가능
테스트 설계 (피처 구체화)
피처 집합 식별
- 피처 집합 : 테스트 대상에 대해 식별된 피처들의 논리적 묶음
- 피처 집합은 이후 테스트 활동 수행 시 독립적으로 간주됨
피처 구체화
- 세부 피처는 테스트 베이시스(요구사항 명세서 등)를 기반으로 식별
- 테스트할 사항을 구체적으로 설명 (자연어, 표, 다이어그램 등 사용)
- 우선순위 결정 : 위험 분석 결과를 바탕으로 우선순위 지정
테스트 전략 구체화
- 테스트 계획에서 정의된 전략을 피처 집합별로 구체화
- 피처 특성을 고려하여 전략을 구체화
- 테스트 설계 기법 :
- 동등 분할 : One-to-One 동등 분할, 최소화 동등 분할, 조합 테스트 방법
- 분류 트리 기법 : 최소화 전략, 최대화 전략
- 경곗값 분석 : 2-value 경곗값 분석, 3-value 경곗값 분석
- 신택스 테스트 : One-to-One 동등 분할, 최소화 동등 분할, 조합 테스트 방법
- 조합 테스트 : each choice 테스트, 페어와이즈 테스트, all combination 테스트, base choice 테스트
- 상태 전이 테스트 : 상태 테스트, 단일 전이 테스트, all transition 테스트, 다중 전이 테스트
- 시나리오 테스트 : 기본 시나리오 테스트, 기본/대안 시나리오 테스트
2. 테스트 케이스 개발
목적
- 세부 피처를 바탕으로 구체적인 테스트 상황을 기술
- 각 테스트 케이스는 특정한 테스트 상황을 의미
테스트 케이스 요소
- 추적성 : 테스트 베이시스(요구사항 등)와의 연결
- 우선순위 : 높은 우선순위의 TC를 먼저 실행
- 선행 조건 : 실행을 위한 사전 조건
- 입력 : 입력값 및 제공 방식 명시
- 예상 결과 : 입력값에 대한 예상 출력, 동작 및 비교 방법
3. 테스트 절차 개발
목적
- 테스트 절차를 통해 테스트할 구체적인 상황을 기술
테스트 절차 요소
- 우선순위 : 높은 우선순위의 테스트 절차 우선 실행
- 시작 작업 : 실행 전 준비 사항
- 테스트 케이스 목록 : 실행 순서대로 기술
- 종료 및 정리 작업 : 테스트 종료 후 수행할 작업
- 다른 테스트 절차와의 관계 : 실행 순서와 관계 정의
4. 테스트 환경 요건 명세
주요 항목
- 하드웨어 및 시스템 소프트웨어 환경
- 외부 연동 시스템
- 공존 소프트웨어
- 테스트 도구
5. 테스트 데이터 요건 명세
주요 항목
- 테스트 대상에 대한 입력 데이터 : 테스트 실행에 필요한 입력값
- 테스트 대상의 상태 데이터 : 테스트 대상이 특정 상태가 되도록 설정하는 데이터
- 테스트 환경 항목의 상태 데이터 : 테스트 환경 설정에 필요한 데이터
6. 테스트 구현
테스트 데이터 준비
- 테스트 데이터 요건을 충족하는 데이터 확보 및 준비
- 준비된 테스트 데이터가 요구사항을 충족하는지 검토
테스트 환경 구축
- 테스트 환경 요건 명세서를 기준으로 환경 구축
- 하드웨어 및 소프트웨어 설치 및 설정
- 테스트 도구를 올바르게 설정 및 검토
7. 테스트 설계 및 구현 산출물
테스트 케이스 명세서
- 테스트 케이스 ID, 목적, 추적성, 우선순위, 선행 조건, 입력, 예상 결과
테스트 절차 명세서
- 목적, 우선순위, 시작 작업, 테스트 케이스 목록, 종료 및 정리 작업, 관계 기술
테스트 환경 요건 명세서
- 환경 이름, 설명, 요구사항, 필요 시기, 담당자
테스트 데이터 요건 명세서
- 데이터 이름, 설명, 요구사항, 초기화 필요 여부, 보관 필요 여부, 담당자
테스트 환경 준비 보고서
- 전체적인 환경 준비 상태 요약
- 각 테스트 환경 항목별 준비 상태 기술
테스트 데이터 준비 보고서
- 전체적인 데이터 준비 상태 요약
- 각 테스트 데이터 항목별 준비 상태 기술
테스트 실행
1. 테스트 환경 구축
- 테스트 환경 요건 명세서에 따라 환경을 구성
- 하드웨어 및 소프트웨어 설치 및 설정
- 테스트 도구 설정 및 검증
- 테스트 환경 준비 상태 확인
2. 테스트 절차 선정
우선순위 전략
- 피처 집합 우선순위 : 테스트할 기능의 중요도에 따라 결정
- 테스트 케이스 우선순위 : 결함 발견 가능성이 높은 테스트 케이스 우선 실행
- 테스트 절차 우선순위 : 시스템 구성 및 프로젝트 일정에 맞춰 결정
테스트 완료 기준 전략
- 사전 정의된 기준을 충족하면 테스트 종료
- 주요 결함 해결, 테스트 커버리지 만족, 테스트 일정 도달 여부 고려
3. 테스트 절차 실행
| 테스트 레벨 | 개발자 | 테스터 | 사용자 |
|---|---|---|---|
| 컴포넌트 테스트 | ✅ | ✅ | |
| 통합 테스트 | ✅ | ✅ | |
| 시스템 테스트 | ✅ | ✅ | ✅ |
| 인수 테스트 | ✅ | ✅ |
4. 테스트 결과 비교
- 각 테스트 케이스의 예상 결과와 실제 실행 결과 비교
- 비교 대상 : 화면, 소리, 진동, 파일, 데이터베이스, 네트워크 등
5. 테스트 실행 기록
- 시간대별 테스트 수행 내역 기록
- 예상과 다른 결과 또는 예상치 못한 이벤트 발생 시 상세 기술
- 결함 발생 시 결함 보고서 작성 및 식별자 기록
6. 결함 보고
테스트 결과 분석
- 결함 구체화 : 결함이 재현될 수 있도록 테스트 데이터, 절차, 환경 명확히 파악
- 결함 고립화 : 결함 발생에 영향을 미치는 요소(테스트 데이터, 절차, 환경)를 구체적으로 분석
- 결함 일반화 : 결함의 원인을 최대한 일반적으로 기술
결함 기록 항목
- 결함 컨텍스트 : 관련 테스트, 테스트 대상, 환경, 절차, 테스트 케이스
- 결함 설명 : 실제 결과 및 이상 상황 상세 기술
- 심각도(Severity) : 결함이 시스템에 미치는 영향 범위 및 크기 기술
- 우선순위(Priority) : 해결의 긴급성(보통 3~5단계)
- 위험 분석 : 결함으로 인한 위험도 분석 및 갱신
- 결함 상태 : 결함 추적을 위한 진행 상태 기록
7. 결함 추적
결함 생명 주기
| 상태 | 설명 |
|---|---|
| open | 결함 발견 및 분석 완료, 보고된 상태 |
| review | 결함 처리 방안 검토 중 |
| deferred | 결함 수정을 다음 릴리스로 연기 |
| assigned | 개발자에게 수정 요청됨 |
| resolved | 개발자가 결함 해결 후 처리 완료 |
| fixed | 결함이 수정됨 |
| duplicate | 기존 결함과 중복됨 |
| won’t fix | 긴급하지 않거나 수정하지 않기로 결정 |
| invalid | 결함이 아니거나 테스트 케이스 오류 |
| verified | 결함 수정이 확인됨 |
| reopen | 결함 수정이 정확하지 않은 경우 다시 오픈 |
테스트 모니터링, 제어 및 종료
1. 테스트 모니터링 및 제어
테스트 모니터링
- 테스트 진행 상황을 테스트 메트릭을 활용하여 파악
- 테스트 활동의 실제 진척도가 테스트 계획과 차이가 있는지 확인
- 테스트 중 발견된 위험 요소 식별 및 관리
- 결함 보고서 및 결함 추적 보고서를 활용하여 모니터링
테스트 활동 제어
- 동적 테스트 활동의 시작
- 테스트 계획서에 정의된 시작 조건 충족 시 진행
- 동적 테스트 활동의 종료
- 테스트 계획서에 명시된 종료 조건 충족 시 테스트 종료
- 테스트 계획과 실제 진행의 차이 확인 및 조치
- 위험 관리 수행
- 새로운 위험 식별 시 대응
- 기존 위험의 변경 사항 반영
2. 테스트 현황 보고
📌 보고 항목
- 보고 대상 기간 : 특정 테스트 활동이 진행된 기간
- 계획 대비 진척도 : 계획과 비교하여 테스트 진행 상황 분석
- 계획 대비 지연 원인 분석 : 프로젝트 일정에 미칠 영향 설명
- 테스트 메트릭 제공 : 진행률, 결함 발생률, 테스트 커버리지 등
- 신규 및 변경된 위험 분석
- 신규 위험 식별 및 대응 방안
- 기존 위험의 발생 가능성 및 영향도 변경
- 이후 테스트 계획
- 다음 보고 시점까지의 테스트 계획
- 발생한 문제 및 위험에 대한 대응 전략 포함
3. 테스트 종료
테스트 종료 시 수행 작업
- 테스트 수행 중 생성된 산출물 관리
- 테스트 종료 보고서 작성
4. 테스트 종료 보고서 구성
📝 테스트 종료 보고서 주요 내용
- 테스팅 요약
- 테스트 수행 개요 및 주요 성과
- 계획 대비 차이점
- 테스트 일정, 범위, 환경 등에서 발생한 차이 분석
- 테스트 방해 요인
- 일정 지연, 환경 문제 등 테스트 진행 중 발생한 장애 요소
- 테스트 메트릭
- 테스트 진행률, 결함 발견률, 결함 해결률, 커버리지 등
- 결함 목록
- 발견된 결함, 수정된 결함, 해결되지 않은 결함 정보
- 잔존 위험 분석
- 해결되지 않은 결함과 그에 따른 위험 평가
- 테스트 완료 평가
- 프로젝트 목표 충족 여부 판단
- 테스트 산출물 관리
- 테스트 케이스, 테스트 결과, 결함 보고서 등
- 재사용 가능한 테스트 자산
- 향후 테스트에 활용 가능한 테스트 케이스, 스크립트 등
- 교훈 및 개선 사항
- 테스트 수행 과정에서 얻은 인사이트 및 향후 개선 방향
This post is licensed under CC BY 4.0 by the author.
