control flow test, data flow test

agnusdei·2025년 6월 19일

Software Engineering

목록 보기
26/59

1. 제어흐름 기반 테스트 (Control Flow Testing)

1) 개념

  • 프로그램의 제어 흐름(Control Flow), 즉 명령문이 실행되는 순서와 흐름에 따라 테스트 케이스를 설계하는 방법입니다.
  • 프로그램의 분기, 반복, 조건문 등 흐름 구조를 기준으로 테스트 경로(path)를 추출해 테스트합니다.

2) 목적

  • 모든 가능한 실행 경로나 주요 분기점을 테스트하여 논리적 오류 발견
  • 프로그램의 흐름에 따른 버그(예: 잘못된 조건, 분기 누락)를 찾는 데 효과적

3) 구성요소

  • 제어흐름 그래프(Control Flow Graph, CFG): 노드(명령문 또는 블록)와 간선(제어 흐름)으로 표현
  • 경로(path): 시작 노드부터 종료 노드까지의 실행 경로
  • 기본 경로 테스트: 독립적인 경로를 테스트하여 커버리지 확보

4) 주요 기법

  • 구문 커버리지 (Statement Coverage)
  • 결정 커버리지 (Decision Coverage)
  • 경로 커버리지 (Path Coverage)
  • 조건/결정 커버리지 (Condition/Decision Coverage)

5) 특징

  • 테스트 설계가 비교적 명확하고 구조적
  • 논리적 흐름에 중점, 데이터 값의 변화는 고려하지 않음
  • 제어 흐름에 따른 오류를 효과적으로 찾음

2. 데이터 플로우 기반 테스트 (Data Flow Testing)

1) 개념

  • **프로그램 내 변수의 정의(Definition)와 사용(Use)**에 초점을 맞춘 테스트 기법
  • 변수의 값이 언제, 어디서 할당되고, 어디서 사용되는지를 추적해 테스트 케이스를 설계

2) 목적

  • 변수 관련 오류(예: 초기화 안 된 변수 사용, 잘못된 변수 값 전달)를 발견
  • 변수의 생명주기(lifecycle)를 따라 적절히 테스트하여 코드 품질 향상

3) 구성요소

  • 변수 정의(Definition): 변수에 값이 할당되는 위치
  • 변수 사용(Use): 변수의 값이 참조되는 위치 (계산이나 조건문 등)
  • 정의-사용 경로(Definition-Use Paths): 변수 정의에서 사용까지의 경로

4) 주요 기법

  • 정의-사용 커버리지 (Def-Use Coverage)
  • 정의-사용 쌍(Definition-Use Pairs) 테스트

5) 특징

  • 변수의 흐름과 사용에 집중하여 논리적 오류 발견 가능
  • 제어 흐름 테스트보다 더 세밀한 테스트 설계 가능
  • 복잡한 데이터 관계가 있는 프로그램에서 특히 유용

요약 비교

구분제어흐름 기반 테스트데이터 플로우 기반 테스트
초점프로그램 명령문의 실행 흐름(분기, 반복)변수의 정의와 사용 관계
주요 목적실행 경로와 조건 테스트로 논리적 오류 탐지변수 관련 오류(초기화 누락 등) 발견
테스트 설계 방법제어흐름 그래프, 경로 및 분기 중심변수의 정의-사용 경로 추적
주요 커버리지 유형구문, 결정, 경로, 조건/결정 커버리지정의-사용 커버리지, 정의-사용 쌍 테스트
특징제어 흐름에 의한 오류 발견에 효과적변수 관련 버그, 데이터 오류 탐지에 효과적

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글