%3C/text%3E%3C/svg%3E">
💻
💻 IT·개발

순환 복잡도 계산기 (McCabe M = E − N + 2P)

입력하면 바로 계산됩니다.

입력값

순환 복잡도 계산기 쉽게 이해하기 — 개념과 원리

토머스 맥케이브가 제안한 순환 복잡도는 코드 조각을 지나는 독립 경로의 수를 셉니다. 함수가 얼마나 테스트하고 유지하기 어려운지 판단하는 데 쓰입니다. 이 계산기는 제어 흐름 그래프의 간선, 노드, 연결 요소로 구하거나 이진 분기 수로 구하고, 맥케이브가 제안한 한도 10과 비교합니다.

순환 복잡도제어 흐름 그래프간선 12 · 노드 10M = E − N + 2P12 − 10 + 2M = 410 이하: 양호테스트할 기본 경로 4개
간선 12, 노드 10, 루틴 1개이면 독립 경로는 M = 4입니다.

계산 방법

그래프로: M = E − N + 2P

분기 수로: M = 이진 분기 수 + 1

원리

코드를 그래프로 그리면 분기 없는 블록이 노드, 가능한 제어 이동이 간선입니다. 분기가 없는 루틴은 경로가 하나라 M = 1입니다. if나 반복 조건 같은 양방향 분기는 독립 경로를 하나씩 더하므로 분기 수 + 1이 같은 값을 줍니다. 그래프 공식은 그래프 이론에서 나왔으며, 출구를 입구로 다시 이었을 때의 독립 순환 수를 셉니다. 구조적 테스트에서 M은 모든 독립 경로를 한 번 이상 지나기 위한 최소 테스트 케이스 수입니다.

예제 풀이

기본값인 간선 12, 노드 10, 루틴 1개로 계산합니다.

  1. M = 12 − 10 + 2 × 1 = 4입니다.
  2. 테스트할 기본 경로 = 4개입니다.
  3. 분기 지점 = 4 − 1 = 3개입니다.
  4. 4는 10 이하이므로 한도 이내입니다.

결과 해석

내 결과는 어느 구간일까요?한도 이내한도 초과10내 결과: 4 M · 한도 이내기준: 맥케이브 한도 10, NIST SP 500-235
내 결과는 어느 구간일까요?

맥케이브는 모듈당 10 이하를 제안했고, NIST 구조적 테스트 보고서는 이 한도를 다루며 일부 조직은 근거가 있으면 조금 더 높은 값을 허용한다고 설명합니다. 한도를 넘는 함수는 작은 함수로 나눌 후보입니다. 복잡도가 낮다고 좋은 코드가 보장되지는 않고, 단순한 분기 처리에서는 높은 값도 괜찮을 수 있지만, 검토할 곳을 알려 주는 유용한 신호입니다.

흔한 실수

주의: 도구마다 불리언 연산자, 예외 처리 등을 세는 방식이 조금씩 다릅니다. 같은 도구로 잰 값끼리 비교하십시오.

자주 묻는 질문

좋은 순환 복잡도는 얼마인가요?

맥케이브는 함수당 10 이하를 제안했으며, 낮을수록 대체로 테스트하기 쉽습니다.

반복문도 복잡도를 높이나요?

네. 반복 조건이 분기라서 경로가 하나 늘어납니다.

복잡도를 줄이려면?

함수를 나누고, 중복 조건을 없애고, 조회 표를 쓰는 방법이 도움이 됩니다.

테스트와는 어떤 관계인가요?

M은 기본 경로를 모두 지나기 위해 필요한 최소 테스트 경로 수입니다. M이 4라면 서로 독립인 경로를 적어도 4개 시험해야 합니다.

도구마다 값이 다른 이유는?

불리언 연산자, 예외 처리, switch 문을 세는 방식이 도구마다 조금씩 다르기 때문입니다.

출처: A. H. Watson and T. J. McCabe, "Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric", NIST Special Publication 500-235 (1996)

2026년 11월 8일 확인. A. H. Watson, T. J. McCabe, “Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric”, NIST Special Publication 500-235 (1996년 8월): §2.2 모듈당 v(G) = e − n + 2, §2.5 한도 10, §4.1 v(G) = 이진 분기 수 + 1.

💻 IT·개발 계산기 전체 →🏠 홍라이프 계산기 홈 →