나랑 now

[CSTS 요약] 9 구조 기반 테스트 본문

자격증/CSTS

[CSTS 요약] 9 구조 기반 테스트

nowj8n 2024. 2. 4. 13:06
반응형

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

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

 

제어 흐름 그래프

프로그램 구조를 흐름 그래프(flow-chart)로 나타냄

  • 기본 블록: 단일 진입점과 단일 진출점을 가진 연속적인 실행 가능한 문제들의 집합
    제어 흐름 그래프의 노드가 되며 박스로 표시
  • 제어 흐름: 기본 블록 간의 실행 순서
    화살표로 표시

 

구조 기반 테스트의 이해

이상적인 구조 기반 테스트는 프로그램의 모든 경로를 최소한 한 번씩 실행하여 테스트하는 것이겠지만,

물리적, 현실적 문제로 인해 구조 기반 테스트는 일부 경로만 테스트

문장 테스트, 분기 테스트, 조건 테스트, 다중 조건 테스트, MCDC 및 자료 흐름 테스트 등 사용

 

문장 테스트

프로그램의 모든(실행 가능한) 문장을 최소한 한 번 수행

Excercise 02) 다음 프로그램에 대해 문장 테스트에 따라 테스트 케이스를 설계하라
명세 | 함수 foo는 입력 x와 z 또는 y와 z가 양수이거나, x, y 값에 상관없이 z가 10보다 크면 10을 반환한다. 그 외의 경우는 0을 반환한다.
int foo(int x, int y, int z){
    int w = 0;
    if (x > 0 || y > 0))
            z = z+10;
    if (z > 10)
            w = 10;
    return w;
}

문장 테스트 실행 경로

 

위 프로그램의 경로 집합은 모든 블록을 거치는 TS1=[<B1, B2, B3, B4, B5>}, TS2={<B1, B2, B3, B5>, <B1, B3, B4, B5>}, TS3={<B1, B3, B5>} 모두 네 개의 경로가 있으며, TS2를 테스트 경로 집합으로 삼는다면 4개의 경로 중 1개의 경로만 테스트

 

결정 테스트

문장 테스트는 더 적은 개수의 테스트 데이터들로 쉽게 만족할 수 있지만, 프로그램상 존재하는 모든 블록들을 검증하지 못함

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

Exercise 04. Excercise 02의 프로그램을 사용하여 결정 테스트에 따라 테스트 케이스를 설계해보자.

결정 테스트의 예시

 

 

조건 테스트

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

결정 테스트는 만족하지만 조건 테스트는 만족하지 못함

위 테스트 집합은 각 분기의 true, false를 모두 테스트하는 결정 테스트는 만족하지만, y<=-3을 false로 갖는 조건 테스트는 불가능하므로 조건 테스트를 만족하지 않음

결정 테스트를 만족하며 조건 테스트도 만족

 

결정 테스트와 조건 테스트는 서로 충분 조건이 아님.

 

결정/조건 테스트

서로 충분 조건이 아닌 결정 테스트와 조건 테스트에 대해 결정/조건 테스트(Decision Condition Test)는 모두 만족하는 테스트 케이스 집합을 설계

결정 조건 테스트를 만족하는 테스트 케이스

 

다중 조건 테스트

프로그램의 결정들에 사용된 모든 조건의 조합을 테스트
문장 테스트, 결정 테스트, 조건 테스트 및 결정 조건 테스트를 포용

 

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

조건 테스트와 결정 테스트 요건을 모두 만족하되, 결정을 구성하는 각 조건이 독립적으로 결정의 결과에 영향을 미쳐야 함

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

 

 

참고: https://velog.io/@dahunyoo/%EA%B5%AC%EC%A1%B0-%EA%B8%B0%EB%B0%98-%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%99%80-%EC%BD%94%EB%93%9C-%EC%BB%A4%EB%B2%84%EB%A6%AC%EC%A7%80

반응형