CS

테스트 기법 [블랙박스, 화이트박스 테스트]

devrabbit22 2026. 5. 11. 17:12

화이트 박스 테스트 (White Box Test)

  • 화이트 박스 테스트는 모듈의 원시 코드를 오픈시킨 상태에서 코드의 논리적 모든 경로를 테스트하는 방법이다.
  • 소스 코드의 모든 문장을 한 번 이상 수행하여 모듈 안의 작동을 직접 관찰할 수 있다.
  • 산출물의 기능별로 적절한 프로그램의 제어 구조에 따라 선택, 반복 등의 부분들을 수행함으로써 적절한 논리적 경로를 점검한다.
  • 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic Test)에 해당한다.

개발자가 소프트웨어 또는 컴포넌트 등의 로직에 대한 테스트를 수행하기 위해 설계 단계에서 요구된 사항을 확인하는 개발자 관점의 단위 테스팅 기법이다.

화이트 박스 테스트 기법

  • 기초 경로 검사(Basic Path Testing) : 대표적인 화이트 박스 테스트 기법이다.
    • 테스트 케이스 설계자가 절차적 설계의 논리적 복잡성을 즉정할 수 있게 해주는 테스트 기법, 테스트 측정 결과는 실행 경로의 기초를 정의하는데 지침으로 사용된다.
    • 기초 경로는 수행 가능한 모든 경로를 의미하며, Thomas J. McCabe의 순환 복잡도(Cyclomatic Complexity) 를 사용하여 선형 독립 경로 수를 결정한 다음 얻어진 각 경로에 대한 테스트 사례를 생성한다.

코드에서 순환 복잡도 계산 예
순환 복잡도

 

예시 코드와 코드의 제어 흐름 그래프

A = 10
     IF B > C THEN
          A = B
     ELSE
          A = C
     ENDIF
A 출력
B 출력
C 출력

순환 복잡도

  • 제어 구조 검사(Control Structure Testing) : 프로그램의 제어 구조를 기반으로 수행하는 화이트 박스 테스트 기법이다.
    • 조건 검사(Condition Testing) : 프로그램 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
    • 루프 검사(Loop Testing) : 프로그램의 반복 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
    • 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수의 사용 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법

화이트박스 테스트를 통해 찾을 수 있는 오류

  • 프로그램 내부의 세부적인 논리 오류
  • 조건 및 분기 구조상의 오류
  • 반복문 관련 오류
  • 수행 경로 오류
  • 알고리즘 오류로 인한 비정상적인 결과
  • 종료 조건이 없는 무한 반복문 사용
  • 잘못된 계산식이나 수식에 따른 오류

정리하자면, 화이트 박스 테스트는 프로그램 내부 구조와 로직을 기반으로 수행되므로, 조건문·반복문·수행 경로 등의 논리 오류를 발견할 수 있다. 또한 알고리즘 오류, 무한 반복문, 잘못된 계산식으로 인해 발생하는 비정상적인 결과 등을 검출할 수 있다.

화이트박스 테스트 검증 기준

  • 문장 검증 기준 (Statement Coverage) : 프로그램의 모든 실행 문장이 최소 한 번 이상 수행되도록 테스트하는 검증 기준
  • 분기 검증 기준 (Branch Coverage) : 프로그램의 모든 분기(결정 구조)가 True와 False 결과를 각각 최소 한 번 이상 수행하도록 테스트하는 검증 기준이며, 각 분기의 모든 결과 경로를 한 번 이상 실행하는 것을 목표로 한다. 
  • 조건 검증 기준 (Condition Coverage) : 조건문 내에 포함된 개별 조건식이 True와 False 값을 각각 최소 한 번 이상 수행되도록 테스트하는 검증 기준
  • 분기 / 조건 기준 (Branch/Condition Coverage) : 분기 검증 기준과 조건 검증 기준을 모두 만족하는 분기 / 조건 검증 기준이며, 모든 분기의 결과와 조건식의 결과를 각각 True와 False로 수행하도록 테스트한다.

