블랙박스 테스트 vs 화이트박스 테스트

2024. 8. 28. 17:49·Tips/A to Z

[작성일: 2023. 09. 10]

 

 

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

블랙박스 테스트는 소프트웨어의 내부 구조, 로직, 코드 등을 고려하지 않고 기능을 검사하는 소프트웨어 테스트 방법이다. 블랙박스 테스트의 주 목적은 소프트웨어의 기능적 요구사항이 제대로 구현되었는지 확인하는 것이다.

 

  • 소프트웨어의 내부 구조나 동작 방식을 모른 채로 진행한다.
  • 사용자의 요구사항 명세를 보면서 주로 구현된 기능을 테스트 한다.
  • 사용자 입장에서 스프트웨어의 요구사항과 결과물이 일치하는지 확인하기 위한 테스트 기법이다.
    • 사용자 환경에서 발생할 수 있는 문제점들을 효과적으로 발견할 수 있다.

 

블랙박스 테스트는 다음과 같은 방법으로 수행할 수 있다.

 

각 테스트 기법에는 다음과 같은 예시가 주어진다.

 

예시:

A카페의 아이스 아메리카노의 가격을 사이즈별로 다음과 같이 구분한다.

Small은 3,000원
Medium은 4,000원
Large는 5,000원 

 

기법 설명
동등 분할 기법
(Equivalence Partitioning Testing)
- 입력 자료에 초점을 맞춰 테스트 케이스를 만들어 검사하는 기법

* 예시:
A카페의 아이스 아메리카노를 각 사이즈마다 한 번씩 가격 검증을 한다.
경계값 분석
(Boundary Value Analysis)
- 입력 값의 중간값보다 경계값에서 오류가 발생할 확률이 높다는 점을 이용해 입력 조건의 경계값을 테스트 케이스로 선정하는 기법
- 80~90의 입력 조건이 있을 때, 79, 80, 81, 89, 90, 91을 테스트 값으로 선정한다.

* 예시
A카페의 Small과 Medium, Medium과 Large 사이의 가격 경계를 검증한다. Medium사이즈의 가격을 4,000원으로 선정한다.
원인-효과 그래프 검사
(Cause-Effect Graphing Testing)
- 입력 데이터 간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효율성이 높은 테스트 케이스를 선정하여 검사하는 기법

* 예시
A카페에서 아이스 아메리카노를 주문했을 때,
- 원인: 사이즈 선택(Small, Medium, Large)
- 결과: 가격(3,000원, 4,000원, 5,000원)
이를 기반으로 원인과 결과의 관계를 그래프로 표현하며 테스트 케이스를 도출할 수 있다.
오류 예측 검사
(Error Guessing)
- 과거의 경험이나 테스터의 감각으로 테스트하는 기법

* 예시 
A카페에서 아이스 아메리카노 주문 시 사이즈를 선택하지 않았을 때 시스템이 어떻게 반응하는지 확인한다.
비교 검사
(Comparison Testing)
- 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법

* 예시
A카페의 주문 시스템은 기존 버전과 업데이트 버전을 가지고 있다고 가정한다.
두 버전 모두에서 아이스 아메리카노의 가격이 올바르게 적용되는지 확인하기 위해 비교 검사를 수행한다. 
Small 사이즈의 아메리카노를 선택했을 때 기존 버전과 업데이트 버전 모두에서 3,000원이 제대로 적용되는지 확인한다.
의사결정 테이블 테스팅 - 입력과 출력 사이의 관계를 표로 표현하며 조건과 결과를 명확히 정의하여 테스트 케이스를 도출하는 기법

* 예시
A카페에서 사이즈와 시럽 추가 여부에 따라 최종 가격을 결정하는 표를 생성하고 이를 기반으로 테스트한다.
상태 전이 테스팅 - 소프트웨어의 다양한 상태와 그 상태 간의 전이를 테스트하는 기법

* 예시 
온라인 상점의 주문 상태가 '주문 접수', '결제 완료', '제조 중', '제조 완료', '픽업 준비'와 같이 변경되는 과정을 테스트한다.

 

다양한 블랙박스 테스트 기법이 있지만 모든 종류의 오류나 문제점을 발견하기는 어려울 수 있다.

그렇기 때문에 화이트박스 테스트와 함께 병행하여 수행하는 것이 좋다.

 

 

장점

  • 실제 사용자의 경험에 가까운 테스트를 수행하므로 사용자 관점에서 중요한 결함을 발견하기 쉽다.
  • 개발자의 내부 구현 방법을 모르기 때문에 테스트는 완전히 독립적으로 수행된다.
  • 특정 기능 또는 비즈니스 요구사항에 대해 빠르게 테스트할 수 있다.

 

