2019년 1월 28일
구조 기반 테스트
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 | |
문제점 | 전체 구문에 대한 테스트가 불가능 |
2 Comments
안녕하세요.
결정/조건 커버리지와 변경결정/조건 커버리지에 대해서 궁금한 것이 있어서, 댓글남깁니다.
도리님의 글에서도 알수있듯이 변경조건/결정 커버리지는 결정/조건커버리지를 커버하지만, 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)를 수행해야 조건/결정 커버리지를 수행한것은 아닙니다.) 변경 조건/결정 커버리지는 “전체 조건식 참, 거짓 한 번 씩 수행, 개별 조건식 참, 거짓 한 번 씩 수행”을 기본적으로 커버하기 때문에 조건/결정 커버리지를 커버한다고 할 수 있습니다.
본문의 개념도는 해당 커버리지를 수행한 샘플이므로 커버리지의 이해를 위해서는 설명 부분을 읽어보시는 것이 좋습니다.