본문 바로가기

프로그램상식

구조적 커버리지 종류

반응형

구조적 커버리지 종류

1. 문장 커버리지 (Statement Coverage)

정의: (실행된 statement 수) / (전체 statement 수) * 100

예제

printf("hello")
if (x > 2) {
    printf("hello")
}
print("hello")

x = 1 인 경우 문장 커버리지는 3/4*100 = 75%

2. 결정 커버리지 (Decision Coverage)

정의: (수행된 분기 수) / (전체 분기 수) * 100

  • 하나의 if 문에 대해 결정 커버리지 100% 를 달성하기 위해서는 true 와 false 데이터가 모두 필요하다
  • and 도는 or 조건에 의해 오른쪽 조건에 대해서는 조건식을 확인하지 않을 수 있다.

예제

printf("hello")
if (x > 2 && y < 6) {
    printf("hello")
} else {
    printf("hello")
}
print("hello")

결정 커버리지 100%를 달성하기 위해서는

  1. (x > 2 && y < 6) -> true case
  2. (x > 2 && y < 6) -> false case
    를 만족하는 input 조합을 찾으면 된다.

3. 조건 커버리지 (Condition Coverage)

정의: (수행된 조건 수) / (전체 조건 수) * 100

  • if 문의 전체 조건식을 구성하는 개별 조건식 각각에 대한 true 와 false 를 모두 거쳐야 한다.

예제

printf("hello")
if (x > 2 && y < 6) {
    printf("hello")
} else {
    printf("hello")
}
print("hello")

같은 예제이며, 조건 커버리지 100%를 달성하기 위해서는 x > 2y < 6 각각의 조건식에 대해 true 와 false 의 경우를 모두 제시해야 한다.

  1. { true, true } and { false, false }
  2. { true, false } and { false, true }
    경우가 있다.

4. 조건/결정 커버리지 (Condition/Decision Coverage)

반응형