블랙 박스 테스트(Black Box Test)

  • 블랙 박스 테스트는 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고도 한다.
  • 즉, 입력값과 출력값만을 확인하는 테스트이다.
  • 사용자의 요구사항 명세를 보면서 테스트하는 것으로, 주로 구현된 기능을 테스트한다.
  • 소프트웨어 인터페이스에서 실시되는 테스트이다.
  • 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류 행위나 성능 오류, 초기화나 종료 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용된다.

개발자 입장이 아닌 사용자 입장에서 소프트웨어 혹은 제품에 대한 요구사항 결과물이 일치하는지 확인하기 위한 테스트 기법이다.

블랙 박스 테스트의 종류

  • 동치 분할 검사 (Equivalence Partitioning Testing) : 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법
  • 경계값 분석 (Boundary Value Analysis) : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법이다.
  • 원인 - 효과 그래프 검사 (Cause-Effect Graphing Testing) : 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법이다.
  • 오류 예측 검사 (Error Guessing) : 과거의 경험이나 확인자의 감각으로 테스트하는 기법
    다른 블랙 박스 테스트 기법으로는 찾아낼 수 없는 오류를 찾아내는 일력의 보충적 감사 기법, 데이터 확인 검사라고도 한다.
  • 비교 검사 (Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

블랙 박스 테스트를 통해 찾을 수 있는 오류

  • 인터페이스 오류
  • 자료 구조 및 데이터 접근 오류
  • 성능 오류
  • 초기화 및 종료 처리 오류
  • 기능 누락 및 요구사항 불일치 오류
  • 비정상적인 데이터를 입력했을 때 예외 처리가 수행되지 않는 오류
  • 정상적인 데이터를 입력했음에도 요구된 기능이 올바르게 수행되지 않는 오류
  • 경계값 입력 시 올바른 결과가 출력되지 않는 오류

블랙 박스 테스트는 사용자의 관점에서 기능을 검증하는 테스트 기법으로, 인터페이스 오류, 자료 처리 오류, 성능 오류, 초기화·종료 오류 등을 발견할 수 있다. 또한 비정상 입력에 대한 예외 처리 미흡, 기능 누락, 경계값 처리 오류 등 요구사항과 실제 동작 간의 차이를 검출할 수 있다.

정리

구분 화이트 박스 테스트 블랙 박스 테스트
테스트 기준 내부 구조 및 로직 기능 및 요구사항
코드 접근 여부 소스 코드 접근 필요 소스 코드 접근 불필요
수행 관점 내부 동작 중심 외부 기능 중심
수행 주체 개발자 중심 테스터 및 사용자 중심
테스트 시점 단위 테스트 단계 통합·시스템 테스트 단계
주요 결함 유형 로직 오류, 분기 누락, 반복문 오류 기능 오류, 요구사항 불일치
검증 방식 코드의 실행 경로 및 제어 구조 검증 입력값과 출력 결과 검증
테스트 설계 기준 프로그램 구조 기반 명세서 및 요구사항 기반
대표 기법 기초 경로 검사, 조건 검사 동등 분할, 경계값 분석
커버리지 기준 코드 커버리지 중심 기능 커버리지 중심
자동화 적합성 높음 중간
장점 내부 로직의 오류를 세밀하게 발견 가능 사용자 관점에서 기능 검증 가능
단점 요구사항 누락 발견이 어려움 내부 로직 오류 발견이 어려움

이미지 출처

https://www.geeksforgeeks.org/dsa/cyclomatic-complexity/

 

Cyclomatic Complexity - GeeksforGeeks

Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.

www.geeksforgeeks.org

https://medium.com/@R_D2/cyclomatic-complexity-basics-149198bbac85

 

Cyclomatic complexity (Basics)

Cyclomatic complexity — metric is based on the number of decisions in a program.

medium.com