구조 기반 테스트

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
문제점전체 구문에 대한 테스트가 불가능

 

댓글을 남겨주시면 감사드려요~*^^*