CTC++ : 코드 커버리지 의 핵심, MC/DC와 Multicondition의 차이

min Read

안전하고 신뢰할 수 있는 소프트웨어 개발을 위한 품질 보증 과정에서 테스트는 필수적인 요소입니다.

충분한 테스트가 없으면 소프트웨어가 안전하고 기능적으로 올바른지 평가하는 데 어려움이 있기 때문입니다. 특히 코드 커버리지(또는 테스트 커버리지) 측정은 소프트웨어의 테스트 범위를 파악하는 데 중요한 지표로 작용합니다. 코드 커버리지 는 실제로 테스트된 코드의 비율을 전체 코드와 비교하여 나타내는 지표입니다. 예를 들어 테스트 가능한 네 가지 기능 중 세 가지를 테스트했다면 코드 커버리지는 75%로 측정되며, 이는 소프트웨어가 얼마나 포괄적으로 테스트되었는지 판단할 수 있는 기준이 됩니다.

특히 안전에 중요한 소프트웨어를 개발할 때 다양한 산업 표준은 코드커버리지에 대한 정확한 요구사항을 규정하고 있기 때문에, 충분한 테스트 커버리지가 증명되지 않으면 소프트웨어 인증을 받기가 매우 어려워 집니다. 이와 관련하여 코드커버리지 측정 도구인 Testwell CTC++ 의 개발사 Verifysoft에서는 아래 10가지 항목을 코드커버리지 도구를 선택하기 위한 기준으로 제시하고 있습니다.

각 기준에 대한 조금 더 자세한 설명은 Verifysoft사의 “10 criteria for selecting a code coverage tool”에서 참조하실 수 있습니다.

이중 네번째 항목의 커버리지 레벨에 대해 좀더 자세히 살펴보면, 구조적 커버리지 측정 측면에서 Testwell CTC++는 다양한 측정레벨 옵션을 제공하며, ISO-26262, DO-178C, EN-50128 등의 산업표준에서는 이중 최대 MC/DC 까지의 높은 커버리지 레벨을 규정하고 있습니다.

이 글에서는 Testwell CTC++에서 지원하는 다양한 커버리지 레벨 중 MC/DC 커버리지와 Multicondition 커버리지의 개념과 두 측정방식의 차이점에 대해 살펴보고, 테스트 담당자 입장에서 MC/DC 측정방식이 가질 수 있는 이점에 대해 살펴보겠습니다.

Multicondition Coverage

Multicondition 커버리지는 코드상의 분기점에서 발생할 수 있는 모든 경우의 수를 포함하는 방식으로, 복합 조건상에서 발생할 수 있는 모든 True-False 조합 결과를 평가하기 위한 측정 방식입니다.

예를 들어 각각 True-False결과를 가질 수 있는  a, b, c, d를 요소로 가지는 조건문 ( a || b ) %% ( c || d ) 가 있다고 가정하면 여기에서 발생할 수 있는 7가지조합을 모두 테스트해야지만 100%의 커버리지 결과를 얻을 수 있습니다.

Tip : 여기서는 Short Circuit evaluation 법칙에 따라 무시될 수 있는 결과는 배제 된다는 점을 참고해야 합니다.

Short Circuit evaluation이란 논리식 연산에서 결과가 확실히 예상될 때 뒤의 연산을 실행하지 않고 무시하는 평가방식을 의미합니다.

Short Circuit evaluation에서는 AND 연산자 앞의 연산이 False인경우 AND 뒤의 연산은 생략되고, OR연산자는 앞 연산이 True가 나오면 뒤 연산은 생략됩니다.

이렇게 생략된 연산은 위 목록에서 Underscore(_) 로 표기합니다.

전체조건식의 구조가 복잡해질수록 필요한 테스트케이스의 수는 기하급수적으로 늘어날 것이라고 예상할 수 있습니다. 결국 테스트 담당자가 Multicondition 커버리지의 측정조건에 따라 테스트를 수행하려면 위와 같이 모든 조건에 대한 조합을 모두 만족하는 많은 테스트케이스를 필요로 할 것입니다.

