ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9.구조 기반 테스트
    QA 2021. 11. 2. 20:29

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

     

    제어 흐름 그래프

     

    기본 블록

    • 단일 진입점과 단일 진출점을 가진 일련의 연속적인 실행 가능한 문장들이 집합
    • 기본 블록의 문장들은 모두 함께 실행되거나 모두 함께 실행되지 않는다.
    • 가각 제어 흐름 그래프의 노드가 되며 박스로 표시

    제어흐름

    • 기본 블록 간의 실행 순서
    • 화살표로 표시

     

    예제 프로그램 기본 블럭표시

    B4 ,B5 블럭
    예) i++
         i+5
    이어서 실행되는 경우 같은 블럭

     


    구조 기반 테스트의 이해

    가장 이상적인 구조 기반 테스트는 프로그램의 모든 경로를 최소한 한 번은 실행하여 테스트하는 것

    현실적으로는 불가능

    모든 가능한 경로를 테스트 하는 대신 일부 경로만 테스트 하는 방법

     


    문장테스트

    프로그램의 모든 (실행 가능한)문장을 최소한 한 번은 행하도록 요구한다.

     

    절차

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

    전체 실행이 가능한 프로그램 문장의 수중에 실행된 문장의 수 86%커버리지

     

    계산

     

    문장 커버리지


    결정 테스트(분기)

     

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

     

    절차

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

     

    경로X  분기가 되는 결정조건(T,F), 분기가 2개니까 T,F 각각해서 4개 분의 케이스 실행 분기(T,F)갯수

     

     

    전체 결정조건 T,F수 분에 케이스 실행 T,F수

    결정 커버리지 - 문장 테스트 포용

     


    조건 테스트

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

     

    절차

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

     

     

    테스트 케이스

    케이스 1은 총 6개의 결정 결과값 중에서 3개가 산출되기 때문에 6분의3 X 100 = 50% 커버리지

    (6개 결정 값은 = 조건마다 true, false )

     

    쪼갤 수 없는 전체 조건의 수 분에 실행되는 조건 수

     

    조건테스트 만족, 결정 테스트 만족하지 않은 테스트 케이스

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


    결정/조건 커버리지

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

     

    절차

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

    결정/조건 커버리지

    조건 + 결정 T,F 갯수 분에 실행되는 개별 조건 수
    1.2 케이스만 하면 8분의 7 * 100 = 88% 조건/결정 커버리지를 갖지만 100%를 채우려면 3케이스 필요.

     


    다중 조건 테스트

     

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

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

    테스트중 강도가 가장 높음

     

     

    절차

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

    다중 조건 커버리지

    모든경우의 수가 실행되야 100%를 만족한다.(결정에 모든수를 구하고 테스트케이스를 보면 쉽다.)

    예)1부터3케이스 다중커버리지 구하기

     

    첫번째 결정 조건 조합( f , f)누락으로 5/6*100 = 84% 

    ((첫번째 결정 조건 t,t   t,f   f,t   f,f),  두번째결정 2 ( t , f ))

     

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

     


    변형된 조건/결정 테스트(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 커버리지

    조건이 x>10 T,F 일때 y=0 노드자식이 T,T가 될수밖에 없고 II는 자식노드가 f 이기때문에 Z>10은 F,F가 될수밖에 없다. (t,t f,f 고정)


    기본 경로 테스트

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

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

     

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

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

     

    베이스 라인

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

    'QA' 카테고리의 다른 글

    11. 테스트 프로세스 개요  (0) 2021.11.03
    10.  (0) 2021.11.03
    8.정적 테스트  (0) 2021.10.27
    7. 테스트 자동화  (0) 2021.10.26
    6. 소프트웨어 생명 주기 모델과 테스트  (0) 2021.10.25
Designed by Tistory.