4.2. 블랙박스 테스트 기법

hsk·2024년 6월 18일

ISTQB - CTFL (정리) 

목록 보기
15/25

블랙박스 테스트에서 사용되는 테스트 기법은 다음과 같다.

  • 동등 분할
  • 경계값 분석
  • 결정 테이블 테스팅
  • 상태 전이 테스팅

4.2.1 동등 분할 테스팅

정의
동등 분할 테스팅은 테스트 대상이 동일한 방식으로 처리될 것으로 예상되는 데이터를 분할 단위로 나누는 기법이다. 각 분할 내의 특정 값을 테스트하는 테스트 케이스가 결함을 식별할 수 있다면, 같은 분할의 다른 값도 결함을 식별할 수 있다고 가정한다. 따라서 각 분할에 대해 하나의 테스트만 수행하면 충분하다.

적용 대상
동등 분할은 입력, 출력, 형상 항목, 내부 값, 시간 관련 값, 인터페이스 매개변수 등 테스트 대상과 관련된 모든 데이터 요소에 대해 식별할 수 있다.

특징

  • 분할은 연속적이거나 비연속적일 수 있으며, 정렬돼 있거나, 유한 또는 무한일수 있다.
  • 분할은 서로 겹치지 않아야 하며, 값이 없는 공집합일 수는 없습니다.

유효/비유효 분할

  • 유효분할 : 테스트 대상이 처리해야 하는 값 또는 명세에 정의된 값을 포함
  • 비유효 분할 : 테스트 대상이 무시하거나 거부해야 하는 값, 또는 명세에 정의 되지 않은 값을 포함

커버리지

  • 각 분할을 최소 한 번씩 다루는 테스트 케이스로 100% 커버리지를 달성
  • 커버리지 측정: 테스트 케이스로 실행한 분할 수 / 식별한 총 분할 수 × 100%

이치 초이스 커버리지(Each Choice Coverage)

  • 분할 집합이 다수인 경우, 모든 분할 집합의 각 분할을 최소 한 번 실행하는 것을 요구.
  • 분할의 조합을 고려하지 않음.

주의 사항

  • 분할 식별은 신중하게 해야 하며, 테스트 대상이 다양한 값을 어떻게 처리하는지 이해하기 어려울 수 있습니다.

동등 분할 테스팅 예제

테스트 대상 : 사용자가 입력하는 나이에 따라 다른 메시지를 출력하는 간단한 애플리케이션을 가정한다.

  • 0 ~ 12: "어린이"
  • 13 ~ 19: "청소년"
  • 20 ~ 59: "성인"
  • 60 이상: "노인"
  • 유효하지 않은 값: "유효하지 않은 입력"

동등 분할
이 애플리케이션에서는 입력 값의 범위에 따라 다음과 같은 동등 분할을 정의할 수 있다.

  • 유효 분할

    • 0 ~ 12: 어린이
    • 13 ~ 19: 청소년
    • 20 ~ 59: 성인
    • 60 이상: 노인
  • 비유효 분할

    • 음수 값 (예: -1)
    • 비숫자 값 (예: "abc")

4.2.2 경계값 분석

정의
경계값 분석은 동등 분할의 경계값을 중심으로 테스트하는 기법이다. 주로 개발자가 경계값에서 오류를 범할 가능성이 높기 때문에 경계값에 집중하여 테스트한다. 경계값 분석은 정렬된 분할에서만 사용할 수 있다.

경계값의 정의

  • 분할의 최솟값과 최댓값이 경계값이 된다.
  • 같은 분할에 속하는 두 값 사이의 모든 값도 해당 분할에 속해야 한다.

경계값 분석의 주요 결함

  • 경계가 의도한 위치보다 위나 아래에 잘못 배치된 경우.
  • 경계가 누락된 경우.