단점

  • 내부 로직의 세부사항을 알 수 없기 때문에 일부 경로나 상황에서 발생하는 결함을 놓칠 수 있다.
  • 동일한 기능에 대해 여러 테스트 케이스를 작성하게 될 수 있어 중복될 수 있다.

 

 

 

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

화이트박스 테스트는 소프트웨어의 내부 구조와 동작을 검사하는 테스트 기법이다. 화이트박스 테스트는 코드의 각 라인, 분기 및 경로를 테스트하는 것을 목표로 한다. 주로 개발자에 의해 수행되며 코드의 복잡성, 누락된 시나리오, 불필요한 코드 등을 식별하는데 유용한 테스트이다.

 

화이트박스 테스트는 다음과 같은 방법으로 수행할 수 있다.

 

 

기법 설명
기초 경로 검사
(Base Path Testing)
-  McCabe가 제안한 대표적인 화이트박스 테스트 기법
- 프로그램의 복잡도를 측정하고 그 복잡도에 따라 테스트 케이스의 수를 결정한다.
- 계산식: V(G) = E-N+2
문장 검증 - 프로그램의 모든 문장을 한 번씩 수행하여 검증
선택(분기) 검증 - 선택하는 부분만 검증
경로 검증 - 수행 가능한 모든 경로를 검사
- 실무에서는 모든 경로를 테스트하는 것은 불가능할 수 있으므로 주로 경로 위주로 테스트가 진행된다.
조건 검증 - 조건이나 반복문 내 조건식을 검사

기초 경로 검사

 

화이트 박스 테스트 기법을 사용하여 소프트웨어의 내부 로직과 구조를 꼼꼼히 테스트하게 되면, 누락된 로직이나 잘못된 코드를 발견하고 수정할 수 있어 소프트웨어의 품질을 향상시킬 수 있다.

 

 

장점

  • 내부 로직의 모든 경로를 검토하기 때문에 세부적인 버그나 오류를 발견하기 쉽다.
  • 코드의 효율성과 성능을 확인하고 최적화 할 수 있다.
  • 코드의 보안 취약점을 발견하고 수정할 수 있다.

 

단점

  • 코드를 자세히 알아야 하기 때문에 테스트를 수행하는데 시간과 자원이 많이 소요된다.
  • 사용자 관점에서는 중요한 결함을 놓칠 수 있다.

 

 

 

블랙박스 테스트 vs 화이트박스 테스트

블랙박스 테스트와 화이트박스 테스트는 서로 다른 목적과 특징을 가지고 있기 때문에 어떤 테스트를 사용할지는 개발 프로세스, 프로젝트의 특성, 요구사항 등에 따라 결정할 수 있다. 

 

결론적으로는 두 테스트 모두 각각 중요한 역할을 한다. 

 

화이트박스 테스트는 시스템의 내부 구조와 로직에 중점을 둔 반면 블랙박스 테스트는 사용자의 관점에서 시스템이 올바르게 동작하는지 확인한다. 대부분의 개발 프로세스에서는 두 가지 테스트 방법을 함께 사용하여 시스템의 품질을 높이는 것이 바람직하다.

 

저작자표시 비영리 변경금지 (새창열림)
'Tips/A to Z' 카테고리의 다른 글
  • [Servlet] Eclipse로 Servlet 프로그램 만들기
  • [DB] Mariadb와 Java 연동하기
  • [IntelliJ] 유용한 단축키(Mac)
  • [SpringBoot] spring-boot-devtools 라이브러리 사용법
뚜비
뚜비
1년차 백엔드&iOS 개발자의 감자 탈출 블로그 🥔🥔
  • 뚜비
    뚜비의 개발로그
    뚜비
  • 전체
    오늘
    어제
  • 글쓰기     관리
    • Devlog
      • Back-End
        • Java
        • Spring
        • JPA
        • HTTP
        • Security
        • Back-End
        • Front-End
      • 알고리즘
      • iOS
        • Swift
      • Database
      • Tips
        • Git & GitHub
        • A to Z
      • 프로젝트
      • 생각정리
  • 태그

    Database
    DB
    Spring Security
    spring
    생성자
    변수
    게시판만들기
    sql
    자바스크립트
    다형성
    프로그래머스
    Security
    스프링
    Java
    JPA
    최주호
    javascript
    성능최적화
    데이터베이스
    의존성주입
    객체
    html
    김영한
    백준
    MVC
    jsp
    자바
    알고리즘
    HTTP
    Swift
  • hELLO· Designed By정상우.v4.10.0
뚜비
블랙박스 테스트 vs 화이트박스 테스트
상단으로

티스토리툴바