X

구조 기반 테스트

I. 시스템 구조 기반, 구조 기반 테스트

가. 구조 기반 테스트의 정의

나. 구조 기반 테스트의 특징

  • 코드구조의 효율성 및 오류사항 발견하기 위한 테스트 Logic Driven방식
  • White Box Test : 프로그램 내부 구조 및 복잡도를 검증하는 테스트

다. 구조 기반 커버리지의 범위

라. 구조 기반 커버리지의 종류

종류 개념도 설명
구문
커버리지
프로그램 내 모든 명령문을 적어도 한번 수행
결정
커버리지
프로그램 내 전체 결정문이 적어도 한번은 참과 거짓의 결과를 수행
조건
커버리지
결정 명령문 내 각 조건이 적어도 한번은 참과 거짓의 결과가 출력되도록 수행
조건/결정
커버리지
전체 조건 식 뿐 아니라 개별 조건식도 참, 거짓이 한번씩 결과가 되도록 수행
변경
조건/결정
커버리지
각 개별 조건식이 다른 개별 조건 식에 영향을 받지 않고 전체 조건식의 독립적 영향을 주도록 수행
다중 조건
커버리지
결정 포인트 내 있는 모든 개별 식 조건의 모든 조합을 고려한 커버리지

 

II. 구조 기반 커버리지 예

가. Smoke Code

  • if(X > 1 && Y == 0) z = z / x;
  • if(z == 2 && y > 1) z = z + 1;

나. 제어 흐름도

 

커버리지 구분 설명
구문
커버리지
제어 흐름 가 → 나 → 다 →라 → 마
테스트 케이스 x = 2, y = 0, z = 4
문제점 모든 구문이 실행되어 커버리지 100% 달성
조건이 N → N인 경우는 테스트 되지 않음
결정
커버리지
제어 흐름 가 → 나 → 다 → 라 → 마: Y
가 → 다 → 마: N
테스트 케이스 x = 2, y = 0, z = 4
x = 1, y = 0, z = 4
문제점 Y → N, N → Y 등과 같은 복합 결정에 대한 결함 발견 불가능
조건
커버리지
제어 흐름 가 → 다 → 라 → 마: NY
가 → 나 → 다 → 마: YN
테스트 케이스 x = 2, y = 2, z = 2
x = 2, y = 0, z = 6
문제점 전체 구문에 대한 테스트가 불가능

 

도리:

View Comments (2)

  • 안녕하세요.
    결정/조건 커버리지와 변경결정/조건 커버리지에 대해서 궁금한 것이 있어서, 댓글남깁니다.

    도리님의 글에서도 알수있듯이 변경조건/결정 커버리지는 결정/조건커버리지를 커버하지만, A OR B가 테스트 항목이라고 가정 하였을 때.

    -변경조건/결정 커버리지를 100% 커버하는 테스트케이스
    TC1. A :0 / B : 0 / A OR B: 0
    TC2. A :0 / B : 1 / A OR B: 1
    TC3. A :1 / B : 0 / A OR B: 1

    -조건/결정 커버리지를 100% 커버하는 테스트케이스
    TC1. A :0 / B : 0 / A OR B: 0
    TC2. A :1 / B : 1 / A OR B: 1

    변경조건/결정 커버리지에서는 조건/결정 테스트케이스의 TC2를 커버하지 못합니다.
    따라서 변경조건/결정 커버리지에서는 조건/결정 테스트케이스 100% 커버를 못하는 경우도 있다고 생각되는데, 제가 이해하는 방법이 잘못된 걸까요?

    감사합니다.

    • 조건/결정 커버리지의 의미는 본문의 설명에도 나와 있듯이, "전체 조건식(A OR B) 뿐 아니라 개별 조건식(A, B)도 참, 거짓이 한 번 씩 결과가 되도록 수행하는 커버리지" 입니다. 본문의 조건/결정 커버리지 개념도는 조건/결정 커버리지(전체 조건식 참, 거짓 한 번 씩 수행, 개별 조건식 참, 거짓 한 번 씩 수행)를 수행한 샘플로, 최소 횟수 2회(TTT, FFF)인 것이고, 최소 수행이 아니라면 3회(TFT, FTT, FFF)도 전체 조건식과 개별 조건식이 참, 거짓이 한 번 씩 수행되었으므로 조건/결정 커버리지를 수행했다고 할 수 있습니다. (반드시 TC1(FFF)와 TC2(TTT)를 수행해야 조건/결정 커버리지를 수행한것은 아닙니다.) 변경 조건/결정 커버리지는 "전체 조건식 참, 거짓 한 번 씩 수행, 개별 조건식 참, 거짓 한 번 씩 수행"을 기본적으로 커버하기 때문에 조건/결정 커버리지를 커버한다고 할 수 있습니다.

      본문의 개념도는 해당 커버리지를 수행한 샘플이므로 커버리지의 이해를 위해서는 설명 부분을 읽어보시는 것이 좋습니다.