Black Box Text & White Box Test
태그 :
- 개념
- - 소프트웨어 테스트는 테스트 정보 획득 대상에 따라 프로그램 내부 로직을 테스트하는 화이트박스 테스트와 외부명세를 보면서 하는 블랙박스 테스트로 나눠지며 이들은 동적 소프트웨어 테스트 법에 해당
I. 대표적 동적 테스트 법, 블랙박스 테스트와 화이트박스 테스트의 개요
가. 블랙박스 테스트와 화이트박스 테스트의 정의
- 소프트웨어 테스트는 테스트 정보 획득 대상에 따라 프로그램 내부 로직을 테스트하는 화이트박스 테스트와 외부명세를 보면서 하는 블랙박스 테스트로 나눠지며 이들은 동적 소프트웨어 테스트 법에 해당
나. 블랙박스 테스트와 화이트박스 테스트의 특징
- 블랙박스 테스트 : 기능 테스트, Data-Driven, I/O-Driven
- 화이트박스 테스트 : 구조 테스트, Logic-Driven
II. 블랙박스 테스트와 화이트박스 테스트의 기법
가. Black Box 테스트 기법 (기능)
기법 |
설명 |
동등분할 기법 (Equivalence Partitioning) |
예) 입력데이터가 값의 범위를 나타낼 때: x값이 0 ~ 100사이여야 한다면 시험사례를 (x<0), (0<=x<=100), (x>100)으로 분할하여 유형을 적용 |
경계값 분석 기법 (Boundary value Analysis) |
예) x값이 0∼100 사이여야 한다면 시험사례를 (x=0), (x=100), (x=-0.01), (x=100.1)을 시험 사례 유형으로 정의 |
오류예측 기법 (Error Guessing) |
예) 입력값 없이 Submit을 수행한다. 문법에 어긋난 입력을 시험한다 등 |
원인-결과 그래프 기법 (Cause-Effect Graphing) |
|
추적 매트릭스(Traceability Matrix) |
|
의사 결정 테이블(decision tables) |
|
상태 전이 테스트 (state transition diagram) |
|
나. White Box 테스트 기법 (구조)
기법 |
설명 |
제어구조 시험 (Control Structure Testing) |
|
루프시험 (Loop Testing) |
|
III. 블랙박스 테스트와 화이트박스 테스트의 비교
가. 블랙박스 테스트와 화이트박스 테스트의 비교
구분 |
White Box 테스트 |
Black Box 테스트 |
개념 |
- 프로그램 내부 로직을 참조하면서 모든 경로를 테스트 |
- 프로그램 외부명세(기능, I/F)로부터 직접 테스트 (Data, I/O 위주 테스트) |
특징 |
- 구조 테스트 - Logic-Driven 테스트 - 모듈 테스트 |
- 기능 테스트 - Data-Driven 테스트 - I/O-Driven 테스트 |
테스트 기법 |
- 제어 구조 시험 - 루프 시험 |
- 동등분할 기법 - 경계값 분석 기법 - 원인, 결과 그래프 기법 - 오류 예측 기법 |
관점 |
- 개발자 관점 |
- 사용자 관점 |
- Black Box 테스트 기법 (기능)
기법 |
설명 |
동등분할 기법 (Equivalence artitioning) |
예) 입력데이터가 값의 범위를 나타낼 때: x값이 0 ~ 100사이여야한다면 시험사례를 (x<0), (0<=x<=100), (x>100)으로 분할하여 유형을 적용 |
경계값 분석 기법 (Boundary value Analysis) |
예) x값이 0∼100 사이여야 한다면 시험사례를 (x=0), (x=100), (x=-0.01), (x=100.1)을 시험 사례 유형으로 정의 |
오류예측 기법 (Error Guessing) |
예) 입력값 없이 Submit을 수행한다. 문법에 어긋난 입력을 시험한다 등 |
원인-결과 그래프 기법 (Cause-Effect Graphing) |
|
2. White Box 테스트 기법 (구조)
기법 |
설명 |
제어구조 시험 (Control Structure Testing) |
|
루프시험 (Loop Testing) |
|
3. 화이트박스테스트 사례
1 right = 0; 2 for (j = 1; j <= n_questions; j++) { 3 if ( key[j] == answer[j] ) right++; 5 } 6 score = right/n_questions * 100; 7 if (score >= 90) grade = ‘A’; 9 else if (score >= 80) grade = ‘B’; 11 else if (score >= 70) grade = ‘C’; 13 else grade = ‘F’;
|
- 두개의 정답과 하나의 오답
- 1, 2, 3, 4, 5, 2, 3, 5, 2, 6, 7, 9, 11, 13, 14
- 한 개의 정답
- 1, 2, 3, 4, 5, 2, 6, 7, 8, 14
- 네개의 정답과 하나의 오답
- 1, 2, 3, 4, 5, 2, … … 6, 7, 8, 14
- 일곱개의 정답과 세개의 오답
- 1, 2, 3, 4, 5, 2, … … 6, 7, 9, 11, 12, 14
네개의 테스트 케이스: 모든 문장 적어도 한번씩 수행
기본 경로 테스트
- 프로그램의 제어흐름을 그래프로 나타내어 그래프 상에 존재하는 모든 경로를 테스트하기 위한 데이터를 기본 테스트 집합으로 선정.
- 기본 테스트 집합에 의하여 수행되는 프로그램 세그멘트의 선형적 조합.
기본 경로수 계산