[CSTS] 구조 기반 테스트 & 명세 기반 테스트 (9, 10장)

2025. 7. 25. 16:55·csts

구조 기반 테스트(화이트박스 테스트)

프로그램 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스를 설계

즉 내부 구조 정보를 기반으로 테스트 케이스를 설계

=> 모든 프로그램 경로를 실행하는 것은 현실적으로 불가능 => 일부 경로만 테스트

 

문장 테스트

  • 실행 가능한 모든 문장을 최소 한 번은 실행을 목표
  • 문장 커버리지(%) = (테스트 케이스 집합에 의해 실행된 문장의 수 / 전체 가능한 문장의 수) x 100

결정(분기) 테스트

  • 프로그램상에 나타난 모든 결정문의 결과가 참인 경우와 거짓이 되는 경우를 최소 한 번 실행
  • 결정문은 제어 흐름 그래프에서 결정 노드 하나를 의미
  • 결정 커버리지(%) = (테스트 케이스 집합에 의해 실행된 결정문의 수 / 전체 가능한 결정문의 수) x 100
  • 엄밀히 말해 프로그램에 k=(x>10)&&(y<3) 과 같은 코드가 있을 때 결정 테스트와 분기 테스트는 달리 정의
  • 결정 테스트는 모든 Boolean이 나오도록 해야 하고 분기 테스트는 제어 흐름 그래프에서 하나의 블럭일 뿐이므로 k가 어떤 값을 가지든 상관 없음

조건 테스트

  • 조건은 논리연산자(and, or)를 포함하지 않은 Boolean 식을 의미
  • 더 이상 분할될 수 없는 조건
  • 조건 커버리지(%) = (테스트 케이스 집합에 의해 실행된 조건 수 / 전체 가능한 조건 수) x 100
  • 조건 테스트와 결정 테스트는 포용하지 않는다
  • 문장 테스트는 결정 테스트와 조건 테스트에 포용된다
  • 단축연산이 이루어지는 경우 논리 연산자로 연결된 뒤의 조건이 실행되는지 주의해야 한다

결정/조건 테스트

  • 결정테스트와 조건테스트를 모두 만족하는 테스트 케이스 설계
  • 결정/조건 커비리지 = (테스트 케이스 집합에 의해 실행된 결정문과 조건 수 / 전체 결정문과 조건 수) x 100

다중조건 테스트

  • 결정을 구성하는 기본 조건들이 가질 수 있는 모든 가능한 조합까지 최소 한번 수행
  • 즉 조건들의 모든 가능한 조합을 테스트
  • 만약 조건이 두가지이면 각 조건이 true이고 false인 경우 두가지가 나올수 있으니 모든 경우는 2x2 = 4가지
  • 결정은 따로 더해준다(조건이 두개인 결정문과 조건이 하나인 결정문의 전체 조건 경우 = 4+2 = 6)
  • 다중조건 커버리지 = (테스트 케이스 집합에 의해 실행된 조건 조합 수 / 전체 조건 조합 수) x 100
  • 문장, 결정, 조건, 조건/결정 테스트를 포용

MCDC(변형된 조건 테스트)

  • 결정을 구성하는 각 조건이 독립적으로 결정에 영향을 미치는지를 확인
  • 테스트 데이터 수 = (조건의 수 + 1)
  • ((A && B) || C) 결정문에 각 조건 A,B,C가 있다고 가정
  • A를 독립적으로 확인 => A,B,C,결과 => (T,T,F,T), (F,T,F,F)
  • B를 독립적으로 확인 => A,B,C,결과 => (T,T,F,T), (T,F,F,F)
  • C를 독립적으로 확인 => A,B,C,결과 => (T,F,T,T), (T,F,F,F)
  • 이전의 모든 테스트를 포용

 

명세 기반 테스트(블랙박스 테스트)

  • 컴포넌트, 통합, 시스템, 인수 테스트 전 과정에 걸쳐 사용
  • 규모가 큰 단위에도 효과적
  • 코드가 없어도 요구사항을 바탕으로 수행 가능 => 코드가 구현될 때까지 기다릴 필요 없음
  • 누락 결함을 검출할 가능성 증가

