경계값 분석(Boundary Value Analysis)란?

결함이 동치 클래스의 경계에 모이기 쉽다는 점에서, 경계 바로 양쪽의 값(예를 들어 1~100을 받아들인다면 0, 1, 100, 101)을 테스트하는 블랙박스 테스트 기법. 비교 연산자의 혼동 같은 오류를 찾기 쉽다.

일본어 명칭: 境界値分析

경계값 분석(Boundary Value Analysis)은(는) 소프트웨어 개발과 프로젝트 관리 등 1개 분야의 연습 문제 3개에 나와요.

분야: 소프트웨어 개발과 프로젝트 관리

왜 경계를 시험하는가

프로그램의 조건 분기는 '<'와 '<=', '>'와 '>='의 혼동이나 배열 첨자가 하나 어긋나는 오류(off-by-one) 등을 일으키기 쉬우며, 그 영향은 경계의 값에서만 나타납니다. 예를 들어 사양이 '85 ℃ 이상에서 경고'인데 if (t > 85)라고 쓰면, 84 ℃나 86 ℃에서는 사양대로 동작하고 85 ℃일 때만 경고가 나오지 않습니다. 동치 분할로 각 클래스의 한가운데 값만 시험해서는 이런 오류는 발견되지 않습니다.

값을 고르는 방법

정수 입력에서 1~100을 받아들이는 경우, 아래쪽 경계에서는 0과 1, 위쪽 경계에서는 100과 101을 고릅니다. 경계의 값과 그 양옆(0, 1, 2와 99, 100, 101)을 시험하는 더 세밀한 방법도 있습니다. 요금 구분처럼 구분이 여러 개인 경우는 구분이 바뀌는 모든 경계에서 양쪽의 값을 고릅니다. 입력이 소수인 경우는 사양에서 정한 분해능(0.1 단위 등)으로 이웃 값을 정합니다.

하드웨어에 가까운 소프트웨어에서의 경계

임베디드 소프트웨어에는 ADC 판독값의 임계값, 타이머 카운터가 최댓값에서 0으로 돌아가는 지점, 버퍼가 정확히 가득 차는 지점, 통신 패킷의 최대 길이 등 사양 수치의 경계가 많이 있습니다. 8비트 카운터라면 255에서 0으로의 넘침, 16비트 부호 있는 정수라면 32,767과 −32,768의 경계에서 계산 오류가 일어나기 쉬워집니다. 이러한 경계는 사양서의 수치와 자료형의 범위 양쪽에서 찾아냅니다.

도전해 보기: 경계값 분석(Boundary Value Analysis) 관련 문제

입장료를 나이(0 이상의 정수)로 정하는 프로그램이 있으며, 0~17세는 어린이 요금, 18~64세는 일반 요금, 65세 이상은 시니어 요금으로 한다. 요금 구분이 바뀌는 경계를 확인하기 위해 경계값 분석으로 고르는 테스트 값의 조합으로 가장 적절한 것은?

  1. A10, 40, 90
  2. B17, 18, 64, 65
  3. C18, 65
정답과 해설 보기

정답: B. 17, 18, 64, 65

경계값 분석에서는 결함이 동치 클래스의 경계에 모이기 쉽다는 점에서, 경계 바로 양쪽의 값을 테스트합니다. 어린이 요금과 일반 요금의 경계에서는 17과 18, 일반 요금과 시니어 요금의 경계에서는 64와 65를 고르므로 17, 18, 64, 65의 4개가 됩니다. 조건의 '<'와 '<='를 잘못 쓰는 것 같은 오류는 경계의 한쪽만 시험해서는 발견되지 않는 경우가 있습니다. 10, 40, 90은 각 구분의 대표 값을 고르는 동치 분할의 값으로, 경계의 오류는 확인할 수 없습니다.

자주 묻는 질문

동치 분할과 경계값 분석은 어떻게 구분해서 쓰나요?

대부분의 경우 조합해서 씁니다. 동치 분할로 입력을 클래스로 나누어 각 클래스의 대표를 시험하고, 경계값 분석으로 클래스 경계의 양쪽을 추가로 시험합니다. 동치 분할만으로는 테스트 수를 줄일 수 있지만, 경계의 오류를 놓치기 쉬워집니다.

경계값 분석은 화이트박스 테스트인가요?

사양에 쓰인 범위의 경계에서 값을 고르므로 블랙박스 테스트 기법입니다. 다만 구현 안의 배열 크기나 자료형의 범위 등 사양에 쓰여 있지 않은 경계도 있으므로, 소스 코드를 보고 추가하기도 합니다.

해설 속 경계값 분석(Boundary Value Analysis)

경계값 분석(Boundary Value Analysis)이(가) 나오는 문제 (3)

  1. 입장료를 나이(0 이상의 정수)로 정하는 프로그램이 있으며, 0~17세는 어린이 요금, 18~64세는 일반 요금, 65세 이상은 시니어 요금으로 한다. 요금 구분이 바뀌는 경계를 확인하기 위해 경계값 분석으로 고르는 테스트 값의 조합으로 가장 적절한 것은?
  2. 블랙박스 테스트의 설명으로 적절한 것은?
  3. 사양은 '온도가 85 ℃ 이상이면 경고를 낸다'이지만, 펌웨어에는 잘못하여 'if (t > 85)'라고 쓰여 있었다. 온도 t는 정수로 한다. 다음 테스트 값 중 이 오류를 발견할 수 있는 것은?

관련 용어

동치 분할(Equivalence Partitioning) 블랙박스 테스트(Black-box Testing) 화이트박스 테스트(White-box Testing) 분기 커버리지(Branch Coverage) 스크럼(Scrum) 애자일 개발(Agile Development) 임계 경로법(CPM) 테스트 주도 개발(TDD) 폭포수 모델(Waterfall Model) 획득가치관리(EVM)

용어집으로 돌아가기