유형

  • 두 개 선택 경계값 분석(2-value BVA)
    • 각 경계값에 대해 두 개의 커버리지 항목을 도출
    • 경계값과 인접 분할에 속한 가장 가까운 값이 커버리지 항목.(각 경계의 최솟값과 최댓값)
    • 100% 커버리지 달성: 모든 경계값과 인접 값을 테스트
    • 커버리지 계산: 실행한 경계값 수 / 식별한 경계값 총수 * 100%
  • 세 개 선택 경계값 분석 (3-value BVA):
    • 각 경계값에 대해 세 개의 커버리지 항목을 도출.
    • 경계값과 이웃한 양쪽의 값 모두가 커버리지 항목.(직전 값, 경계값, 바로 직후 값)
    • 100% 커버리지 달성: 모든 경계값과 이웃 값을 테스트.
    • 커버리지 계산: 실행한 경계값 및 이웃 값 수 / 식별한 경계값 및 이웃 값 총수 × 100%

경계값 분석 예제

테스트 대상
사용자가 입력하는 점수에 따라 성적을 부여하는 애플리케이션을 가정합니다. 점수에 따라 다음과 같은 성적을 부여한다.

  • 0 ~ 59: "F"
  • 60 ~ 69: "D"
  • 70 ~ 79: "C"
  • 80 ~ 89: "B"
  • 90 ~ 100: "A"

경계값
이 애플리케이션에서는 각 성적 구간의 경계값을 다음과 같이 정의할 수 있다.
0, 59, 60, 69, 70, 79, 80, 89, 90, 100

2-value BVA를 기준으로 테스트 데이터 분류
1. 0, 59
2. 60, 69
3. 70, 79
4. 80, 89
5. 90, 100

3-value BVA를 기준으로 테스트 데이터 분류
1. -1, 0, 1
2. 58, 59, 60
3. 59, 60, 61
4. 68, 69, 70
5. 78, 79, 80
6. 79, 80, 81
7. 88, 89, 90
8. 89, 90, 91
9. 99, 100, 101

4.2.3 결정 테이블 테스팅

정의
결정 테이블 테스팅은 여러 조건의 조합에 따라 달라지는 결과를 정확하게 구현했는지 확인하는 테스트 기법이다. 복잡한 비즈니스 로직을 테스트하는 데 효과적이다.

결정 테이블 구성

  • 조건: 조건과 시스템의 동작 결과를 정의
  • 행: 조건 및 결과 동작
  • 열: 하나의 결정 규칙을 나타내며, 고유한 조건 조합과 그에 따른 동작을 정의

표기법

  • 조건
    • "T" (True): 조건이 충족됨
    • "F" (False): 조건이 충족되지 않음
    • "-" (Dash): 결과에 영향이 없음
    • "N/A": 실행 불가능한 조건
  • 결과 동작
    • "X": 동작이 발생해야 함
    • 공백: 동작이 발생하지 않아야 함

유형

  • 제한-입력 결정 테이블: 모든 조건과 동작 결괏값을 부울값으로 표시
  • 확장-입력 결정 테이블: 조건 및 동작 결괏값이 복수의 값을 가질 수 있음 (예: 숫자 범위, 동등 분할, 불연속 값)

커버리지

  • 커버리지 항목은 실현 가능한 조건 조합을 가진 열
  • 100% 커버리지 달성: 모든 열을 테스트
  • 커버리지 측정: 실행된 열의 수 / 실행 가능한 열의 총수 × 100%

강점

  • 모든 조건 조합을 체계적으로 식별
  • 누락되거나 모순된 요구사항 식별
  • 조건이 많을 경우, 규칙의 수가 기하급수적으로 늘어날 수 있음
  • 결정 테이블을 최소화하거나 리스크 기반 접근법을 사용할 수 있음

결정 테이블 테스팅 예제

예제1: 간단한 논리 연산

조건

  • 조건 1: 입력 A (T: 참, F: 거짓)
  • 조건 2: 입력 B (T: 참, F: 거짓)

결정 테이블

조건/결과조건 1 (A)조건 2 (B)결과 (출력 C)
규칙 1TTX
규칙 2TF
규칙 3FT
규칙 4FF

설명
규칙 1 : A와 B가 모두 참인 경우 출력 C가 발생.
규칙 2 : A가 참이고 B가 거짓인 경우 출력 C가 발생하지 않음.
규칙 3 : A가 거짓이고 B가 참인 경우 출력 C가 발생하지 않음.
규칙 4 : A와 B가 모두 거짓인 경우 출력 C가 발생하지 않음.

