Proven by Intelligence
보이지 않는 안전을 인텔리전스로 증명하다.
기술 인사이트를 만나보세요.
안녕하세요. 🤗
임베디드 소프트웨어 전문 기업, MDS인텔리전스입니다.
이번 포스팅에서는 블랙박스 테스트와 이와 관련된 다양한 테스팅 기법에 대해 설명해 드리고자 합니다.
소프트웨어 내부 구조인 코드의 참조 여부에 따라
코드를 참조하면 화이트박스 테스트, 참조하지 않으면 블랙박스 테스트로 나뉘어집니다.
블랙박스 테스트는 테스트 대상의 내부구조(코드)를 참조하지 않고 테스트 베이시스, 개발자, 테스터, 사용자들의 경험을 바탕으로 기능적 혹은 비기능적인 테스트케이스를 도출하고 선택하는 방법입니다.
코드 참조 여부를 통해 구분하는 방법 이외에 테스트 설계의 근원을 기준으로 명세 기반 테스트 기법, 구조 기반 테스트 기법, 경험 기반 테스트 기법으로 나누었을 때 명세 기반 테스트 기법과 경험 기반 테스트 기법이 블랙박스 테스트에 포함이 됩니다.

1. 명세 기반 테스트 기법

명세 기반 테스트 기법은 주어진 명세(요구사항 분석서, 설계서 등)을 바탕으로 테스트 케이스를 도출하는 방법으로 다음과 같은 테스트 방법이 있습니다.
몇가지 방법을 소개해드리겠습니다.
1) 동등 분할(Equivalence Partitioning)
특정 범위의 입력값에 의해 결과값이 동일하다면 이러한 입력값의 범위를 하나의 그룹(클래스)로 구분하여 범위 내의 입력값은 내부적으로 같은 방식으로 처리된다고 가정합니다. 등가 집합의 원소 중 대푯값을 선택하여 테스트 케이스를 도출하는 방법입니다. 유효한 입력 값 뿐만 아니라 유효하지 않은 입력 데이터도 포함이 가능합니다.
자동차 워셔액 경고등 표시를 예로 들어 동등 분할 기법으로 테스트 케이스를 도출하는 과정을 간단히 설명해보겠습니다.

그림과 같이 워셔액의 용량에 따라 경고등이 표시되어야 한다고 가정합니다.
동등 분할에 의해 워셔액 용량이 0미만, 0~30, 30~100, 100초과에서 임의의 유효한 용량을 하나씩 선택해 테스트 케이스를 생성합니다.

해당 테스트 케이스는 표와 같이 생성될 수 있습니다.
2) 경계값 분석(Boundary Value Analysis)
경계값 분석은 동등 분할의 경계에서 결함이 발견된 확률이 높아 그 결함을 예방하기 위해 경계값까지 포함하여 테스트하는 기법입니다.
분할 영역의 최대값과 최소값이 그 영역의 경계값이 됩니다. 워셔액 경고등 기능을 예로 들어 경계값 분석 기법을 이용하여 테스트 케이스를 도출해보겠습니다.

워셔액 용량에 따라 경고등이 켜지고, 특정 범위에서는 경고등이 표시되거나 표시되지 않는다고 가정합니다.
여기서 경계값 분석을 하면, 0~30 범위에서의 경계값은 유효 경계값 1, 29와 비유효 경계값 -1,31이 됩니다.
같은 방식으로 30~100 범위에서의 경계값은 유효 경계값 31, 99, 101와 비유효 경계값 29가 됩니다. 이를 토대로 테스트케이스를 생성합니다.

