ㅈㄱㅈ/ㅊㄴㅅㄴ
테스트 설계 기법
SBP
2025. 4. 26. 22:58
CSTS 자격증 시험: 테스트 방법
CSTS 자격증 시험에서는 소프트웨어 테스트를 수행하는 다양한 방법에 대한 이해를 평가합니다. 테스트 방법은 크게 정적 테스트와 동적 테스트로 나눌 수 있으며, 동적 테스트는 다시 테스트 케이스 설계의 기반에 따라 여러 기법으로 세분화됩니다.
1. 정적 테스트 (Static Testing)
소프트웨어를 실행하지 않고 요구사항 명세서, 설계 문서, 소스 코드 등의 산출물을 분석하여 결함을 찾는 방법입니다. 개발 초기 단계에서 결함을 발견하는 데 효과적입니다.
- 리뷰 (Review): 여러 관계자(개발자, 테스터, 분석가 등)가 모여 문서나 코드를 검토하며 잠재적인 문제점을 식별합니다. 공식적인 형태(인스펙션)부터 비공식적인 형태(워크쓰루)까지 다양합니다.
- 정적 분석 (Static Analysis): 자동화된 도구를 사용하여 소스 코드의 문법 오류, 코딩 표준 위배, 잠재적인 런타임 오류 등을 분석합니다. 코드를 실행하지 않고 분석하기 때문에 모든 실행 경로를 검사하기 어려운 동적 테스트의 한계를 보완할 수 있습니다.
2. 동적 테스트 (Dynamic Testing)
소프트웨어를 직접 실행하여 실제 동작을 확인하고 결함을 찾는 방법입니다. 다양한 입력값을 넣어보고 예상되는 결과와 실제 결과를 비교합니다.
-
명세 기반 테스트 (Specification-based Testing) / 블랙박스 테스트 (Black-box Testing): 소프트웨어의 내부 구조나 구현 방식을 알지 못한 채 사용자의 요구사항, 기능 명세서, 설계 문서 등 외부 명세를 기반으로 테스트 케이스를 설계합니다. 소프트웨어가 "무엇을" 하는지에 초점을 맞춥니다.
- 동등 분할 (Equivalence Partitioning): 유효하거나 유효하지 않은 입력값의 범위를 여러 그룹(동등 클래스)으로 나누고 각 그룹에서 대표값을 선택하여 테스트 케이스를 만듭니다.
- 경곗값 분석 (Boundary Value Analysis): 입력값의 경계값 근처에서 오류가 자주 발생한다는 경험에 기반하여 경계값 자체와 경계값 바로 안팎의 값을 테스트 케이스로 선택합니다.
- 결정 테이블 테스트 (Decision Table Testing): 여러 조건의 조합에 따른 시스템의 동작을 명확하게 정의하고, 가능한 모든 조건 조합에 대한 테스트 케이스를 도출합니다.
- 상태 전이 테스트 (State Transition Testing): 시스템의 상태와 상태 간의 전이를 모델링하고, 유효하거나 유효하지 않은 상태 전이를 테스트합니다.
- 유스케이스 테스트 (Use Case Testing): 시스템이 사용자에게 가치를 제공하는 시나리오인 유스케이스를 기반으로 테스트 케이스를 도출합니다.
-
구조 기반 테스트 (Structure-based Testing) / 화이트박스 테스트 (White-box Testing): 소프트웨어의 내부 코드 구조, 로직, 제어 흐름 등을 이해한 상태에서 테스트 케이스를 설계합니다. 코드가 "어떻게" 동작하는지에 초점을 맞춥니다.
- 문장 커버리지 (Statement Coverage): 소스 코드의 모든 실행 가능한 문장을 한 번 이상 실행하는 테스트 케이스를 목표로 합니다.
- 결정 커버리지 (Decision Coverage) / 분기 커버리지 (Branch Coverage): 코드 내의 모든 결정 지점(if, while 등)에서 가능한 모든 분기(참/거짓)를 한 번 이상 실행하는 테스트 케이스를 목표로 합니다.
- 조건 커버리지 (Condition Coverage): 결정문 내의 각 개별 조건식이 참 또는 거짓 값을 한 번 이상 가지도록 하는 테스트 케이스를 목표로 합니다.
- 경로 커버리지 (Path Coverage): 프로그램의 가능한 모든 독립적인 실행 경로를 한 번 이상 실행하는 테스트 케이스를 목표로 합니다. (가장 강력하지만 실현하기 어려운 경우가 많습니다.)
-
경험 기반 테스트 (Experience-based Testing): 테스터의 경험, 지식, 직관, 그리고 이전에 발견된 결함에 대한 정보를 바탕으로 테스트 케이스를 설계하고 수행합니다. 명세나 구조만으로는 찾기 어려운 결함을 발견하는 데 유용할 수 있습니다.
- 오류 추정 (Error Guessing): 과거 경험이나 일반적인 오류 발생 경향을 바탕으로 오류가 존재할 가능성이 높은 부분을 예상하고 집중적으로 테스트합니다.
- 탐색적 테스트 (Exploratory Testing): 테스트 설계, 실행, 학습을 동시에 진행하는 비공식적인 테스트 방법입니다. 테스트 대상에 대한 이해를 높여가며 실시간으로 테스트 방향을 결정합니다.
CSTS 시험에서는 이러한 다양한 테스트 방법들의 기본적인 개념, 각 방법이 초점을 맞추는 부분, 그리고 각 기법의 특징 및 장단점을 이해하는 것이 중요합니다. 또한 특정 상황에 어떤 테스트 방법을 적용하는 것이 효과적인지에 대한 판단 능력을 평가할 수 있습니다.