Tip : ctc++의 ctcreport 명령에서 multicondition 보고서를 표시하려면 다음과 같이 옵션을 사용할 수 있습니다.

> ctcreport -measures m

MC/DC 커버리지 (Modified Condition/Decision Coverage)

MC/DC 커버리지에서는 각 조건식의 각 개별 요소가 전체 조건식 결과에 영향을 주는 경우를 조합하여 커버리지를 측정하는 방식입니다.

위의 Multicondition Coverage와 동일한 조건식을 예로들어 설명하면 다음과 같습니다.

위 7가지 경우 중 개별조건식이 전체결과에 영향을 주는 경우를 추려 내보면 다음과 같습니다.

추려낸 결과에서 각 개별조건식을 기준으로 대응되는 계산식을 Group으로 묶습니다.

a 조건식을 예로 들면, 1번과 7번은 a조건식의 결과만 다르고 나머지 조건식들의 결과가 같아서 서로 대응된다고 말할 수 있습니다.

2번과 7번 또한 마찬가지로 a조건식 외에 나머지 조건식들의 결과가 같은 경우입니다. (이때, Underscore(_)는 T와F의 경우를 모두 포함하는 것으로 계산합니다.)

이렇게 각 조건식을 기준으로 대응되는 계산식들을 Grouping하면 다음과 같은 목록을 얻을 수 있습니다.

MC/DC 측정 방식에서는 각 조건식 별로 Grouping된 조합 중 한가지 조합에 대한 테스트만 수행하면 해당 조건식에 대한 커버리지를 만족하는 것으로 간주합니다.

d 조건식을 예로 들면 Group으로 묶여있는 2번조건과 5번조건을 테스트하면 4번과 6번은 테스트하지 않아도 커버리지를 만족하게 됩니다.

이 방식을 바탕으로 테스트를 수행해야 하는 최소한의 조합을 생각해보면 다음의 경우만 테스트 하면 100%의 커버리지를 달성할 수 있다는 것을 알 수 있습니다.

Tip : ctc++의 ctcreport 명령에서 MC/DC 보고서를 표시하려면 다음과 같이 옵션을 사용할 수 있습니다.

> ctcreport -measures mcdc

MC/DC 달성을 위해 필요한 테스트케이스를 도출하는 것이 조금 복잡해 보이지만, 다양한 산업인증의 코드 커버리지 조건을 만족시키고 그와 동시에 수행해야 하는 테스트케이스의 수를 줄여주는 MC/DC 측정방식은 프로젝트 수행 시간과 비용을 줄이는 데에 핵심적인 요소가 될 수 있다고 말할 수 있습니다.

Get more insights into Testing & Security

빠르게 업데이트 되는 솔루션 인사이트에 대해 탐구해보세요!

Latest Posts

AI의 관점에서 보는 CES 2026

CES 2026을 통해 하드웨어와 결합된 물리적 AI와 에이전틱 AI가 일상과 산업의 구조를 어떻게 바꾸고 있는지 살펴봅니다.

Subscribe to
SLEXN NEWSLETTER

개인정보 수집 및 이용

뉴스레터 발송을 위한 최소한의 개인정보를 수집하고 이용합니다. 수집된 정보는 발송 외 다른 목적으로 이용되지 않으며, 서비스가 종료되거나 구독을 해지할 경우 즉시 파기됩니다.

SOLUTION

Tags

Category

Most Commented Posts

© SLEXN, Inc. All rights reserved.

이번 웨비나에서 성능 편차·비용·거버넌스의 현실적 한계를 실제 사례로 짚고, AI 자동화와 인간 개입의 명확한 기준을 제시합니다.

Days
Hours
Minutes
Seconds