구조 기반 테스트

agnusdei·2025년 6월 19일

Software Engineering

목록 보기
25/59

구분쉬운 설명특징 및 차이점 요약
구문 커버리지
(Statement Coverage)
코드에 있는 각 명령문(줄)이 적어도 한 번 실행됐는지 확인하는 것- 가장 기본
- 단순히 ‘코드가 실행됐냐’만 체크
- 조건이나 분기 무시
결정 커버리지
(Decision Coverage)
if, while 같은 조건문에서 ‘참(true)’과 ‘거짓(false)’ 결과가 각각 한 번씩 실행됐는지 확인- 조건문 분기 결과를 모두 실행해야 함
- 구문 커버리지 포함
- 조건값을 두 방향 모두 테스트
조건 커버리지
(Condition Coverage)
복잡한 조건문 내 각각의 조건이 ‘참’과 ‘거짓’을 한 번씩 가져봤는지 확인- 조건 하나하나를 따로 테스트
- 조건 내부 각 요소의 결과 확인
- 구문 커버리지 만족
조건/결정 커버리지
(Condition/Decision Coverage)
조건 커버리지와 결정 커버리지를 둘 다 만족하는 것- 조건과 분기 모두 체크
- 조건과 결정 모두 충족해야 통과
변경 조건/결정 커버리지
(Modified Condition/Decision Coverage, MC/DC)
각 조건이 독립적으로 결과에 영향을 미치는지 테스트- 조건끼리 서로 영향을 안 받도록 따로 테스트
- 안전-critical 분야 필수
- 조건/결정 커버리지보다 엄격
다중 조건 커버리지
(Multiple Condition Coverage)
모든 조건의 가능한 ‘참/거짓’ 조합을 전부 테스트- 모든 조건 조합 다 테스트(완전 검사)
- 가장 완벽하지만 시간이 많이 듬
경로 커버리지
(Path Coverage)
프로그램의 모든 가능한 실행 경로를 한 번씩 다 실행해 보는 것- 코드의 모든 경로 다 검사
- 가장 완벽한 테스트 방법이나 현실적으론 비효율적

쉽게 생각하는 방법

  • 구문 커버리지 = “코드 한 줄이라도 실행됐어?”
  • 결정 커버리지 = “조건문 결과가 ‘참’도, ‘거짓’도 실행됐어?”
  • 조건 커버리지 = “복잡한 조건 안에 각각 ‘참’과 ‘거짓’ 결과가 나왔어?”
  • MC/DC = “조건들이 서로 독립적으로 테스트됐어?”
  • 다중 조건 커버리지 = “모든 경우 다 테스트했어?”
  • 경로 커버리지 = “가능한 모든 길을 다 돌아봤어?”

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

0개의 댓글