본문 바로가기

CSTS

9. 구조 기반 테스트

구조 기반 테스트는 프로그램 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스를 설계하는 방법

구조적 테스트, 화이트박스 테스트, 글래스 박스 테스트라고도 함


제어 흐름 그래프


프로그램 구조를 효과적으로 나타내는 수단

 

제어 흐름 그래프 요소

  • 기본 블록 : 단일 진입점, 단일 진출점을 가진 일련의 연속적인 실행 가능한 문장들의 집합
  • 제어 흐름 : 기본 블록 간의 실행 순서를 나타냄

구조 기반 테스트의 이해


  • 가장 이상적인 구조 기반 테스트는 프로그램의 모든 경로를 최소 한 번 실행하여 테스트하는 것
  • 일부 경로만 테스트하는 방법 사용
  • 대표적인 기본 경로 테스트 : 문장 테스트, 분기 테스트, 조건 테스트, 다중 조건 테스트, MCDC 및 자료 흐름 테스트

문장 테스트

프로그램의 모든 문장을 최소 한 번은 행하도록 요구

 

절차

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

문장 커버리지 : 테스트 케이스 집합에 의해 문장 테스트가 어느정도로 이루어졌는지

문장 테스트는 프로그램 상에 존재하는 가능한 경우를 모두 검증하지 못함


결정 테스트

프로그램 상에 나타난 모든 결정문의 결과가 참이 되는 경우와 거짓이 되는 경우를 최소한 한 번 실행하도록 함

 

절차

  • 테스트 대상 프로그램에 해당하는 제어 흐름 그래프 작성
  • 아직 실행되지 않은 결정의 결과에 도달하는 프로그램 경로 집합을 식별
  • 프로그램 경로 집합에 잇는 각 프로그램 경로에 
    1. 경로를 실행하는 입력 데이터 식별
    2. 명세 등에서 해당 입력에 대한 기대 출력을 식별
  • 두 번째와 세 번째를 모든 결정의 결과가 실행될 때까지 반복

결정 커버리지 

 

테스트 요건 간의 관계는 포용 관계로서 서로 비교할 수 있음


조건 테스트

프로그램의 조건에 나타난 모든 조건이 true가 되는 경우와 false가 되는 경우 모두 발생하게 하는 입력 데이터를 테스트 케이스 집합으로 사용

 

절차

  • 테스트 대상 프로그램에 해당하는 제어 흐름 그래프 작성
  • 아직 실행되지 않은 조건의 결과에 도달하는 프로그램 경로 집합을 식별
  • 프로그램 경로 집합에 있는 각 프로그램 경로에 
    1. 경로를 실행하는 입력 데이터 식별
    2. 명세 등에서 해당 입력에 대한 기대 출력을 식별
  • 두 번째와 세 번째를 모든 조건의 결과가 실행될 때까지 반복

조건 커버리지

조건 테스트와 결정 테스트는 서로 포용하지 않음


결정/조건 테스트

결정 테스트와 조건 테스트를 모두 만족하는 테스트 케이스 집합을 설계하도록 요구

 

절차

  • 테스트 대상 프로그램에 해당하는 제어 흐름 그래프를 작성
  • 아직 실행되지 않은 결정과 조건의 결과에 도달하는 프로그램 경로 집합 식별
  • 프로그램 경로 집합에 있는 각 프로그램 경로에 
    1. 경로를 실행하는 입력 데이터를 식별
    2. 명세 등에서 해당 입력에 대한 기대 출력을 식별
  • 두 번째와 세 번째를 모든 결정과 조건의 결과가 실행될 때까지 반복

결정/조건 커버리지


다중 조건 테스트

더욱 강화된 테스트 케이스 집합을 얻기 위해 

결정이 가질 수 있는 경우뿐만 아니라 결정을 구성하는 기본 조건들이 가질 수 있는 모든 가능한 조합까지 검증

 

프로그램의 결정들에 사용된 모든 조건의 조합을 테스트할 수 있는 입력 데이터를 테스트 케이스 집합으로 선정

