정보관리기술/소프트웨어공학

화이트박스 테스트(White Box Test)와 블랙박스 테스트(Black Box Test) / ①

아이티신비 2024. 1. 10. 08:00

문제8) 화이트박스 테스트(White Box Test)와 블랙박스 테스트(Black Box Test)

 

답)

 

 

1. 개발자 관점의 내부구조 테스트 방식, 화이트박스 테스트의 개요

가. 화이트박스 테스트(White Box Test)의 개념

  • 개발자가 소프트웨어 또는 컴포넌트 등의 내부 Logic에 대한 테스트를 수행하기 위하여 설계 단계에서 요구된 사항을 확인하여 테스트 하는 유형

 

나. 화이트박스 테스트기법 및 검증 유형

기법
설명
사례
제어구조 시험
(Control Structure Testing)
  • McCabe 에 의해 제안된 대표적 White Box Test 기법
  • 프로그램의 처리 흐름을 제어하는 방법 및 수행 제어를 위해 사용되는 문장의 구조
  • 순차형(순차 구조, Sequence 형)
  • 선택형(분기구조, if Then Else 형)
  • 반복형(반복구조, Do While 형)
루프 시험
(Loop Testing)
  • 프로그램 루프 구조에 국한해서 실시하는 기법
  • 루프 시험의 대상 결함 : 초기화 결함, 인덱싱 및 증가의 결함, 루프의 경계선에서 나타나는 경계 오류
  • 루프의 유형 : 단순루프, 중첩루프, 연결루프, 비구조적 루프
  • for, while 등
  • go to 등

 

- 검증유형

테스트 유형
설명
사례
구문 커버리지
(Statement Coverage)
  • 프로그램을 구성하는 모든 구문들이 최소한 한 번은 실행될 수 있는 입력 데이터를 테스트 데이터로 선정
  • 프로그램 내 모든 구문의 테스트를 보장
  • 소스코드 if(a>0 or b>0) call join
  • 테스트 케이스
결정 커버리지
(Decision Coverage)
  • 프로그램 내의 전체 결정문이 적어도 한 번은 참과 거짓의 결과를 수행하는 테스트 케이스 생성
  • 모든 분기문을 테스트 하는 방법
조건 커버리지
(Condition Coverage)
  • 결정 명령문 내의 각 조건이 적어도 한 번은 참과 거짓의 결과가 되도록 수행하는 테스트 케이스
  • 모든 조건을 커버하는 방법
조건/결정 커버리지
(Condition/Decision Coverage)
  • 전체 조건식 뿐만 아니라 개별 조건식도 참 한번, 거짓 한 번 결과가 되도록 수행하는 테스트 케이스
변경조건/결정 커버리지
(MC/DC)
  • 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고 전체 조건식에 독립적으로 영향을 주도록 하는 테스트 케이스
다중조건/결정 커버리지
(Multiple Condition Coverage)
  • 결정 포인트 내에 있는 모든 개별식 조건의 모든 조합을 고려한 커버리지

 

2. 요구명세서 기반 기능위주의 테스트 방식, 블랙박스 테스트(Black Box Test)의 개요

가. 블랙박스 테스트(Black Box Test)의 개념

  • 테스트 대상의 내부 구조를 참조하지 않고 테스트 베이시스 개발자, 테스터, 사용자 경험 바탕으로 기능적, 비기능적 테스트 케이스 도출하고 선택하는 기법

 

나. 블랙박스 테스트의 기법 설명

기법
개념도
상세 설명
동등 클래스 분할 기법
(Equivalance Class Partitioning)

  • 등가 분할 된 대표 값을 이용 테스트케이스 도출
  • 프로그램의 입력 도메인을 등 가영역들로 분할 후 각 영역별로 대표되는 값들을 선전하여 테스트 케이스를 설계하는 방법
  • 예)입력데이터 x 값이 0~100 사이어야 한다면 TC를 (X<0),(X=50),(X>100)으로 분할하여 적용