동등분할

  • 입력, 출력 영역을 동등 클래스로 분할하여 각 클래스에서 하나의 값을 선택하여 테스트 케이스로 이용
  • 유효한 분할과 유효하지 않은 분할(명세에 기술되어 있지 않음)의 입력과 출력을 고려
  • One-to-One 동등 분할: 분할한 클래스들과 테스트 케이스 간 일대일 관계
  • 최소화 동등 분할: 하나의 테스트 케이스에 여러 개의 클래스가 포함
  • 유효하지 못한 테스트 케이스는 One-to-One, 유효한 테스트 케이스는 최소화 동등 분할

경계값 분석

  • 입력 영역 경계 근처에 있는 값들을 이용하여 테스트 케이스를 설계
  • 세 가지 방식의 경계값 분석(BVA)
    • 1-value BVA: 경계 값
    • 2-value BVA: 경계와 경계 외부에 있는 값 중 가장 경계와 가까운 값
    • 3-value BVA: 2-value에서 경계 내부에 있는 값중 가장 경계와 가까운 값을 더한 것

조합 테스트

  • 테스트 대상 프로그램 내 여러 클래스의 각 입력 인자를 동등 분할이나 BVA 등의 방법으로 여러 클래스 또는 값으로 분할하였을 때 이들을 조합하여 테스트 케이스를 구성하는 방식
  • All combinations 테스트: 모든 입력 인자의 모든 가능한 클래스 조합이 테스트 케이스
  • Each choice 테스트: 각 입력 인자의 분할된 클래스에서 최소 하나의 입력값이 테스트 케이스에 포함
  • Base choice 테스트: 기반이 되는 테스트 조합을 미리 선정
  • 페어와이즈 테스트: 각 인자의 값과 다른 인자의 값을 최소한 한 번은 조합을 하여 테스트하는 방법
    • 짝 조합을 테스트하는 방법, 즉 모든 입력에 대해 존재할 수 있는 모든 상호 작용을 고려하지 않고 모든 두 개의 입력 간에 가능한 모든 상호작용만을 고려
    • 두개의 클래스끼리 따져봤을 때 모든 조합이 나오면 된다

결정표 테스트

  • 결정표를 이용하여 테스트 케이스를 설계
  • 조건을 기술하는 부분과 조건의 조합에 대해 취하는 행위를 기술하는 부분으로 구성
  • 복잡한 논리적 관계를 표현하기 좋음
  • 누락된 요구사항 검사에 유용

상태 전이 테스트

  • 시스템을 상태 전이도로 모델링한 후 테스트 케이스들을 상태 전이도에서 체계적으로 선정
  • 상태 전이도는 시스템 상태가 어떻게 정이되고 반응하는지 나타내는 좋은 수단
  • 원은 시스템의 상태, 화살표는 상태 간의 전이
  • 상태 테스트: 상태 전이도의 모든 상태를 최소한 한 번 방문하는 테스트 케이스를 설계
  • 단일 전이 테스트(0-switch): 상태 전이도의 모든 유효한 전이들을 최소한 한 번 방문하는 테스트 케이스 설계
  • All transitions 테스트: 유효한 전이를 포함하여 유효하지 않은 전이들도 최소 한 번 방문
  • 다중 전이 테스트(N-switch): 상태 전이도에 있는 N+1 개의 전이 시퀀스들을 최소 한 번 방문

 

'csts' 카테고리의 다른 글

[CSTS] 테스트 분류와 테스팅 방법(2장~8장)  (1) 2025.07.24
[CSTS] 테스트 개요  (2) 2025.07.10
'csts' 카테고리의 다른 글
  • [CSTS] 테스트 분류와 테스팅 방법(2장~8장)
  • [CSTS] 테스트 개요
chanhuy
chanhuy
  • chanhuy
    차늬
    chanhuy
  • 전체
    오늘
    어제
    • 분류 전체보기 (34)
      • algorithm (9)
      • Python (2)
      • database (8)
      • csts (3)
      • Operating System (0)
      • 오픈소스SW (1)
      • Git & Github (4)
      • 프로젝트 회고 (3)
      • 정보처리기사 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오픈소스SW
    graph algorithms
    index
    pl/sql
    D&C
    시간복잡도
    프로젝트후기
    COMMIT
    greedy
    dynamic programming
    Python
    Reduction
    algorithm
    recursion
    Git
    backtracking
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
chanhuy
[CSTS] 구조 기반 테스트 & 명세 기반 테스트 (9, 10장)
상단으로

티스토리툴바