정처기 감자
SW 개발테스트

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

테스트 커버리지 종류 구문(문장), 결정, 조건, MC DC

SW개발테스트
읽는데 7분 소요
처음 쓰여진 날: 2025-09-23
마지막 수정일: 2025-11-09
조회수: —
선수학습(1개)
  • 테스트 레벨(단위, 통합, 시스템, 인수 테스트)과 V 모델

요약

소프트웨어 테스트의 핵심 개념인 테스트 커버리지(구문, 결정, 조건, 조건/결정, MC/DC)를 알아보고, 정보처리기사 실기 기출문제를 통해 완벽하게 대비합니다.

소프트웨어 테스트에서 테스트 커버리지는 테스트가 소스 코드를 얼마나 충분히 검증했는지를 나타내는 지표입니다. 높은 커버리지가 반드시 높은 품질을 보장하는 것은 아니지만, 테스트가 부족한 부분을 식별하고 테스트의 신뢰성을 높이는 데 중요한 역할을 합니다.

특히 화이트박스 테스트에서 사용되는 다양한 커버리지 기준을 이해하는 것은 정보처리기사 시험에 자주 출제되는 핵심 개념입니다.

테스트 커버리지 종류 요약

커버리지 강도: 구문 < 결정 < 조건 < 조건/결정 < 변경 조건/결정(MC/DC)

커버리지 종류핵심 키워드
구문(문장) 커버리지모든 명령문, 한 번 이상 실행
결정(분기) 커버리지각 결정문, 참/거짓, 한 번 이상
조건 커버리지결정문 내 각 조건식, 참/거짓
조건/결정 커버리지조건 + 결정 커버리지 모두 만족
변경 조건/결정 커버리지개별 조건식, 독립적 영향

명령문, 결정문, 조건식

용어정의예시
명령문실행 가능한 코드 한 줄 (실행문)System.out.println("Hello");, x = 5;
결정문참/거짓을 판단하는 조건부 문장의 전체 조건if (x > 0 && y < 10), while (a < b)
조건식결정문 내부의 개별 비교 연산위 결정문 예시에서 x > 0, y < 10, a < b 이부분만 조건식

구문(문장) 커버리지 (Statement Coverage)

구문 커버리지는 소스 코드의 모든 실행 가능한 문장(명령문)이 적어도 한 번 이상 실행되었는지를 측정하는 가장 기본적인 커버리지 기준입니다.

  • 장점: 이해하기 쉽고 테스트 케이스를 만들기 간편합니다.

  • 단점: 코드의 논리적인 분기(branch)를 모두 테스트하지 못할 수 있습니다.

  • 예시 코드:

java
코드 하이라이팅 중…
  • 100% 커버리지 테스트 케이스: x = 5
  • 위 테스트 케이스는 if문의 참(true) 경로만 테스트하지만, 문장 1과 문장 2를 모두 실행하므로 구문 커버리지 100%를 만족합니다.

만약 x가 0 이하(예를 들어 x=-1)이라면 if문의 참(true) 경로(System.out.println("Positive");)를 테스트하지 않습니다. 그러므로 구문 커버리지는 100%를 만족하지 않습니다.


결정(분기) 커버리지 (Decision(Branch) Coverage)

결정 커버리지는 각 결정문의 결과가 참(True)과 거짓(False)을 각각 한 번 이상 갖도록 테스트하는 기준입니다. 구문 커버리지보다 강력한 기준으로 평가됩니다.

  • 장점: 구문 커버리지가 놓치는 분기 경로를 테스트할 수 있습니다.

  • 예시 코드:

java
코드 하이라이팅 중…
  • 100% 커버리지 테스트 케이스:
    1. x = 5, y = 5 (결정문 결과: 참)
    2. x = -1, y = 5 (결정문 결과: 거짓)
  • 위 두 케이스는 결정문의 참/거짓 결과를 모두 포함하므로 결정 커버리지 100%를 만족합니다.

조건 커버리지 (Condition Coverage)

조건 커버리지는 결정문 내에 있는 각각의 개별 조건식1이 참(True)과 거짓(False)을 각각 한 번 이상 갖도록 테스트하는 기준입니다.

  • 주의: 조건 커버리지는 결정문 전체의 결과(참/거짓)는 고려하지 않습니다. 이로 인해 결정 커버리지를 100% 만족시키지 못하는 경우가 발생할 수 있습니다.

  • 예시 코드:

java
코드 하이라이팅 중…
  • 100% 커버리지 테스트 케이스:
    1. x = 5, y = -5 (조건식1: 참, 조건식2: 거짓)
    2. x = -5, y = 5 (조건식1: 거짓, 조건식2: 참)
  • 위 두 케이스는 각 조건식이 참/거짓을 모두 가지므로 조건 커버리지 100%를 만족합니다. 하지만 결정문 전체의 결과는 항상 거짓이므로, 결정 커버리지는 50%만 만족합니다.

조건/결정 커버리지 (Condition/Decision Coverage)

