그레이박스 검사

그레이박스 검사 또는 그레이박스 테스트(gray-box testing, 국제 영어 철자: grey-box testing)는 화이트박스 검사와 블랙박스 검사의 조합이다. 이 테스트의 목표는 부적절한 구조나 애플리케이션의 부적절한 사용으로 인한 결함(있는 경우)을 찾아내는 것이다.

개요
블랙박스 테스터는 테스트할 애플리케이션의 내부 구조를 알지 못하지만, 화이트박스 테스터는 애플리케이션의 내부 구조에 접근할 수 있다. 그레이박스 테스터는 내부 데이터 구조 및 사용된 알고리즘 문서를 포함하여 내부 구조를 부분적으로 알고 있다.

그레이박스 테스터는 테스트 케이스를 정의하기 위해 애플리케이션을 설명하는 상위 수준 및 상세 문서를 모두 필요로 한다.

그레이박스 검사의 필요성
그레이박스 검사는 블랙박스 검사의 간단한 기술을 취하여 화이트박스 검사의 코드 대상 시스템과 결합하기 때문에 유익하다.

그레이박스 검사는 단언(assertion) 방법을 사용하여 프로그램이 테스트되기 전에 모든 조건을 제시하므로 요구 사항 테스트 케이스 생성에 기반을 둔다. 요구 사항 명세 언어는 요구 사항을 쉽게 이해하고 정확성을 확인하는 데 사용된다.

객체 지향 소프트웨어에 대한 그레이박스 검사 가정
객체 지향 소프트웨어는 주로 객체로 구성된다. 여기서 객체는 실행 가능한 코드 및 데이터를 가진 단일 불가분 단위이다. 그레이박스 검사를 적용하는 데 필요한 몇 가지 가정이 아래에 명시되어 있다.
 메서드 활성화
 테스트 대상 클래스(CUT)의 상태 보고.
 보고서 테스트는 테스트 대상 클래스에 내재되어 있다.

예시
 아키텍처 모델
 통합 모델링 언어 - UML 설계 모델
 유한 상태 기계 - 상태 모델.

기술
셈 캐너는 "그레이박스 검사를 입력 및 출력을 포함하지만, 테스트 설계는 일반적으로 테스터에게 보이지 않는 종류의 코드 또는 프로그램 작동에 대한 정보에 의해 교육된다"라고 정의한다. 그레이박스 검사 기술은 다음과 같다.
매트릭스 테스트: 프로젝트의 상태 보고서를 명시한다.
 회귀 테스트: 새로운 변경이 이루어지면 테스트 케이스를 다시 실행하는 것을 의미한다.
패턴 테스트: 디자인 또는 아키텍처 및 패턴에 대한 좋은 애플리케이션을 검증한다.
 직교 배열 테스트: 가능한 모든 조합의 하위 집합으로 사용된다.

영향
긍정적 영향
결합된 이점 제공: 그레이박스 검사는 화이트박스 및 블랙박스 검사의 조합이므로 두 가지 테스트의 이점을 모두 제공한다.
비침습적: 소스 코드나 바이너리가 아닌 기능 사양, 아키텍처 보기를 기반으로 하므로 침습적이지 않다.
지능형 테스트 작성: 그레이박스 테스터는 데이터 유형 처리, 통신 프로토콜, 예외 처리와 같은 지능형 테스트 시나리오를 처리한다.
편향 없는 테스트: 위의 모든 장점과 기능에도 불구하고 그레이박스 검사는 테스터와 개발자 간의 테스트 경계를 유지한다.

부정적 영향
부분적인 코드 커버리지: 그레이박스 검사에서는 애플리케이션의 내부 또는 구조에 대한 접근이 제한되어 소스 코드나 바이너리가 없어 코드 경로 탐색에 대한 접근이 제한된다.
결함 식별: 분산 애플리케이션에서는 결함 식별을 연관시키기 어렵다. 그럼에도 불구하고 그레이박스 검사는 이러한 시스템이 예외를 얼마나 적절하게 발생시키고 웹 서비스 환경을 가진 분산 시스템에서 이러한 예외가 얼마나 잘 처리되는지 알아내는 데 큰 도움이 된다.

응용
그레이박스 검사는 웹 애플리케이션에 매우 적합하다. 웹 애플리케이션은 분산 네트워크 또는 시스템을 가지며, 소스 코드나 바이너리가 없기 때문에 화이트박스 검사를 사용할 수 없다. 블랙박스 검사도 고객과 개발자 간의 계약 때문에 사용되지 않으므로, WSDL에 중요한 정보가 포함되어 있어 그레이박스 검사를 사용하는 것이 더 효율적이다.
그레이박스 검사는 기능 또는 비즈니스 도메인 테스트에 적합하다. 기능 테스트는 기본적으로 외부 시스템과의 사용자 상호 작용 테스트이다. 그레이박스 검사는 그 특성상 기능 테스트에 매우 적합하며, 소프트웨어가 소프트웨어에 정의된 요구 사항을 충족하는지 확인하는 데도 도움이 된다.http://legacy.cleanscape.net/docs_lib/paper_graybox.pdf 

향후 범위
웹 서비스의 분산된 특성은 그레이박스 검사가 서비스 지향 아키텍처 (SOA) 내의 결함을 감지하도록 허용한다. 화이트박스 검사는 내부 구조를 직접 다루기 때문에 웹 서비스에 적합하지 않다. 화이트박스 검사는 최신 방법, 예를 들어 소스 코드나 바이너리 없이 예외 처리 상태, 흐름을 돕기 위해 대규모 배열에 대한 자동 테스트를 생성하는 메시지 변이(message mutation)에 사용될 수 있다. 이러한 전략은 그레이박스 검사를 화이트박스 검사 결과에 더 가깝게 만드는 데 유용하다.

 같이 보기 
 그레이 박스 모델

 각주 

분류:소프트웨어 테스트
분류:하드웨어 테스트