해당 테스트케이스는 표와 같이 생성될 수 있습니다.
3) 결정 테이블 테스팅(Decision Table Testing)
논리적인 조건이나 상황을 구현하는 시스템에서 요구사항을 도출하거나 내부 시스템 설계를 문서화하는 도구로 시스템이 구현해야 할 비즈니스 규칙을 문서화하는데 사용됩니다. 일반적으로 모든 가능한 동작을 유발시키는 조건의 조합을 테스트합니다.
4) 상태 전이 테스팅(State Transition Testing)
일반적으로 임베디드 소프트웨어 산업분야나 기술적으로 자동화가 필요한 부분에서 사용됩니다. 뿐만 아니라 특정한 상태를 갖는 비즈니스 객체 모델링이나 인터넷 어플리케이션과 같은 흐름을 테스팅 할 때도 적절히 적용될 수 있습니다. 실제로 시스템에서 상태로 표현될 수 있는 부분은 생각보다 많으며 상태로 표현되는 부분은 거의 모든 경우 상태 전이 테스팅 기법을 적용 할 수 있습니다.
위의 예를 상태전이 다이어그램으로 표시했습니다.

조건과 상태의 변경에 따라 위의 그림과 같이 상태 전이 다이어그램으로 표시할 수 있습니다.
5) 유즈케이스 테스팅(Use Case Testing)
시스템이 실제 사용되는 방식에 기반하여 “프로세스 흐름”을 기술합니다. 이 방법을 기반으로 생성된 테스트 케이스는 시스템이 실제 사용되는 프로세스 흐름에서 결함을 발견하는데 상당히 유용합니다. 유즈케이스는 시나리오라고도 불리는데 고객이나 유저 그룹을 참여시키는 인수 테스트를 설계할 때 유용하며, 통합 테스트 단계에서 서로 다른 컴포넌트 사이의 상호 작용과 간섭으로 발생하는 통합 결함을 찾는데 도움이 됩니다.

2. 경험 기반 테스팅 기법

이전에 테스터가 다루었던 유사 어플리케이션이나 기술에서의 경험, 직관, 테스터의 기술능력으로부터 테스트 케이스를 추출하는 방법으로 공식적인 기법으로 다루기 어려운 특별한 테스트 케이스를 찾아내고 실행하는데 유용합니다.
하지만, 테스터의 경험에 따라 효율성 및 효과성의 정도가 매우 달라질 수 있습니다.
많이 쓰이는 방법 2가지를 소개하겠습니다.
1) 탐색적 테스팅
테스트 케이스 작성의 시간을 최소화하고 테스트 엔지니어의 발견적인 지적능력을 최대한 활용하여 테스트를 수행하는 것이다. 테스트 케이스를 문서화하는데 소요되는 시간을 최소화하여 테스트를 “실행”하는 것에 집중합니다.
제품에 대한 이해를 바탕으로 테스트를 비공식적으로 설계하고 수행하여 검토 가능한 테스트 결과를 도출하는 방법입니다. 탐색적 테스팅을 단순히 경험적으로 테스팅하는 것과 혼동하지 않아야 합니다.
2) 오류 추정
테스터가 테스트 대상 시스템을 완전히 이해하고 있다는 것을 전제로 식별된 취약점에 기반한 테스트이다. 주로 테스트의 마지막 단계에서 사용합니다.
가능한 오류(error)를 모두 나열하고 이런 유형의 결함 또는 오류를 공격할 수 있도록 테스트를 설계해야 합니다.
테스트에 참고할 명세가 거의 없거나 불충분할 경우에 유용하며, 다른 기법이나 공식적인 테스트를 보완할 때 유용하게 사용할 수 있습니다.
출처 : 개발자도 알아야 할 소프트웨어 테스팅 실무 제3판 – 권원일, 이현주 외 지음

이상 블랙박스 테스트와 이와 관련된 다양한 테스팅 기법에 대해 설명을 마치도록 하겠습니다.
MDS인텔리전스의 임베디드 소프트웨어 검증 센터는 차별화된 전문 인력과 다양한 프로젝트 경험을 바탕으로 많은 기업들과 프로젝트를 진행하고 있습니다.
해당 포스팅 혹은 검증 서비스 관련하여 궁금하신 사항이 있으시다면, sve@mdsit.co.kr로 문의 메일 부탁드립니다.

MDS인텔리전스
임베디드 소프트웨어 고품질 및 신뢰성 확보를 위한, SW 검증센터
E. sve@mdsit.co.kr