확장-입력 결정 테이블 예제

예제: 온라인 쇼핑몰 할인 규칙

조건

  • 조건 1: 회원 여부 (T: 회원, F: 비회원)
  • 조건 2: 구매 금액 (C1: 100달러 미만, C2: 100달러 이상 200달러 미만, C3: 200달러 이상)
  • 조건 3: 쿠폰 사용 여부 (T: 사용, F: 사용 안 함)
조건/결과조건 1 (회원)조건 2 (구매 금액)조건 3 (쿠폰 사용)결과 (할인)
규칙 1TC3TX
규칙 2TC3FX
규칙 3TC2TX
규칙 4TC2FX
규칙 5TC1T
규칙 6TC1F
규칙 7FC3TX
규칙 8FC3F
규칙 9FC2T
규칙 10FC2F
규칙 11FC1T
규칙 12FC1F

설명
규칙 1 : 회원이고 구매 금액이 200달러 이상이며 쿠폰을 사용한 경우 할인이 적용됨
규칙 2 : 회원이고 구매 금액이 200달러 이상이며 쿠폰을 사용하지 않은 경우 할인이 적용됨.
규칙 3 : 회원이고 구매 금액이 100달러 이상 200달러 미만이며 쿠폰을 사용한 경우 할인이 적용됨.
규칙 4 : 회원이고 구매 금액이 100달러 이상 200달러 미만이며 쿠폰을 사용하지 않은 경우 할인이 적용됨.
규칙 5 : 회원이고 구매 금액이 100달러 미만이며 쿠폰을 사용한 경우 할인이 적용되지 않음.
규칙 6 : 회원이고 구매 금액이 100달러 미만이며 쿠폰을 사용하지 않은 경우 할인이 적용되지 않음.
규칙 7 : 비회원이고 구매 금액이 200달러 이상이며 쿠폰을 사용한 경우 할인이 적용됨.
규칙 8 : 비회원이고 구매 금액이 200달러 이상이며 쿠폰을 사용하지 않은 경우 할인이 적용되지 않음.
규칙 9 : 비회원이고 구매 금액이 100달러 이상 200달러 미만이며 쿠폰을 사용한 경우 할인이 적용되지 않음.
규칙 10 : 비회원이고 구매 금액이 100달러 이상 200달러 미만이며 쿠폰을 사용하지 않은 경우 할인이 적용되지 않음.
규칙 11 : 비회원이고 구매 금액이 100달러 미만이며 쿠폰을 사용한 경우 할인이 적용되지 않음.
규칙 12 : 비회원이고 구매 금액이 100달러 미만이며 쿠폰을 사용하지 않은 경우 할인이 적용되지 않음.

4.2.4 상태 전이 테스팅

정의
상태 전이 테스팅은 시스템의 가능한 상태와 유효한 상태 전이를 모델링하여 시스템 동작을 테스트하는 기법이다. 전이는 특정 이벤트에 의해 발생하며, 가드 조건과 동작이 포함될 수 있다.

상태 전이 다이어그램

  • 시스템의 상태와 상태 간의 전이를 그래픽으로 표현
  • 전이는 "이벤트 [가드 조건] / 동작" 형식으로 표시

상태 테이블

  • 상태 전이 다이어그램의 다른 표현 방식
  • 행은 상태, 열은 이벤트를 나타냅니다
  • 각 셀은 전이를 나타내며, 목표 상태와 가드 조건, 결과 동작을 포함

테스트 케이스

  • 일련의 이벤트와 그에 따른 상태 변화 및 동작을 포함
  • 하나의 테스트 케이스는 여러 상태 전이를 포함할 수 있음

