[작성일: 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 화이트박스 테스트
블랙박스 테스트와 화이트박스 테스트는 서로 다른 목적과 특징을 가지고 있기 때문에 어떤 테스트를 사용할지는 개발 프로세스, 프로젝트의 특성, 요구사항 등에 따라 결정할 수 있다.
결론적으로는 두 테스트 모두 각각 중요한 역할을 한다.
화이트박스 테스트는 시스템의 내부 구조와 로직에 중점을 둔 반면 블랙박스 테스트는 사용자의 관점에서 시스템이 올바르게 동작하는지 확인한다. 대부분의 개발 프로세스에서는 두 가지 테스트 방법을 함께 사용하여 시스템의 품질을 높이는 것이 바람직하다.