경계값 분석
(Boundary Value Analysis)

  • 결함은 경계 값 근처에서 많이 발생 이용
  • 입력 영역의 분할 클래스의 경계값으로 테스트 케이스를 설계하는 방법
  • 등가 분할 기법의 확장, 등가분할 된 경계의 유효한 값, 경계의 가장 가까운 유효하지 않는 값 선택 테스트 진행
  • 예) x 값이 0~100 사이어야 한다면 TC를 (x=0),(x=100), x=-0.01),(x=100.1)로 정의
의사결정 테이블 테스팅
(Decision Table Testing)

  • 조건과 결과를 참/거짓으로 표현
  • 주요한 의사결정 요소들을 표(결정테이블)로 만들고, 요소들간의 결합에 의한 테스트 게이스 설계
  • 각 의사결정 요소들의 조합을 통해 다양한 형태의 테스트 시나리오를 도출
상태 전이 테스팅
(State Transition Testing)
  • 상태전이 다이어그램 통해 이벤트, 액션, 활동, 상태 변화로 발생되는 관계, 동작 파악하여 테스트
  • 임베디드 SW테스트시 적용
유스케이스 테스팅
(Use Case Testing)

  • usecase 명세서 이용 테스트 케이스 설계
  • 유즈케이스를 통해 도출되는 비즈니스 시나리오(기본흐름, 대체흐름)를 기반으로 테스트를 명세화하여 테스트
  • 컴포넌트/단위 레벨 유즈케이스 테스팅
  • 시스템 레벨 유즈케이스 테스팅
분류 트리 기법
(Classification Tree Method)
  • SW의 일부 또는 전체를 트리구조로 분석 및 표현하여 테스트케이스를 설계하는 기법
  • 트리구조를 시각화 하여 테스트 케이스를 설계하므로 불필요한 중복 및 누락을 회피
페어와이즈 테스팅
(Paireise Testing)
  • 대부분 결함이 2개의 요소(Pair)의 상호 작용에 기인한다는 것에 착안하여, 각 값들이 다른 파라미터의 값과 최소 한번씩은 조합을 이루도록 구성하는 테스트 기법
  • 모든 조합을 포함하지 않으므로 결함을 찾지 못하는 경우 발생 가능
원인-결과 그래프
(Cause Effect Graph)
  • 입력 데이터간 관계가 출력에 영향을 미치는 상활을 체계적으로 분석하여 테스트 케이스 설계 및 테스트
  • 원인, 결과에 근거한 테스트 케이스 생성하며 시스템 외부 동작만 고려
  • 원인 : 시스템 내부 입력 상태
  • 결과 : 시스템 변환 또는 원인 조합으로 인한 출력 상태
오류예측기법
(Error Guessing)
  • 예) 입력값 없이 Return 친다. 문법에 어긋난 입력을 시험한다 등
  • 각 시험 기법들이 놓치기 쉬운 오류들을 감각과 경험으로 찾아 검증
  • Ad-hoc Testing 이라고도 하며 직관과 경험에 의한 특정 형태의 결함 예측 및 해당 결함을 드러내는 테스트 케이스 설계 기법

 

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

구분
블랙박스 테스트(명세기반)
화이트박스 테스트(구조기반)
개념도


개념
프로그램 내부 구조를 고려하지 않고. 요구사항 명세서나 사양서에서 테스트 케이스를 추출하여 테스트 하는 기법
컴포넌트 혹은 소프트웨어의 내부 구조 분석에 바탕을 두고 테스트케이스를 도출하여 테스트 하는 기법
특징
기능/테스트 위주, 명세 기반
내부로직 위주 설계, 알고리즘 위주, 구조 기반
관점
개발자 관점
사용자 관점
대상
시작/종료/인터페이스 결함
Loop, Decision 결함, 비 수행 구문
장점
시스템의 기능과 명세로 테스트 케이스를 도출하여 테스트케이스가 명확
내부 로직에 대한 테스트를 수행함으로써 상세한 테스트 가능
단점
내부 로직 테스트가 없어 테스트 범위가 구조기반보다 제한적
테스트케이스 도출 한계
기법
동등분할, 경계값분석, 의사결정테이블, 상태전이, Pairwise 분석 오류 예측, 원인결과 그래프
구문 커버리지, 결정 커버리지, 조건/결정 커버리지, 루프테스트, 제어구조 시험
활용
대부분의 테스트에 적용, 베타 테스트
단위 테스트 위주, 알파 테스트