애플리케이션 테스트 케이스 작성
동적 테스트
화이트박스 테스트(구조 기반 테스트)
- 각 응용 프로그램의 내부 구조와 동작을 검사하는 소프트웨어 테스트
- 구조 기반 테스트, 코드 기반 테스트, 로직 기반 테스트, 글래스(Glass) 박스 테스트라고도 부름
기본 구문
- 제어 흐름 그래프는 프로그램 구조를 효과적으로 나타낼 수 있는 도구
- 화이트박스 테스트 시에 우선 프로그램을 기본 블록과 제어 흐름으로 구성된 제어 흐름 그래프를 그린 후에 테스트 케이스를 추출
- 가장 좋은 화이트박스 테스트는 프로그램의 모든 경로를 최소한 한 번은 테스트하는 방법이지만, 프로그램 경로가 많으므로 불가능에 가까움
- 대안으로 일부 경로만 테스트하는 방법을 화이트박스 테스트에서는 주로 사용하고 있음
테스트 커버리지 개념
- 프로그램의 테스트 수행 정도를 나타내는 값으로 테스트 수행의 완벽성을 측정하는 도구
- 주어진 테스트 케이스에 의해 수행되는 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준
- 테스트의 정확성과 신뢰성을 향상하는 역할을 함
테스트 커버리지 유형
기능 기반 커버리지
- 테스트 대상 애플리케이션의 전체 기능을 모수로 설정하고, 실제 테스트가 수행된 기능의 수를 측정하는 방법
- 100% 달성을 목표로 하며, 일반적으로 UI가 많은 시스템의 경우 화면 수를 모수로 사용
라인 커버리지
- 애플리케이션 전체 소스 코드의 라인 수를 모수로 테스트 시나리오가 수행한 소스 코드의 라인 수를 측정하는 방법
- 단위 테스트에서는 이 라인 커버리지를 척도로 삼음
코드 커버리지
- 소프트웨어 테스트 충분성 지표 중 하나
- 소스 코드의 구문, 조건, 결정 등의 구조 코드 자체가 얼마나 테스트 되었는지를 측정하는 방법
- 일반적으로 테스트 커버리지라고 하면 코드 커버리지를 일컬음
테스트 커버리지의 구성
- 구문(문장, Statement), 결정(Decision), 조건(Condition), 결정 포인트(Decision Point)로 구성
- 소스 코드는 구문(문장)으로 구성되어 있고, 조건문에 대한 결정이 있고, 결정에 대한 각 조건식이 있음
- 참과 거짓에 대한 결정 포인트(분기 노드)가 있는데, 소스 코드상의 if, while, for, switch 문이 결정 포인트라고 할 수 있음
- 전체 조건식은 소스 코드에서 결정 포인트(분기 노드) 내에 있는 모든 조건문이고, 개별 조건식은 전체 조건식에 연산자(AND, OR 등)로 구분한 각각의 조건식임
구문(문장) 커버리지(Statement Coverage)
- 프로그램 내의 모든 명령문을 적어도 한 번 수행하는 테스트 커버리지
- 조건문 결과와 관계없이 구문 실행 개수로 계산
결정 커버리지(Decision Coverage)
- (각 분기의) 결정 포인트 내의 전체 조건식이 적어도 한 번은 참(T)과 거짓(F)의 결과를 수행하는 테스트 커버리지
- 선택 커버리지(Decision Coverage), 분기 커버리지(Branch Coverage)라고도 함
- 구문 커버리지를 포함함
조건 커버리지(Condition Coverage)
- (각 분기의) 결정 포인트 내의 개별 조건식이 적어도 한 번은 참(T)과 거짓(F)의 결과가 되도록 수행하는 테스트 커버리지(전체 조건식의 영향은 고려하지 않음)
블랙박스 테스트(명세 기반 테스트)
- 프로그램 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트(기능 테스트)
- 모든 종류의 소프트웨어 시스템에 대해 테스트가 가능
- 전체 소프트웨어 테스트 레벨(단위, 통합, 시스템, 인수)에서 적용할 수 있는 기법
동등 분할 테스트(Equivalence Partitioning Testing)
- 입력 데이터의 영역을 유사한 도메인별로 유효값/무효값을 그룹핑하여 대푯값 테스트 케이스를 도출하여 테스트하는 기법
- 동치 분할 테스트, 균등 분할 테스트, 동치 클래스 분해 테스트라고도 부름
경곗값 분석 테스트(Boundary Value Analysis Testing)
경곗값 분석 테스트 개념
- 등가 분할 후 경곗값 부분에서 오류 발생 확률이 높기 때문에 경곗값을 포함하여 테스트 케이스를 설계하여 테스트하는 기법
- 최솟값 바로 위, 최대치 바로 아래 등 입력값의 극한 한계를 테스트하는 기법
- 한곗값 테스트라고도 부름
경곗값 분석 테스트 특징
- 다수의 오류가 입력 영역의 경계에서 발생
- 대부분의 경우 동등 분할 테스트와 함께 사용
경곗값 선택 기준
- 값의 범위 : 범위의 끝에 속하는 유효 입력값, 범위 바로 바깥에 속하는 유효하지 않은 입력값
- 몇 개의 값 : 입력값의 최솟값과 최댓값, 최솟값과 최댓값의 바로 아래와 바로 위의 값
- 파일, 리스트, 테이블과 같은 정렬된 집합 형태 : 첫 번째 항목과 마지막 항목
- 그 외 : 개인의 독창성과 직관에 따라 경계에 해당하는 여러 값 선택
경곗값 선택 방법
2-value
- 경계에 있는 값
- 바로 위, 아래 중 하나의 값(경계가 유효하면 유효하지 않은 값, 유효하지 않으면 유효한 값 선택)
3-value
- 경계에 있는 값
- 경계 바로 위의 값
- 경계 바로 아래의 값
결정 테이블 테스트(Decision Table Testing)
- 요구사항의 논리와 발생 조건을 테이블 형태로 나열하여, 조건과 행위를 모두 조합하여 테스트하는 기법
- 입력 조건은 모든 조합에 대한 시스템의 액션을 고려하여 테스트 케이스를 도출하는 기법
- 특징으로는 복잡한 논리적 관계를 표현하기 좋고, 누락된 요구사항 검사에 용이
상태 전이 테스트(State Transition Testing)
- 테스트 대상/시스템이나 객체의 상태를 구분하고, 이벤트에 의해 어느 한 상태에서 다른 상태로 전이되는 경우의 수를 수행하는 테스트 기법
- 시스템을 상태 전이도로 모델링 한 후 상태 전이도에서 테스트 케이스를 도출하는 기법
- 상태 전이도는 시스템 외부에서 들어오는 일련의 이벤트들에 대해 시스템 상태가 어떻게 전이되고 어떤 식으로 반응하는가를 나타내는 도구
유스케이스 테스트(Use Case Testing)
- 시스템이 실제 사용되는 유스케이스로 모델링 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스를 명세화하여 수행하는 테스트 기법
분류 트리 테스트(Classification Tree Method Testing)
- SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하여 테스트하는 기법
- 시스템 또는 SW의 입력 및 동작을 다양한 기준으로 구분한 트리를 이용해서 테스트 케이스를 설계
- 동등 분할 영역을 구분하는 것과 유사하며, 동등 분할 테스트 커버리지 측정 원리와 동일
페어와이즈 테스트(Pairwise Testing)
- 테스트 데이터값 간에 최소한 한 번씩을 조합하는 방식이며, 이는 커버해야 할 기능적 범위를 모든 조합에 비해 상대적으로 적은 양의 테스트 세트를 구성하기 위한 테스트 기법
- 대부분의 결함이 두 입력값의 상호 작용에 기인하므로, 가능한 모든 입력값의 조합을 테스트한 것과 비슷한 효과를 얻음
- 상대적으로 적은 양의 테스트 세트 구성이 용이하고, 입력 변수 개수와 입력 가능 값이 많을수록 테스트 케이스 도출 복잡도가 높음
경험 기반 테스트
- 유사 소프트웨어나 유사 기술 평가에서 테스터의 경험을 토대로 한, 직관과 기술 능력을 기반으로 수행하는 테스트 기법
경험 기반 테스트 유형
탐색적 테스트(Exploratory Test)
- 테스트 스크립트 또는 테스트 케이스를 문서로 작성하지 않고 경험에 바탕을 두고 탐색적으로 기능을 수행해 보면서 테스트하는 기법
- 사전에 구체적으로 테스트 케이스를 설계하고 이를 바탕으로 테스트를 수행하는 방식이 아니라, 테스트 대상에 대한 이해, 테스트 케이스 설계, 테스트 실행을 병행하는 방식
- 무작위 테스팅이 아닌 중대한 테스트 위주, 테스트 엔지니어의 휴리스틱(Heuristics)한 능력 필요, 제품을 익히면서 테스트를 설계하고 테스트 수행
- 구성요소는 테스트 차터(Test Charter), 시간 제한(Time Boxing), 노트(Note), 회고(Debriefing)
오류 추정(Error Guessing)
- 개발자가 범할 수 있는 실수를 추정하고 이에 따른 결함이 검출되도록 테스트 케이스를 설계하여 테스트하는 기법
- 특정 테스트 대상이 주어지면 테스터의 경험과 직관을 바탕으로 개발자가 범할 수 있는 실수를 나열하고, 해당 실수에 따른 결함을 노출하는 테스트 수행
- 일반적으로 예상되지 않는 상황이 사용자 입력값으로 적절히 처리되고 있는지 확인할 때 유용
- 필수 입력, 입력 항목의 길이, 입력 항목의 형식, 입력값의 명시적 제약사항, 입력값의 묵시적 제약사항 등을 확인할 때 유용
'정보처리 > 소프트웨어개발' 카테고리의 다른 글
애플리케이션 테스트 관리 통합 테스트 1/2 (0) | 2025.05.02 |
---|---|
애플리케이션 테스트 관리 테스트 케이스 설계 4/4 (0) | 2025.05.01 |
애플리케이션 테스트 관리 테스트 케이스 설계 2/4 (0) | 2025.04.29 |
애플리케이션 테스트 관리 테스트 케이스 설계 1/4 (0) | 2025.04.28 |
제품 소프트웨어 패키징 매뉴얼 작성 및 버전 등록 4/4 (0) | 2025.04.27 |