Black Box Text & White Box Test

개념
- 소프트웨어 테스트는 테스트 정보 획득 대상에 따라 프로그램 내부 로직을 테스트하는 화이트박스 테스트와 외부명세를 보면서 하는 블랙박스 테스트로 나눠지며 이들은 동적 소프트웨어 테스트 법에 해당

I. 대표적 동적 테스트 법, 블랙박스 테스트와 화이트박스 테스트의 개요

가.  블랙박스 테스트와 화이트박스 테스트의 정의

- 소프트웨어 테스트는 테스트 정보 획득 대상에 따라 프로그램 내부 로직을 테스트하는 화이트박스 테스트와 외부명세를 보면서 하는 블랙박스 테스트로 나눠지며 이들은 동적 소프트웨어 테스트 법에 해당

나. 블랙박스 테스트와 화이트박스 테스트의 특징

- 블랙박스 테스트 : 기능 테스트, Data-Driven, I/O-Driven

- 화이트박스 테스트 : 구조 테스트, Logic-Driven

 

II. 블랙박스 테스트와 화이트박스 테스트의 기법

가. Black Box 테스트 기법 (기능)

기법

설명

동등분할 기법 (Equivalence Partitioning)

  • 프로그램의 입력 도메인을 테스트 케이스가 산출될 수 있는 데이터의 클래스로 분류하는 방법
  • 다양한 입력조건들을 갖춘 테스트케이스의 유형들을 분할: 상식적 경험에 의존(Heuristic)  
  • 각 테스트케이스 유형마다 최소의 테스트케이스 작성

예) 입력데이터가 값의 범위를 나타낼 때:   

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)

  • 입력데이터 간의 관계가 출력에 미치는 영향을 그래프로 표현하여 오류를 발견하도록 함.
  • 순서: 1) 프로그램의 외부 명세를 기능적으로 분할, 2) 입력조건(원인)과 출력조건(결과)로 나누어 열거 후 일련번호 붙입, 3) 원인 결과 그래프 기술

추적 매트릭스(Traceability Matrix)

  • 시스템을 개발하는 동안 테스트케이스를 추적하기 위해 사용하고 시스템을 검사하고 유지보수하는 도구

의사 결정 테이블(decision tables)

  • 의사 결정 테이블은 의사 결정이 여러 조합을 정하는 행위나 결과를 식별하여 시스템의 예상되는 행위를 파악

상태 전이 테스트 (state transition diagram)

  • 시스템의 상태나 모드, 그 상태들 사이의 천이, 천이를 일으키는 결과적 행위들로 이루어짐

 

나. White Box 테스트 기법 (구조)

기법

설명

제어구조 시험 (Control Structure Testing)

  • McCabe에 의해 제안된 대표적 화이트박스 시험기법
  • 프로그램의 논리적 복잡도를 측정한 후 이 척도에 따라 수행시킬 기본 경로들의 집합을 정의함
  • 시험영역(문장 영역, 논리적 경로영역, 물리적 경로영역)을 현실적으로 최대화시켜 준다는 것과 독립경로들의 발견이 자동화될 수 있음

루프시험 (Loop Testing)

  • 프로그램의 루프구조에 국한해서 실시하는 기법
  • 루프시험의 대상결함: 초기화 결함, 인덱싱 및 증가의 결함, 루프의 경계선에서 나타나는 경계 오류
  • 루프의 유형: 단순 루프, 중첩 루프, 연결 루프, 비구조적 루프

 

III.  블랙박스 테스트와 화이트박스 테스트의 비교

가. 블랙박스 테스트와 화이트박스 테스트의 비교

구분

White Box 테스트

Black Box 테스트

개념

- 프로그램 내부 로직을 참조하면서 모든 경로를 테스트

- 프로그램 외부명세(기능, I/F)로부터 직접 테스트 (Data, I/O 위주 테스트)

특징

- 구조 테스트

- Logic-Driven 테스트

- 모듈 테스트

- 기능 테스트

- Data-Driven 테스트

- I/O-Driven 테스트

테스트

기법

- 제어 구조 시험

- 루프 시험

- 동등분할 기법

- 경계값 분석 기법

- 원인, 결과 그래프 기법

- 오류 예측 기법

관점

- 개발자 관점

- 사용자 관점

 

  1. Black Box 테스트 기법 (기능)

기법

설명

동등분할 기법 (Equivalence artitioning)

  • 프로그램의 입력 도메인을 테스트 케이스가 산출될 수 있는 데이터의 클래스로 분류하는 방법
  • 다양한 입력조건들을 갖춘 테스트케이스의 유형들을 분할: 상식적 경험에 의존(Heuristic)  
  • 각 테스트케이스 유형마다 최소의 테스트케이스 작성

예) 입력데이터가 값의 범위를 나타낼 때:   

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)

  • 입력데이터 간의 관계가 출력에 미치는 영향을 그래프로 표현하여 오류를 발견하도록 함.
  • 순서: 1) 프로그램의 외부 명세를 기능적으로 분할, 2) 입력조건(원인)과 출력조건(결과)로 나누어 열거 후 일련번호 붙입, 3) 원인 결과 그래프 기술

 

2. White Box 테스트 기법 (구조)

기법

설명

제어구조 시험 (Control Structure Testing)

  • McCabe에 의해 제안된 대표적 화이트박스 시험기법
  • 프로그램의 논리적 복잡도를 측정한 후 이 척도에 따라 수행시킬 기본 경로들의 집합을 정의함
  • 시험영역(문장 영역, 논리적 경로영역, 물리적 경로영역)을 현실적으로 최대화시켜 준다는 것과 독립경로들의 발견이 자동화될 수 있음

루프시험 (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

네개의 테스트 케이스: 모든 문장 적어도 한번씩 수행

 

기본 경로 테스트

  • 프로그램의 제어흐름을 그래프로 나타내어 그래프 상에 존재하는 모든 경로를 테스트하기 위한 데이터를 기본 테스트 집합으로 선정.
  • 기본 테스트 집합에 의하여 수행되는 프로그램 세그멘트의 선형적 조합.

 

기본 경로수 계산

 

댓글