문장 테스트, 결정 테스트, 결정 테스트, 조건 테스트 및 결정/조건 테스트 포용

 

절차

  • 테스트 대상 프로그램에 해당하는 제어 흐름 그래프 작성
  • 아직 실행되지 않은 조건의 조합을 실행하는 프로그램 경로들을 식별
  • 프로그램 경로 집합에 있는 각 프로그램 경로에 
    1. 경로를 실행하는 입력 데이터를 식별
    2. 명세 등에서 해당 입력에 대한 기대 출력을 식별
  • 두 번째와 세번 째를 모든 결정에 포함된 조건들의 조합이 실행될 때까지 반복

다중 조건 커버리지


변형된 조건/결정 테스트(MCDC)


결정을 구성하는 각 조건이 독립적으로 결정의 결과에 영향을 미쳐야 함

결정을 구성하는 다른 조건의 값은 고정하고 해당 조건의 값만 변경해야 한다는 의미

조건이 결정을 구성하는 다른 조건과 무관하게 전체 결정의 평가에 영향을 미치는지 알아보기 위한 테스트 케이스 생성

 

true로 만드는 케이스와 false로 만드는 케이스 두개를 선정,

다른 모든 조건의 값은 동일하게 고정하고 전체 결정의 값이 true가 되는 경우와 false가 되는 경우가 발생하도록 선정

 

절차

  • 프로그램의 모든 결정에 대해 두 번째부터 여섯 번째까지 반복
  • 주어진 결정을 트리 구조로 변환
  • 트리를 따라 위로 올라갈 때 루트 노드에 도달할 때까지 반복
    1. 테스트 대상 조건(간단히 테스트 조건)의 부모 노드가 OR면 형제 노드에게 false 할당
    2. 만약 부모 노드가 AND라면 형제 노드에게는 true 할당
  • 트리 아래 방향으로 아직까지 값이 할당되지 못한 기본 조건들이 있다면 
    1. 방문 노드가 AND, true이면 자식 노드 모두 true / false라면 자식 노드 중 어느 하나는 false가 되어야 함
    2. 방문 노드가 OR, true면 자식 노드 중 하나는 true / false라면 자식 노드 모두 false가 되어야 함
  • 테스트 조건의 진리 값을 true와 false로 각각 설정한 후
    1. 트리의 각 조건에 할당된 진리 값을 생성할 수 있는 입력 데이터 식별
    2. 명세 등에서 해당 입력에 대한 기대 출력을 식별
  • 두 번째부터 다섯 번째까지의 과정의 결정을 구성하는 모든 조건에 대해 반복

MCDC 커버리지


기본 경로 테스트

프로그램 경로 중에서 기본 경로를 테스트하도록 요구

기본 경로는 프로그램 나머지 경로를 만드는 데 기본이 되는 경로로 생각할 수 있음

 

어떤 경로도 선형적으로 조합하여 표현 가능

프로그램의 모든 경로를 선형적 조합으로 표현할 수 있는 독립적인 경로 집합을 구하는 것이 목적

 

베이스 라인

  • 테스트 대상 프로그램에서 가장 베이스라인이 되는 프로그램 경로 선정
  • 두 번째 경로를 생성하기 위해 베이스라인의 첫 번째 결정값을 변경하고
    베이스라인 나머지 결정값을 최대한 변경하지 않음
  • 세 번째 경로를 선정하기 위해 베이스라인 경로의 두 번째 결정을 변화시킴
    첫 번째 결정은 이제 변경하지 않고 베이스라인 경로와 동일하게 함

'CSTS' 카테고리의 다른 글

11. 테스트 프로세스 개요  (2) 2021.03.01
10. 명세 기반 테스트(블랙박스 테스트)  (2) 2021.02.28
8. 정적 테스트  (0) 2021.02.27
7. 테스트 자동화  (1) 2021.02.26
6. 소프트웨어 생명 주기 모델과 테스트  (0) 2021.02.26