조건/결정 커버리지는 결정 커버리지와 조건 커버리지를 모두 100% 만족하는 테스트 기준입니다. 즉, 각 결정문의 결과가 참/거짓을 각각 한 번 이상 가지면서, 동시에 모든 개별 조건식의 결과도 참/거짓을 각각 한 번 이상 갖도록 테스트 케이스를 설계해야 합니다.

  • 장점: 결정과 조건 수준을 모두 만족시켜 테스트의 신뢰도를 높입니다.

  • 단점: 조건식의 모든 조합을 테스트하지는 않으므로, MC/DC보다는 강도가 약합니다.

  • 예시 코드:

java
코드 하이라이팅 중…
  • 100% 커버리지 테스트 케이스:

    1. x = 5, y = 5
      • 조건식1: 참, 조건식2: 참
      • 결정문 결과: 참
    2. x = -5, y = -5
      • 조건식1: 거짓, 조건식2: 거짓
      • 결정문 결과: 거짓
  • 분석:

    • 결정 커버리지: 결정문의 결과가 참/거짓을 모두 가지므로 100% 만족합니다.
    • 조건 커버리지: 조건1(x>0)과 조건2(y>0)가 각각 참/거짓을 모두 가지므로 100% 만족합니다.

변경 조건/결정 커버리지 (MC/DC, Modified Condition/Decision Coverage)

MC/DC는 조건 커버리지와 결정 커버리지를 모두 만족시키면서, 각 개별 조건식이 다른 조건식의 값과 관계없이 전체 결정문의 결과에 독립적으로 영향을 미치는 경우를 테스트하는 매우 강력한 기준입니다. 주로 항공, 원자력, 의료 등 높은 신뢰성이 요구되는 시스템에서 사용됩니다.

  • 핵심: 각 조건이 '독립적으로' 결과에 영향을 주는 것을 증명해야 합니다.

  • 예시 코드:

java
코드 하이라이팅 중…
  • 100% 커버리지 테스트 케이스 (일부):
    • A의 독립적 영향 증명: B는 False, C는 True로 고정한 상태에서 A를 변경하여 전체 결과가 바뀌는지 확인합니다.
      • A=T, B=F, C=T -> 결과: True
      • A=F, B=F, C=T -> 결과: False
      • 결과: A의 독립적 영향은 존재합니다.
    • B의 독립적 영향 증명: A는 False, C는 True로 고정한 상태에서 B를 변경하여 전체 결과가 바뀌는지 확인합니다.
      • A=F, B=T, C=T -> 결과: True
      • A=F, B=F, C=T -> 결과: False
      • 결과: B의 독립적 영향은 존재합니다.
    • C의 독립적 영향 증명: (A || B)가 True가 되도록 고정한 상태(예: A=T, B=F)에서 C를 변경하여 전체 결과가 바뀌는지 확인합니다.
      • A=T, B=F, C=T -> 결과: True
      • A=T, B=F, C=F -> 결과: False
      • 결과: C의 독립적 영향은 존재합니다.

정보처리기사 실기 대비 문제


Footnotes

  1. 조건식과 결정문을 항상 구분하세요. 조건식은 결정문에 포함되어 있습니다. 참고 ↩


메가커피와 함께, 홈페이지 개선에 참여하세요! ☕
혹시 이용에 불편한 점이나 개선이 필요한 부분을 발견하셨나요? 댓글로 알려주시면 더 나은 감자가 될 수 있어요! 🥔 제보해주신 모든 분께 메가커피 기프티콘을 드립니다! (본인 이메일로 댓글 달아주셔야해요~)

추천 개념

Beta

관련 글

(14개)
제목태그업데이트시험
테스트 레벨(단위, 통합, 시스템, 인수 테스트)과 V 모델
테스트SW개발테스트
2026-01-11-
테스트 케이스 구성 요소
테스트SW개발테스트
2026-01-10-
테스트 자동화(하네스) 구성요소
테스트정처기SW개발테스트
2025-10-07-
정처기 감자정처기 감자

정보처리기사 합격
도와줄라고 하는 감자

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매

실기 이론

  • 이론 공부법
  • DB
  • 네트워크/OS
  • SW 설계
  • SW 개발
  • 보안/신기술

시험 응시

  • 시험장 찾기
  • 원서 접수
  • 응시자격 서류

요약 PDF

  • 26년 1회 이론 압축
  • 초압축 25년 3회
  • 압축 25년 3회

기출문제

  • 전체 기출문제
  • 25년 3회
  • 25년 2회
  • 문제 포럼

감자 이용권

  • 이용권 구매
© 2025 재현기획개발. All rights reserved.
  • 정처기 감자의 시작
  • 업데이트 로그
  • 개인정보 처리방침
  • 이용약관
상호명 : 재현기획개발 / 주소: 서울특별시 영등포구 영등포로 150, 지하1층 108호 L145 가라지(당산동1가, 생각공장 당산) / 대표: 김재현 / 전화: 010-8158-7127 / 통신판매업신고: 제2025-서울영등포-1569호 / 이메일: contact@edugamja.com / 사업자등록번호: 573-51-00999