구조기반 테스트 – 테스트커버리지

개념
- 소프트웨어나 시스템의 구조를 중심으로 테스팅하는 기법 - 특정 커버리지를 달성하기 위한 테스트를 설계하고, 케이스를 도출하기 위해 사용되는 기법

I. 구조 기반 테스트의 개요

  • 소프트웨어나 시스템의 구조를 중심으로 테스팅하는 기법
  • 특정 커버리지를 달성하기 위한 테스트를 설계하고, 케이스를 도출하기 위해 사용되는 기법

 

II. 구조 기반 테스트 목적/대상/유형

테스팅의 충분성 (Thoroughness) 측정

명세기반기법 적용후 사용시 최적의 결과 도출

시스템 아키텍처 기반에 수행 가능 (코드, 호출체계)

모든 테스트 레벨에서 수행가능 (시스템/통합/인수 테스트)

  • 시스템 또는 SW와 구조가 테스트 스위트에 의해 테스트된 정도
  • 구조 종류에 대해 커버된 퍼센트로 표시

 

  가. 구조기반 테스트 목적

  • 프로그램 내부 구조 및 복잡도를 검증하는 테스트로서 WhiteBox 테스트라고도 함
  • 코드 구조의 효율성 및 오류사항을 발견하기 위한 테스트로서 Logic Driven 방식임

 

  나.구조기반 테스트 대상

구 분

구조기반 테스트 대상

컴포넌트 레벨

  • 구문, 결정, 분기문, 코드

통합 레벨

  • 콜트리(한 모듈이 다른 모듈 호출하는 관계)

시스템 레벨

  • 메뉴 구조, 비즈니스 프로세스, 웹페이지 구조
 

 

   다.구조기반 테스트 유형

유형

설명

구문 커버리지

- Statement Coverage

- 테스트 스위트에 의해 실행된 구문이 몇 퍼센트인지 측정하는 것

- 다른 커버리지에 비해 가장 약함

결정 커버리지

- Decision Coverage, Branch Coverage

- 테스트 스위트에 의해 실행된 결정 포인트 내의 전체 조건식이 최소한 참(True)이 한번, 그리고 거짓(False)이 한번의 값을 갖는지 측정하여 퍼센트로 표현하는 것

- 개별 조건식의 개수와 상관없이 테스트 케이스의 최소 개수는 2 개

- 조건, 조건/결정 커버리지에 비해 약함

조건 커버리지

- Condition Coverage

- 전체 조건식의 결과와 관계없이 각 개별 조건식이 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것

- 결정 커버리지 보다 강력한 형태의 커버리지

조건/결정 커버리지

- 전체 조건식의 결과가 참 한번, 거짓 한번을 갖도록 각 개별 조건식을 조합하는데, 이때 각 개별 조건식도 참 한번, 거짓 한번을 모두 갖도록 개별 조건식을 조합하는 것으로 결정 커버리지와 조건 커버리지를 포함하는 커버리지

변경조건/결정 커버리지

- Modify Condition/Decision Coverage

- Mc/DC는 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 독립적으로 영향을 주도록 함으로써 조건/결정 커버리지를 향상시킨 것

- 결정 커버리지, 조건/결정 커버리지 보다 강력

다중조건 커버리지

- Multiple Condition Coverage

- 결정 포인트 내에 있는 모든 개별 조건식의 모든 가능한 논리적 조합을 고려한 가장 강력한 논리적 수준의 100% 커버리지를 보장

 

 

III. 구조기반테스트 커버리지의 의사결정 테이블

  가. Dpoint=A and B 에 대한 결정 커버리지의 결정 테이블

Dpoint

A

B

0

1

0

1

1

1

 

  나. Dpoint=A and B 에 대한 조건 커버리지의 결정 테이블

Dpoint

A

B

0

1

0

0

0

1

 

  다. Dpoint=A and B 에 대한 조건/결정 커버리지의 결정 테이블

Dpoint

A

B

0

0

0

1

1

1

 

  라. Dpoint=A and B 에 대한 변경조건/결정 커버리지의 결정 테이블

Dpoint

A

B

0(B가 A에 독립적)

1

0

0(A가 B에 독립적)

0

1

1(A가 B에 독립적,

B가 A에 독립적)

1

1

 

마. Dpoint=A and B 에 대한 다중조건 커버리지의 결정 테이블

Dpoint

A

B

1

1

1

0

1

0

0

0

1

0

0

0

 

 

IV. 커버리지 포함관계 및 분류

  가. 커버리지의 포함관계

 

 

   나. 커버리지의 분류

 

커버리지 븐류

SC

DC

CC

C/DC

MC/DC

MCC

프로그램내에 있는 구문을 적어도 한번  수행

 

프로그램내에 있는 모든 결정포인트에 대해 모든 가능한 결과(참,거짓)을 적어도 한번 수행

 

 

프로그램내에 있는 결정포인트 내의 모든 각 개별조건식에 대한 모든 가능한 결과(참,거짓)에 대해 적어도 한번 수행

 

 

프로그램내에 있는 모든 개별조건식은 독립적으로 전체조건식(판단문)의 결과에 영향을 줌. 즉,결정 포인트내의 다른 개별조건식의 결과와는 독립적으로 해당 개별조건식은 전체조건식의 결과에 영향을 줌

 

 

 

 

결정 포인트 내의 개별조건식 결과(참, 거짓)에 대한 모든 가능한 조합을 적어도 한번 수행

 

 

 

 

 

포함관계

 

SC

SC

DC,CC

C/DC

MC/DC

 

SC : 구문 커버리지, DC : 결정 커버리지, CC : 조건 커버리지, C/DC : 조건/결정 커버리지, MC/DC : 변경조건/결정 커버리지, MCC : 다중조건 커버리지

 

V. 명세기반 기법 vs 구조기반 기법

관점

명세기반 기법

구조기반 기법

테스트 대상

기능적 요구사항

내부구조 및 복잡도

테스트 목적

기능적 정확성

Logic 효율성

적용 단계

대부분의 테스트에 적용

단위테스트 위주

수행 형태

Data, I/O Driven

Logic Driven

 

 

 

댓글