커버리지 측정 기준

  • 모든 상태 커버리지 (All State Coverage):
    • 커버리지 항목: 상태
    • 100% 달성 조건: 모든 상태를 테스트
    • 커버리지 측정: (확인한 상태 수 / 상태 총수) × 100%
  • 유효 전이 커버리지 (Valid Transitions Coverage, 0-스위치 커버리지):
    • 커버리지 항목: 유효 전이.
    • 100% 달성 조건: 모든 유효 전이를 테스트.
    • 커버리지 측정: (실행된 유효 전이 수 / 총 유효 전이 수) × 100%
  • 모든 전이 커버리지 (All Transitions Coverage):
    • 커버리지 항목: 모든 전이 (유효 및 비유효).
    • 100% 달성 조건: 모든 유효 전이를 실행하고, 비유효 전이도 시도.
    • 커버리지 측정: (실행한 유효 및 비유효 전이 수 / 총 유효 및 비유효 전이 수) × 100%

상태 전이 테스팅 예제

예제: 간단한 자동판매기

상태

  • 대기
  • 선택
  • 결제
  • 상품 제공

이벤트

  • 동전 투입
  • 상품 선택
  • 상품 제공
  • 초기화

상태 전이 다이어그램
대기 --> [동전 투입] --> 선택
선택 --> [상품 선택] --> 결제
결제 --> [상품 제공] --> 상품 제공
상품 제공 --> [초기화] --> 대기

상태 테이블

상태동전 투입상품 선택상품 제공초기화
대기선택
선택결제
결제상품 제공
상품 제공대기

테스트 케이스

1. TC1: 대기 상태에서 선택 상태로 전이

  • 이벤트: 동전 투입
  • 예상 상태: 선택

TC2: 선택 상태에서 결제 상태로 전이

  • 이벤트: 상품 선택
  • 예상 상태: 결제

TC3: 결제 상태에서 상품 제공 상태로 전이

  • 이벤트: 상품 제공
  • 예상 상태: 상품 제공

TC4: 상품 제공 상태에서 대기 상태로 전이

  • 이벤트: 초기화
  • 예상 상태: 대기

커버리지

  • 모든 상태 커버리지:
    • 대기, 선택, 결제, 상품 제공 상태를 모두 확인.
    • 100% 커버리지 달성.
  • 유효 전이 커버리지:
    • 동전 투입, 상품 선택, 상품 제공, 초기화 전이를 모두 실행
    • 100% 커버리지 달성.
  • 모든 전이 커버리지:
    • 모든 유효 전이와 비유효 전이를 테스트.
    • 비유효 전이 예: 대기 상태에서 상품 선택 이벤트 실행 시도.
    • 100% 커버리지 달성.

예상문제

문제 1: 동등 분할의 주요 목적은 무엇인가?

A) 소프트웨어의 성능을 개선하기 위해
B) 테스트 케이스 수를 줄이면서도 충분한 테스트를 수행하기 위해
C) 사용자 인터페이스를 개선하기 위해
D) 하드웨어 오류를 수정하기 위해

정답(드래그)
 B 
해설(드래그)
동등 분할의 주요 목적은 입력 데이터의 동등한 그룹을 나누어 테스트 케이스 수를 줄이면서도 충분한 테스트를 수행하는 것이다.

문제 2: 다음 중 동등 분할의 예로 올바른 것은?

A) 0 ~ 12: 어린이, 13 ~ 19: 청소년, 20 ~ 59: 성인, 60 이상: 노인
B) 경계값을 테스트하는 방법
C) 여러 조건 조합을 테스트하는 방법
D) 코드의 내부 구조를 분석하는 방법

정답(드래그)
 A 
해설(드래그)
입력 데이터를 연령대에 따라 분할한 것으로 각 연령대는 동일한 방식으로 처리가 이뤄진다.

문제 3: 동등 분할에서 유효한 값과 비유효한 값의 정의는 무엇인가?

A) 유효한 값은 테스트 대상이 무시하거나 거부해야 하는 값
B) 유효하지 않은 값은 명세에 정의된 값을 포함하는 값
C) 유효한 값은 테스트 대상이 처리해야 하는 값
D) 유효하지 않은 값은 테스트 대상이 명세에 정의된 값을 포함하는 값

정답(드래그)
 C 
해설(드래그)
유효한 값은 테스트 대상이 처리해야 하는 값이며, 비유효한 값은 테스트 대상이 명세에 정의되지 않은 값이다.

문제 4: 경계값 분석의 주요 목적은 무엇인가?

