블랙박스 테스트
블랙박스 테스트는 내부 코드 구조, 구현 세부 사항 및 소프트웨어의 내부 경로에 대한 지식을 보지 않고 테스트 대상의 기능이나 성능을 테스트하는 기술이다. 블랙박스 유형의 테스트는 전적으로 소프트웨어 요구 사항 및 사양을 기반으로 한다.
블랙박스 테스트에서는 소프트웨어 프로그램의 내부 지식에 신경 쓰지 않고 소프트웨어 시스템의 입력 및 출력에 중점을 둔다.
블랙박스 테스트 방법을 사용하는 테스트 엔지니어는 시스템에 줄 수 있는 입력과 시스템이 배출하여야 하는 출력이 무엇인지를 결정하여야 한다. 테스트를 완벽하게 하기 위해서는 시스템의 모든 기능에 대하여 전부 테스트해 보는 것이 좋다고 생각할 수 있다. 그러나 모듈이나 시스템이 가지는 모든 입력 자료값의 조합에 대해서 테스트하는 것은 바람직하지 않다.
장점
|
단점
|
화이트박스 테스트
블랙박스 테스트는 프로그램이 수행하는 기능에 초점을 가지고 테스트하는 방법으로 실제 구현한 프로그램의 내부 구조는 다루지 않는다고 하였다.
따라서 블랙박스 테스트는 프로그램의 구현보다는 기능에 관심을 갖는다.
한편 화이트박스 테스트는 모듈안의 작동을 자세히 관찰하는 시험 방법이다. 투명한 박스와 같이 모듈의 논리적인 구조를 체계적으로 점검하기 때문에 구조적 테스트라고도 한다.
화이트박스 테스트는 프로그램의 구조를 시험하기 위하여 여러 가지 다른 구조에 대하여 테스트 케이스를 찾아내는 데 목적이 있다. 기능 테스트와는 다르게 구현된 프로그램의 구조를 기반으로 테스트하기 때문에 검증 기준이 더 정확하고 세밀하다.
화이트 박스 테스트를 하려면 다음과 같은 단계를 수행하여야 한다.
1. 원시 코드를 통해 애플리 케이션의 구조를 이해한다. 즉 그래프를 그려 논리흐름을 찾는다.
2. 검증 기준을 정한다. 테스트에 의하여 검증하는 범위(커버리지)를 정하고 이에 맞는 테스트 경로와 선택조건을 찾는다.
3. 각 경로를 구동시키는 테스트 데이터를 준비하여 시험 대상 프로그램을 수행시키고 결과를 비교한다.
논리 흐름의 표현
화이트박스 테스트를 더 자세히 이해하기 위하여 논리 흐름도(logic-flow diagram)를 이용한다. 논리 흐름도란 모듈 내의 제어 흐름을 간선으로 표시한 그래프로서 모듈 내의 모든 세그먼트가 그래프의 정점으로 표현된다. 세그먼트와 선택 구조 사이의 제어 흐름은 간선으로 표시된다.
논리 흐름도는 우리에게 익숙한 흐름도(flowchart)와는 다르다. 흐름도는 프로그램의 설계에 대한 표현이며 원시 코드를 작성하기 위하여 자세한 내용을 충분히 담고 있지 않다. 논리 흐름도는 원시 코드의 논리 흐름을 그대로 표현한 것으로 논리 흐름에 관계되지 않는 사항은 생략하여 나타낸다.
검증 기준
화이트박스 테스트에서 테스트 데이터를 선택하기 위하여 테스트 실행이 프로그램의 어떤 기준을 커버하는지 먼저 결정하여야 한다. 이를 검증 기준(test coverage)이라고 하는데 일반적으로 다음 세 가지가 있다.
- 문장 커버리지 : 코드의 각 라인이 적어도 한 번 실행되는지를 검증하는 방법
- 분기 커버리지 : 각 분기가 한 번 이상 실행되는지 확인한다.
- 경로 커버리지 : 프로그램의 모든 실행 경로를 테스트하는 기준이다.
장점
|
단점
|