[소프트웨어공학] 구조 기반 테스트

수진·2023년 6월 11일
0

소프트웨어공학

목록 보기
20/20

구조 기반 테스트란?
화이트박스 테스트 케이스 설계

  • 프로그램 결함 식별을 목적으로 프로그램 코드로부터 생성되는 여러 정보(제어 흐름 정보, 자료 흐름 정보, 조건 등을 이용하여 테스트 케이스를 설계하는 방법

1. 구조 기반 테스트/구조 커버리지 분석의 종류

1. Statement Testing(문장 테스팅)

  • 테스트하려는 프로그램 내의 모든 문장들을 적어도 한번 이상 실행하도록 요구하는 테스트 케이스 설계 방법
  • 가장 기본적인 구조 기반/화이트 박스 테스트
  • 100%의 문장 커버리지: 프로그램 내의 모든 문장들을 적어도 한번씩 접근하여 테스트
  • 제어 흐름 그래프의 모든 블록이 수행되면 당연히 프로그램의 모든 문장들이 수행되었음을 의미
  • 테스트 커버리지 아이템(테스트 케이스에 반드시 포함되어야 되는, 실행되어야 되는 단위, TS): 문장
  • 실행 불가능한 블록이 존재하는 경우에 100% 블록 커버리지를 달성할 수 없음
    -> 문장을 제거하고 프로그램 재구성 후, 다시 테스팅 수행

절차
1. 테스트 대상 프로그램에 해당하는 제어 흐름 그래프 작성
2. 모든 실행 가능한 기본 블록들을 지나가는 프로그램 경로 집합을 식별
3. 경로 실행하는 입력 데이터 식별, 명세 등으로부터 해당 입력에 대한 기대 출력 식별

2. Branch Testing(분기 테스팅)

  • 분기 테스팅은 프로그램을 제어 흐름 그래프로 변환했을 때 제어 흐름 그래프의 모든 간선을 최소한 한번은 실행하는 테스트 케이스가 테스트 케이스 집합에 포함되도록 요구
  • 테스트 커버리지 아이템: 분기 또는 간선
  • 문장 커버리지를 만족하면 분기 커버리지를 만족하지 않지만 분기 커버리지를 만족하면 문장 커버리지를 만족함(모든 간선 실행 시, 모든 노드를 실행하기 때문)

3. Decision Testing(결정 테스팅)

  • 프로그램의 모든 결정들에 대해 모든 가능한 결과를 가져올 수 있도록 테스트 케이스 집합을 설계
  • 각 결정이 가질 수 있는 경우는 'true'와 'false'이므로 프로그램의 각 결정에 대해 'true'와 'false'가 산출될 수 있도록 하는 테스트 케이스가 최소한 1개 포함되어 있어야 함
  • 테스트 커버리지 아이템: 결정이 가질 수 있는 모든 값

조건 vs 결정

DO178B(항공 전자 시스템에서 사용되는 소프트웨어의 FAA 승인을 위한 가이드라인)

  • A condition is a Boolean expression containing no Boolean operators.
  • A decision is a Boolean expression composed of conditions and zero or more Boolean operators.
  • 조건(Condition): NOT을 제외한 AND, OR 등의 논리 연산자가 없는 조건, 기본 조건식을 그냥 조건 또는 'clause'라고 함
  • 결정(Decision): 조건이나 조건이 AND, OR 등의 논리 연산자로 관계되어 있음(조건을 포함)

Decision Testing vs Branch Testing

  • ISTQB에서는 결정 테스팅과 분기 테스팅을 구별하지 않음
  • ISO/IEC/IEEE 29119에서는 결정 테스팅과 분기 테스팅을 달리 정의
  • ISO/IEC/IEEE 29119에서 정의한 분기 테스팅은 프로그램을 제어 흐름 그래프로 표현했을 때 제어 흐름 그래프 상의 분기(또는 간선)들을 최소한 한번은 실행되기를 요구
  • 결정문이 분기를 가지지 않은 경우에는 분기 테스팅의 테스트 케이스 집합과 결정 테스팅의 테스트 케이스 집합이 동일하지 않을 수 있음

0개의 댓글