카테고리 없음

[SW] 블랙박스 테스트 vs 화이트박스 테스트

lucy1215 2023. 3. 27. 15:59
728x90
반응형

블랙박스 테스트

블랙박스 테스트는 내부 코드 구조, 구현 세부 사항 및 소프트웨어의 내부 경로에 대한 지식을 보지 않고 테스트 대상의 기능이나 성능을 테스트하는 기술이다. 블랙박스 유형의 테스트는 전적으로 소프트웨어 요구 사항 및 사양을 기반으로 한다.

 

 

 

블랙박스 테스트에서는 소프트웨어 프로그램의 내부 지식에 신경 쓰지 않고 소프트웨어 시스템의 입력 및 출력에 중점을 둔다.

블랙박스 테스트

 

 

블랙박스 테스트 방법을 사용하는 테스트 엔지니어는 시스템에 줄 수 있는 입력과 시스템이 배출하여야 하는 출력이 무엇인지를 결정하여야 한다. 테스트를 완벽하게 하기 위해서는 시스템의 모든 기능에 대하여 전부 테스트해 보는 것이 좋다고 생각할 수 있다. 그러나 모듈이나 시스템이 가지는 모든 입력 자료값의 조합에 대해서 테스트하는 것은 바람직하지 않다.

 

 

장점
  • 테스트하기 위하여 기술적 배경이 필요하지 않다. 사용자의 입장에서 테스트하고 사용자의 관점에서 대상 프로그램에 자극을 주고 반응을 보면 되기 때문이다.
  • 코딩이 완료되어야 테스트를 시작할 수 있다. 테스터와 개발자 모두 서로가 방해하지 않고 독립적으로 작업할 수 있다.
  • 크고 복잡한 응용 프로그램에 더 효과적이다.
  • 테스트 초기 단계에서 결함과 불일치를 식별할 수 있다.

 

단점
  • 기술적 또는 프로그래밍 지식이 없으면 테스트할 시나리오의 가능한 조건을 무시할 가능성이 있다.
  • 규정된 시간에 가능한 적은 입력을 테스트하고 가능한 모든 입력과 출력 테스트를 건너뛸 수 있다.
  • 크고 복잡한 테스트 대상은 완전한 테스트 범위가 불가능 하다.

 

 

화이트박스 테스트

블랙박스 테스트는 프로그램이 수행하는 기능에 초점을 가지고 테스트하는 방법으로 실제 구현한 프로그램의 내부 구조는 다루지 않는다고 하였다.

따라서 블랙박스 테스트는 프로그램의 구현보다는 기능에 관심을 갖는다.

 

 

 

한편 화이트박스 테스트는 모듈안의 작동을 자세히 관찰하는 시험 방법이다. 투명한 박스와 같이 모듈의 논리적인 구조를 체계적으로 점검하기 때문에 구조적 테스트라고도 한다.

 

 

 

화이트박스 테스트는 프로그램의 구조를 시험하기 위하여 여러 가지 다른 구조에 대하여 테스트 케이스를 찾아내는 데 목적이 있다. 기능 테스트와는 다르게 구현된 프로그램의 구조를 기반으로 테스트하기 때문에 검증 기준이 더 정확하고 세밀하다.

 

 

 

화이트 박스 테스트를 하려면 다음과 같은 단계를 수행하여야 한다.

 

1. 원시 코드를 통해 애플리 케이션의 구조를 이해한다. 즉 그래프를 그려 논리흐름을 찾는다.

2. 검증 기준을 정한다. 테스트에 의하여 검증하는 범위(커버리지)를 정하고 이에 맞는 테스트 경로와 선택조건을 찾는다.

3. 각 경로를 구동시키는 테스트 데이터를 준비하여 시험 대상 프로그램을 수행시키고 결과를 비교한다.

 

 

 

논리 흐름의 표현

화이트박스 테스트를 더 자세히 이해하기 위하여 논리 흐름도(logic-flow diagram)를 이용한다. 논리 흐름도란 모듈 내의 제어 흐름을 간선으로 표시한 그래프로서 모듈 내의 모든 세그먼트가 그래프의 정점으로 표현된다. 세그먼트와 선택 구조 사이의 제어 흐름은 간선으로 표시된다.

 

 

 

논리 흐름도는 우리에게 익숙한 흐름도(flowchart)와는 다르다. 흐름도는 프로그램의 설계에 대한 표현이며 원시 코드를 작성하기 위하여 자세한 내용을 충분히 담고 있지 않다. 논리 흐름도는 원시 코드의 논리 흐름을 그대로 표현한 것으로 논리 흐름에 관계되지 않는 사항은 생략하여 나타낸다.

 

 

 

검증 기준

화이트박스 테스트에서 테스트 데이터를 선택하기 위하여 테스트 실행이 프로그램의 어떤 기준을 커버하는지 먼저 결정하여야 한다. 이를 검증 기준(test coverage)이라고 하는데 일반적으로 다음 세 가지가 있다.

 

  • 문장 커버리지 : 코드의 각 라인이 적어도 한 번 실행되는지를 검증하는 방법
  • 분기 커버리지 : 각 분기가 한 번 이상 실행되는지 확인한다.
  • 경로 커버리지 : 프로그램의 모든 실행 경로를 테스트하는 기준이다.

 

 

장점
  • 테스트 케이스 재사용성 및 안정성 향상
  • 코드 최적화 촉진
  • 초기 개발 단계에서 숨겨진 오류 위치를 쉽게 찾을 수 있다.
  • 효과적인 응용 프로그램 테스트를 용이하게 한다.
  • 불필요한 코드 줄을 제거한다.

 

단점
  • 내부 구조 지식을 갖춘 숙련된 테스터 필요
  • 시간 소모
  • 높은 비용
  • 코드 비트 유효성 검사가 어렵다.
반응형