Part02. 테스트 설계기법(제9장 구조 기반 테스트)
제9장 구조 기반 테스트
9.1 개요
- 구조 기반 테스트 : 프로그램 제어 흐름이나 자료 흐름 정보를 이용하여 테스트 케이스를 설계하는 방법
9.2 제어 흐름 그래프
- 제어 흐름 그래프 : 프로그램 구조를 매우 효과적으로 나타낼 수 있는 수단
- 기본 블록 : 단일 진입점과 단일 진출점을 가진 일련의 연속적인 실행 가능한 문장들의 집합
- 제어 흐름 : 기본 블록간의 실행 순서를 나타냄
- 시작 노드 : 입력 간선이 없는 노드
- 종료 노드 : 출력 간선이 없는 노드
9.3 구조 기반 테스트의 이해
- 모든 가능한 경로를 테스트하는 대신 일부 경로만 테스트
- 문장 테스트
- 분기 테스트
- 조건 테스트
- 다중 조건 테스트
- MCDC 및 자료 흐름 테스트
9.4 문장 테스트
- 문장 테스트 : 프로그램의 모든 문장을 최소한 한 번은 행하도록 요구
- 단점 : 프로그램상에 존재하는 가능한 경우들을 모두 검증하지 못함
- 문장 커버리지 : 테스트 케이스 집합에 의해 문장 테스트가 어느 정도 이루어졌는지 정량적으로 알 수 있음
9.5 결정 테스트
- 결정 테스트 : 프로그램상에 나타난 모든 결정문의 결과가 참이 되는 경우와 거짓이 되는 경우를 최소한 한 번은 실행하도록 요구
- 결정 커버리지
- 결정 테스트는 문장 테스트를 포용한다.
9.6 조건 테스트
- 조건 테스트 : 프로그램의 조건에 나타난 모든 조건이 true가 되는 경우와 false가 되는 경우 모두를 발생하게 하는 입력 데이터를 테스트 집합으로 사용할 것을 요구
- 조건 커버리지
- 조건 테스트와 결정 테스트는 서로 포용하지 않는다.
9.7 결정/조건 테스트
- 결정/조건 테스트 : 결정 테스트와 조건 테스트를 모두 만족하는 테스트 케이스 집합을 설계하도록 요구
- 결정/조건 커버리지
9.8 다중 조건 테스트
- 다중 조건 테스트 : 프로그램의 결정들에 사용된 모든 조건의 조합을 테스트할 수 있는 입력 데이터들을 테스트 데이터 집합으로 선정
- 문장 테스트, 결정 테스트, 조건 테스트 및 결정 조건 테스트를 포용한다.
- 다중 조건 커버리지
9.9 변형된 조건/결정 테스트(MCDC)
- 변형된 조건/결정 테스트 : 전체 결정의 평가에 영향을 미치는지 알아보기 위한 테스트 케이스 생성
- 결정/조건 테스트와 다른 점은 결정을 구성하는 각 조건이 독립적으로 결정의 결과에 영향을 미쳐야 함
- 독립적 : 결정을 구성하는 다른 조건의 값을 고정하고 해당 조건의 값만 변경해야 한다
- MCDC 커버리지
9.10 기본 경로 테스트
- 기본 경로 테스트 : 프로그램 경로 중에서 기본 경를 테스트하도록 요구
- 기본 경로 : 프로그램 나머지 경로를 만드는 데 기본이 되는 경로