나랑 now
[CSTS 요약] 2 테스트 분류와 테스팅 방법 본문
테스트 분류
소프트웨어 테스트는 테스트 레벨, 테스트 유형, 테스트 설계 기법에 따라서 다양하게 분류됨
- 테스트 레벨: 컴포넌트, 통합, 시스템, 인수 테스트
- 테스트 유형: 기능 테스트와 성능, 신뢰성, 보안 등 비기능 테스트
- 테스트 설계 기법: 정적, 동적 테스트
테스트 레벨에 의한 분류
테스트 레벨에 따라 컴포넌트(단위), 통합, 시스템, 인수 테스트로 분류
테스트 기법 | 설명 |
컴포넌트/단위 테스트 | 시스템을 구성하는 단위 모듈을 테스트 대상으로 하여 개별 단위 모듈을 독립적으로 테스트 |
통합 테스트 | 시스템을 구성하는 단위 모듈들이 정확하게 통합되었는지에 초점을 둠 시스템 내부 구성 모듈과 이들 간의 관계를 정의한 구조 설계 명세서를 바탕으로 테스트 진행 |
시스템 테스트 | 전체 시스템을 테스트 대상으로 하여 테스트 진행 요구사항 명세서에 명시된 방식대로 시스템이 동작하는지 확인하는 데 초점을 둠 |
인수 테스트 | 시스템 테스트와 마찬가지로 전체 시스템을 하나의 단위로 보고 테스트 진행 시스템 테스트와 달리 고객/사용자의 관점에서 고객이 기대하는 방식으로 소프트웨어 동작 확인 |
레벨 테스트는 일반적인 소프트웨어의 개발 단계(요구 분석, 구조 설계 또는 아키텍처 설계, 상세 설계)와 밀접한 연관이 있음
테스트는 컴포넌트, 통합, 시스템, 인수 테스트 순서로 진행되며, 각 테스트는 개발의 각 단계를 기준으로 진행됨
테스트 유형에 의한 분류
요구사항 명세서에는 테스트를 통해 확인코자하는 소프트웨어의 동작 및 특성에 대한 기준이 정의되며, 기능 요구사항과 품질 요구사항을 포함함
테스트 유형 | 설명 |
기능 테스트 | 기능 요구사항 측면의 결함 검출 및 충족 여부 확인 목적 모든 테스트 수준에서 진행 |
비기능 테스트 | 성능, 보안성, 신뢰성 등 품질 요구사항 측면의 결함 검출 및 충족 여버 확인 목적 시스템, 인수 테스트 수준에서 진행 |
테스트 설계 기법에 따른 분류
설계 기법에 따라 정적 테스트와 동적 테스트로 분류
정적 테스트는 리뷰와 정적 분석으로 분류
동적 테스트는 명세 기반 테스트, 구조 기반 테스트, 경험 기반 테스트로 분류
- 정적 테스트
테스트 대상을 실행하지 않는 방식으로 테스트 수행 - 리뷰: 산출물에 존재하는 결함을 검출하거나 프로젝트 진행 상황을 점검하기 위한 활동으로 전문가 그룹 수행
순서: 1) 경영진 준비 2) 리뷰 계획 3) 리뷰 절차 개요 설명 4) 작업물 개요 설명 5) 개별 준비 6) 그룹 검토 7) 재작업 8) 후속 작업
구분: 관리 리뷰, 기술 리뷰, 인스펙션, 워크쓰루, 감사정적 분석
리뷰 유형 | 설명 |
관리 리뷰 | 프로젝트 진행 상황에 대한 검토 바탕으로 일정, 인력, 범위 등에 대한 통제 및 의사 결정 지원 |
기술 리뷰 | 정의된 계획 및 명세 준수사항 검토 수행 |
인스펙션 | 문제를 식별하고 문제에 대한 올바른 해결 검증 |
워크쓰루 | 문제를 식별하고 더 나아가 대안 조사, 개선 활동, 학습 기회 제공 수행 |
감사 | 객관적인 표준과 규제에 대한 준수를 독립적으로 평가 |
- 정적 분석: 산출물(주로 소스 코드)의 구조적 속성을 이용하여 자동화된 방식으로 도구에 의해서 수행됨
- 동적 테스트
테스트 대상을 실행하여 결함을 검출하는 방법
적절한 입력값을 결정하는 테스트 케이스 개발 필요
존재할 수 있는 결함을 누락하지 않으면서 테스트 비용 절감을 위한 가능한 한 적은 수의 테스트 케이스 설계 - 명세 기반 테스트: 소스코드 참고하지 않고 테스트케이스 결정
- 구조 기반 테스트: 구현된 소스 코드 참고하여 테스트 케이스 결정
명세 기반 테스트 | 구조 기반 테스트 |
동등 분할 분류 트리 기법 경계값 분석 신택스 테스트 조합 테스트 상태 전이 테스트 인과 그래핑 결정표 테스트 시나리오 테스트 |
문장 테스트 결정 테스트 조건 테스트 결정/조건 테스트 다중 조건 테스트 변형 조건/결정 테스트(MCDC) 기본 경로 테스트 |
- 경험 기반 테스트: 기존 테스트 경험, 테스트 대상이 되는 시스템 및 도메인에 대한 경험 등을 바탕으로 수행하는 테스트
오류 추정: 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함 검출되도록 설계하는 기법
탐색적 테스트: 사전 테스트 설계가 아닌, 테스트 대상에 대한 이해, 테스트 케이스 설계, 테스트 실행을 병행하는 방식
테스팅 방법
리그레션 테스트
소프트웨어 변경 후에 수행되는 테스트
소프트웨어에 가해진 변경이 의도하지 않은 결함을 만들지는 않았는지, 시스템이 기존의 요구사항을 충족하는지 검증
Retest-all 전략, 선택적 리그레션 테스트 전략, 테스트 최소화 전략, 테스트 우선 순위화 전략
소프트웨어가 변경되면 각 레벨 테스트 순서대로 리그레션 테스트 수행
소프트웨어 생명 주기 모델과 테스트
소프트웨어 생명 주기는 소프트웨어 개발 체계의 추상적 표현이며 순차적 또는 병렬적인 일련의 단계로 구성됨
순차적 생명 주기 모델의 경우, 테스트는 구현이 완료된 시점에 1회만 수행(ex. 폭포수 모델, V-모델)
진화적 모델과 애자일 모델의 경우, 반복적이고 점진적으로 수행
위험 기반 테스트
피처에 대한 위험 분석을 바탕으로 테스트 계획과 설계, 실행 등의 활동을 수행하는 것
주어진 자원 내 테스트 목적 달성을 위해 테스트 범위와 대상을 결정해야하며, 테스트 미수행에 따른 위험을 고려해야 함
테스트 제외에 따른 위험 수준이 높은 것은 대상에 반드시 포함
모델 기반 테스트
테스트 절차를 수행할 수 있는 정보가 자동으로 추출될 수 있을 정도로 정형화되고 상세한 모델 바탕
모델 구축 후에는 자동화를 통해 효율적인 테스트를 수행할 수 있으나, 테스트의 근간이 되는 정형적이고 상세한 테스트 모델을 구축하는 비용이 추가됨
'자격증 > CSTS' 카테고리의 다른 글
[CSTS 요약] 6 소프트웨어 생명 주기 모델과 테스트 (1) | 2024.01.24 |
---|---|
[CSTS 요약] 5 위험 기반 테스트 (0) | 2024.01.24 |
[CSTS 요약] 4 품질 특성과 비기능 테스트 (1) | 2024.01.23 |
[CSTS 요약] 3 소프트웨어 개발 단계와 테스트 (0) | 2024.01.23 |
[CSTS 요약] 1 테스트 개요 (1) | 2024.01.13 |