A) 내부 구조를 분석하기 위해
B) 코드의 성능을 개선하기 위해
C) 경계에서 발생할 수 있는 결함을 식별하기 위해
D) 사용자의 경험을 분석하기 위해

정답(드래그)
 C 
해설(드래그)
경계값은 오류가 발생할 가능성이 높은 영역으로 경계값 분석은 경계에서 발생할 수 있는 결함을 식별하는 데 중점을 둔다.

문제 5: 두 개 선택 경계값 분석의 커버리지 항목은 무엇인가?

A) 각 경계값과 경계값의 이웃한 값
B) 모든 조건 조합
C) 각 분할의 모든 값
D) 사용자 인터페이스 요소

정답(드래그)
 A 
해설(드래그)
두 개 선택 경계값 분석에서는 각 경계값과 그 이웃한 값을 커버리지 항목으로 한다.

문제 6: 다음 중 세 개 선택 경계값 분석에서 100% 커버리지를 달성하기 위한 조건은?

A) 모든 경계값과 그 이웃한 값을 테스트
B) 모든 내부 구조를 분석
C) 모든 경계값만 테스트
D) 모든 사용자 인터페이스 요소를 분석

정답(드래그)
 A 
해설(드래그)
세 개 선택 경계값 분석에서는 모든 경계값과 그 이웃한 값을 테스트해야 100% 커버리지를 달성할 수 있다.

문제 7: 결정 테이블 테스팅의 주요 목적은 무엇인가?

A) 소프트웨어의 성능을 개선하기 위해
B) 다중 조건 조합의 결과를 테스트하기 위해
C) 사용자 인터페이스를 개선하기 위해
D) 하드웨어 오류를 수정하기 위해

정답(드래그)
 B 
해설(드래그)
결정 테이블 테스팅의 주요 목적은 여러 조건의 조합에 따라 달라지는 결과를 테스트하는 것

문제 8: 결정 테이블의 열은 무엇을 나타내는가?

A) 하나의 결정 규칙
B) 시스템의 상태
C) 코드의 내부 구조
D) 사용자 인터페이스 요소

정답(드래그)
 A 
해설(드래그)
결정 테이블의 열은 하나의 결정 규칙을 나타내며, 각 조건 조합과 그에 따른 동작을 정의함

문제 9: 다음 중 결정 테이블 테스팅의 강점으로 옳지 않은 것은?

A) 누락되거나 모순된 요구사항을 식별
B) 모든 조건 조합을 체계적으로 식별
C) 조건이 많을 때 기하급수적으로 늘어나는 규칙 수
D) 단순한 논리를 기록하는 방법

정답(드래그)
 D 
해설(드래그)
결정 테이블 테스팅의 강점은 누락되거나 모순된 요구사항을 식별하고, 모든 조건 조합을 체계적으로 식별하는 데 있다.

문제 10: 상태 전이 테스팅에서 커버리지 측정 기준이 아닌 것은?

A) 모든 상태 커버리지
B) 유효 전이 커버리지
C) 모든 전이 커버리지
D) 사용자 인터페이스 커버리지

정답(드래그)
 D 
해설(드래그)
사용자 인터페이스 커버리지는 존재하지 않는다.

문제 11: 상태 전이 테스팅에서 유효 전이 커버리지를 100% 달성하기 위한 조건은?

A) 모든 상태를 테스트
B) 모든 유효 전이를 테스트
C) 모든 상태와 전이를 테스트
D) 모든 사용자 인터페이스를 테스트

정답(드래그)
 C 
해설(드래그)

문제 12: 상태 전이 테스팅의 강점은 무엇인가?

A) 모든 상태와 전이를 체계적으로 식별
B) 사용자 인터페이스의 성능을 개선
C) 하드웨어 오류를 수정
D) 소프트웨어의 내부 구조를 분석

정답(드래그)
 A 
해설(드래그)
상태 전이 테스팅은 시스템의 모든 상태와 상태 간 전이를 체계적으로 식별하고 테스트할 수 있어, 누락되거나 잘못된 상태 전이를 발견하는 데 유용함

profile
Test Automation QA Engineer

0개의 댓글