공부해보잠
테스트 기법에 따른 애플리케이션 테스트 본문
화이트박스 테스트(White Box Test)
화이트박스 테스트는 모듈의 원시 코드(소스 코드)를 직접 확인하면서 논리적인 경로를 테스트하는 방식입니다. 소프트웨어 내부의 제어 흐름과 코드 구조를 분석하여 테스트 케이스를 설계하는 구조적 테스트 기법입니다.
특징
- 소프트웨어의 내부 코드, 논리 흐름을 기반으로 테스트 수행
- 프로그램의 제어 구조(조건문, 루프 등)에 따라 모든 코드가 최소 한 번 이상 실행되도록 설계
- 테스트 과정의 초기 단계(단위 테스트)에서 주로 적용
- 코드의 모든 문장을 실행하여 논리적인 오류를 검출
- 모듈 내부의 동작을 직접 관찰하여 상세한 결함을 찾아낼 수 있음
화이트박스 테스트의 종류
화이트박스 테스트는 소프트웨어 내부의 코드 구조를 분석하여 논리적인 오류를 검출하는 테스트 기법입니다.
화이트박스 테스트는 크게 기초 경로 검사(Basic Path Testing) 와 제어 구조 검사(Control Structure Testing) 로 나뉩니다.
화이트박스 테스트의 주요 기법
종류 | 설명 |
기초 경로 검사 (Base Path Testing) | - 대표적인 화이트박스 테스트 기법 - 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 측정할 수 있도록 설계 - 프로그램 실행 경로의 기초를 정의하는 데 사용 |
제어 구조 검사 (Control Structure Testing) | - 프로그램의 제어 흐름을 분석하여 테스트 케이스를 설계하는 방법 |
조건 검사 (Condition Testing) | - 프로그램 내 존재하는 조건문(IF, SWITCH 등)의 모든 논리적 조건을 테스트하는 기법 |
루프 검사 (Loop Testing) | - 프로그램의 반복문(Loop)의 구조를 분석하여 테스트하는 기법 - 반복 구조 유형: 단순 루프, 중첩 루프, 연결 루프, 비구조적 루프 |
데이터 흐름 검사 (Data Flow Testing) | - 프로그램 내에서 변수의 정의와 사용 흐름을 추적하여 논리적 오류를 찾는 기법 |
화이트박스 테스트의 특징
- 코드의 모든 실행 경로를 테스트하여 숨겨진 논리적 오류를 발견
- 프로그램 내 모든 문장과 조건문이 최소 한 번 이상 실행되도록 보장
- 루프와 분기 구조를 철저히 분석하여 오류를 최소화
화이트박스 테스트는 코드의 논리적 결함을 찾아내는 데 효과적이지만, 전체적인 기능 검증을 위해 블랙박스 테스트와 함께 수행하는 것이 이상적입니다.
화이트박스 테스트의 검증 기준
화이트박스 테스트의 검증 기준은 테스트 케이스가 소스 코드의 실행을 얼마나 철저히 검증하는지를 평가하는 기준입니다. 이를 통해 테스트의 충분성을 측정할 수 있으며, 대표적인 검증 기준으로 문장 검증, 분기 검증, 조건 검증, 분기/조건 검증이 있습니다.
검증 기준 | 설명 | 특징 |
문장 검증 기준 (Statement Coverage) | 프로그램의 모든 구문이 최소 한 번 이상 실행되도록 테스트 케이스를 설계 | - 가장 기본적인 검증 기준 - 코드 내 모든 문장을 실행하지만 논리적 조건을 완전히 고려하지 않을 수 있음 |
분기 검증 기준 (Branch Coverage) | 소스 코드의 모든 조건문에 대해 True와 False를 최소 한 번씩 실행하는 테스트 케이스를 설계 | - 결정 검증 기준(Decision Coverage)이라고도 함 - 조건문이 있는 모든 분기를 테스트하여 논리적 오류를 줄임 |
조건 검증 기준 (Condition Coverage) | 소스 코드 내 조건문의 개별 조건식이 True와 False를 최소 한 번 이상 실행되도록 테스트 케이스를 설계 | - 개별 조건식의 모든 경우를 테스트하여 논리적인 오류를 발견하는 데 효과적 |
분기/조건 검증 기준 (Branch/Condition Coverage) | 분기 검증 기준과 조건 검증 기준을 모두 만족하도록 설계하여 분기 및 개별 조건식이 모두 True와 False를 최소 한 번 실행되도록 테스트 | - 가장 엄격한 테스트 기준 - 분기 및 조건 검증을 동시에 수행하여 높은 신뢰성을 보장 |
- 문장 검증 기준은 모든 코드가 실행되었는지 확인하는 기본적인 방법이지만, 조건문을 충분히 테스트하지 못할 가능성이 있습니다.
- 분기 검증 기준은 모든 조건문의 실행 경로를 검사하여 논리적인 오류를 줄일 수 있습니다.
- 조건 검증 기준은 개별 조건식이 올바르게 동작하는지 확인하는 데 중점을 둡니다.
- 분기/조건 검증 기준은 가장 철저한 테스트 방식으로, 모든 실행 흐름을 테스트하므로 높은 품질을 보장하지만, 테스트 케이스의 수가 증가할 수 있습니다.
화이트박스 테스트의 검증 기준을 활용하면 보다 안정적인 소프트웨어를 개발할 수 있습니다.
검증 기준(Coverage)의 종류
테스트의 충분성을 평가하는 기준으로, 검증 기준에는 기능 기반 커버리지, 라인 커버리지, 코드 커버리지가 있습니다. 화이트박스 테스트에서 사용되며, 보통 문장 검증 기준, 분기 검증 기준 등이 모두 코드 커버리지에 해당합니다.
종류 | 설명 |
기능 기반 커버리지 | 실제 테스트가 수행된 기능의 수 / 전체 기능의 수를 비율로 측정 |
라인 커버리지 (Line Coverage) | 테스트 시나리오가 수행한 소스 코드의 라인 수 / 전체 소스 코드의 라인 수를 비율로 측정 |
코드 커버리지 (Code Coverage) | 소스 코드의 구문, 분기, 조건 등의 구조 코드 자체가 얼마나 테스트되었는지를 측정 |
검증 기준은 테스트의 철저함을 평가하는 중요한 요소이며, 코드의 품질과 신뢰성을 보장하는 데 활용됩니다.
블랙박스 테스트(Black Box Test)
블랙박스 테스트는 소프트웨어가 수행해야 할 기능을 중심으로 테스트하는 기법으로, 내부 구조를 고려하지 않고 입력과 출력 간의 관계를 중심으로 검증하는 기능 테스트입니다.
특징
- 사용자의 요구사항 명세를 기반으로 테스트를 수행
- 소프트웨어 인터페이스에서 실시하는 테스트
- 주로 구현된 기능이 정상적으로 동작하는지 검증
- 테스트 과정의 후반부에 적용되어 전체적인 기능 검증에 초점
블랙박스 테스트에서 발견할 수 있는 오류 유형
- 부정확하거나 누락된 기능
- 인터페이스 오류 (입력/출력 데이터의 불일치)
- 자료구조나 데이터베이스 접근 오류
- 성능 관련 오류
- 초기화 및 종료 시 발생하는 오류
블랙박스 테스트의 종류에는 동치 분할 검사, 경계값 분석, 원인-효과 그래프 검사, 오류 예측 검사, 비교 검사 등이 있다.
블랙박스 테스트의 종류
종류 | 설명 | 특징 |
동치 분할 검사(Equivalence Partitioning Testing) | 입력 자료의 범위를 클래스로 나누어 동등한 값들을 테스트하는 기법 | - 유효한 값과 무효한 값을 구분하여 각각 테스트 - 입력 조건을 여러 개의 동등 클래스(유효/무효)로 나누어 대표 값으로 테스트 |
경계값 분석 (Boundary Value Analysis) | 입력 조건의 경계값에서 오류가 발생할 확률이 높다는 점을 이용하여 테스트하는 기법 | - 동치 분할 검사의 보완 기법 - 입력값의 경계 부분을 테스트하여 결함을 찾음 |
원인-효과 그래프 검사(Cause-Effect Graphing Testing) | 입력 데이터 간 관계와 출력 결과의 영향을 체계적으로 분석하여 테스트하는 기법 | - 논리적인 결함을 효과적으로 찾을 수 있음 - 입력과 출력 간 관계를 그래프로 모델링 |
오류 예측 검사 (Error Guessing) | 과거의 경험이나 직관을 바탕으로 오류가 발생할 가능성이 높은 부분을 테스트하는 기법 | - 경험이 많은 테스터가 주로 활용 - 다른 방법으로 찾기 어려운 오류를 발견하는 데 효과적 |
비교 검사 (Comparison Testing) | 여러 버전의 프로그램이나 다른 소프트웨어와 비교하여 동일한 결과가 출력되는지 테스트하는 기법 | - 동일한 입력값을 여러 시스템에서 실행하여 결과 비교 - 예상치 못한 오류 발견에 유용 |
동치 분할 검사과 경계값 분석
애플리케이션 테스트에서는 입력값을 어떻게 선정하느냐가 중요한데,
이를 위해 동치 분할 검사와 경계값 분석이라는 두 가지 방법이 사용됩니다.
동치 분할 검사 (Equivalence Partitioning)
- 비슷한 특성을 가진 값들을 그룹(등급)으로 나누고, 각 그룹에서 대표값을 골라 테스트하는 방법입니다.
- 모든 값을 다 테스트하는 것이 아니라, 각 범위에서 하나만 선택해서 테스트하면 됩니다.
예제: 쇼핑몰 회원 등급
쇼핑몰에서는 구매 금액에 따라 회원 등급이 다릅니다.
- 0~9만 원 → Bronze
- 10~49만 원 → Silver
- 50~99만 원 → Gold
- 100만 원 이상 → VIP
테스트 케이스 (대표값 선택)
테스트 케이스 | 입력 값(만원) | 예상 결과 |
1 | 5 | Bronze |
2 | 30 | Silver |
3 | 75 | Gold |
4 | 120 | VIP |
각 범위에서 대표값 하나만 테스트하면 되므로, 테스트 개수를 줄이면서도 정확성을 확보할 수 있습니다.
경계값 분석 (Boundary Value Analysis)
- 각 범위의 "경계선" 부분을 집중적으로 테스트하는 기법입니다.
- 일반적으로 오류는 범위의 시작점이나 끝점에서 많이 발생하므로,
경계값을 철저히 테스트하여 오류를 찾아내는 것이 목적입니다.
예제: 학점 계산
- 90점 이상 → A
- 80~89점 → B
- 70~79점 → C
- 60~69점 → D
- 0~59점 → F
테스트 케이스 (경계값 테스트)
테스트 케이스입력 값(점수)예상 결과
테스트 케이스 | 입력 값(점수) | 예상 결과 |
1 | -1 | 오류 |
2 | 0 | F |
3 | 59 | F |
4 | 60 | D |
5 | 69 | D |
6 | 70 | C |
7 | 79 | C |
8 | 80 | B |
9 | 89 | B |
10 | 90 | A |
11 | 100 | A |
12 | 101 | 오류 |
경계값을 철저히 테스트하여, 범위가 올바르게 설정되어 있는지 확인할 수 있습니다.
정리: 두 기법의 차이점
구분동치 분할 검사경계값 분석
구분 | 동치 분할 | 경계값 분석 |
초점 | 각 그룹을 대표하는 값 테스트 | 범위의 경계선을 집중적으로 테스트 |
목적 | 전체적인 범위 검증 | 경계에서 발생할 수 있는 오류 확인 |
테스트 개수 | 적은 개수로 커버 가능 | 다소 많은 테스트 필요 |
사용 예시 | 쇼핑몰 회원 등급, 보험료 계산 | 학점 계산, 비밀번호 유효성 검사 |
출저 및 참고
정보처리 산업기사 기본서(시나공)
'자격증 > 정보처리' 카테고리의 다른 글
통합 테스트 (0) | 2025.02.02 |
---|---|
개발 단계에 따른 애플리케이션 테스트 (0) | 2025.02.02 |
애플리케이션 테스트의 분류 (0) | 2025.02.01 |
애플리케이션 테스트 (0) | 2025.02.01 |
개발 지원 도구 (0) | 2025.01.31 |