본문 바로 가기
Video Thumbnail
 

Coco

추측이 아닌 코드 커버리지 수치로 증명하는 테스트 품질

Coco는 데스크톱 애플리케이션과 임베디드 시스템을 개발하는 소프트웨어 팀을 위한 최신 코드 커버리지 도구입니다. 빌드 프로세스 중 코드를 계측하여, 컴파일러, 빌드 시스템, 테스트 스위트를 변경하지 않고도 테스트 중 실행된 구문, 분기, 조건을 정확하게 캡처합니다. C, C++, C#, QML, Python, Tcl을 지원하며, 계측 및 정밀한 테스트 커버리지 분석을 제공합니다. Coco를 통해 ISO 26262 및 DO-330과 같은 국제 안전 및 컴플라이언스 표준에 부합하는 감사 대비 보고서를 생성할 수 있습니다. 

Coco 무료 체험하기 문의하기 Coco for MCU

Coco-interface-simplified-01

대부분의 팀이 코드 커버리지를 측정하지만, 이를 의사결정에 활용하지는 않습니다.

커버리지 수치는 어떤 코드가 실행됐는지는 알려주지만, 테스트되지 않아 위험을 초래할 수 있는 부분이 어디인지, 검증 없이 변경된 코드가 무엇인지, 리스크를 가장 많이 줄이기 위해서는 어디에 테스트를 추가해야 하는지는 알려주지 않습니다. Coco는 이러한 취약점을 가시화하고 실질적인 조치로 이어질 수 있도록 하여, 직관이 아니라 근거에 기반한 릴리스 결정을 내릴 수 있도록 합니다. 

특히 규제가 엄격한 산업에서는 의사결정에 대한 근거가 명확히 입증되어야 합니다. 감사 담당자가 각 산업 표준에 의거해 추적 가능한 MC/DC 수준의 구조적 커버리지를 요구하기 때문입니다. 대부분의 도구는 브랜치 수준에서 멈추지만, Coco는 다릅니다. 

Trusted by Siemens · Bosch · LG · Metso · PolyWorks · SGS TÜV Saar Certified · ASIL D
코드 커버리지로 가능해지는 것들

한 번도 테스트되지 않은 코드를
정확히 확인하세요

커버리지 측정은 무엇이 테스트되었는지 알려줍니다.
근거를 확보한 후에는 아래와 같은 의사결정, 논의, 그리고 결과의 단계를 거치게 됩니다.

가시성

테스트가 무엇을 커버하는지 정확히 확인하세요. Coco의 CoverageBrowser는 모든 라인, 브랜치, 조건을 색상으로 구분하여, 어떤 코드가 실행되었는지, 한 번도 실행되지 않은 코드는 무엇인지 한눈에 파악할 수 있습니다.

리스크 우선순위화

테스트되지 않은 코드 중 리스크가 가장 높은 부분을 파악하세요. Coco의 CRAP(Change Risk Anti-Patterns) 지표는 복잡도와 커버리지 격차를 기준으로 모든 함수를 순위화하여, 장애를 유발할 가능성이 가장 높은 코드에 테스트 역량을 집중할 수 있도록 합니다.

패치 커버리지

전체를 다시 실행하지 않고도 어떤 테스트가 패치를 커버하는지 확인하세요. 패치 분석은 변경 사항(Diff)을 기존 커버리지 데이터와 매핑하여, 변경된 라인 중 기존 테스트로 커버되는 부분과 해당 테스트가 무엇인지 보여줍니다.

임베디드 시스템

실제 하드웨어와 에뮬레이터 모두에서 커버리지를 수집하세요. 런타임 계측은 RTOS 기반 시스템을 포함한 실제 임베디드 타깃에서 작동합니다. 시뮬레이션 결과물 대신, Coco는 실제 프로덕션 동작을 반영합니다.

분산된 팀

소스 코드를 공유하지 않고도 테스트를 분산하세요. Coco를 사용하면 계측된 바이너리를 외주 팀과 공유하고, 결과를 수집하여 중앙화된 커버리지 리포트로 통합할 수 있습니다.

CRAP 지표와 패치 분석이 팀의 테스트 접근 방식을 바꿉니다

방금 변경한 코드를 어떤 테스트가 커버하는지 정확히 파악하세요

개발자가 패치를 적용하면, Coco는 변경 사항(Diff)과 기존 커버리지 데이터를 분석하여 정밀한 리포트를 생성합니다. 전체 테스트 스위트를 다시 실행하지 않고도, 패치의 어떤 라인이 기존 테스트로 커버되는지, 커버되지 않는지, 그리고 어떤 테스트가 해당 코드 경로를 실행했는지 확인할 수 있습니다. 

  • 통합 형식의 변경 사항(Diff) 가져오기: Coco가 기존 커버리지 실행 데이터와 매핑합니다.
  • 패치의 모든 라인에 주석 표시: 커버됨, 커버되지 않음, 또는 알 수 없음으로 구분되며, 라인별 테스트 횟수도 확인 가능합니다. 
  • 코드 리뷰, 릴리스 게이트, 인증 근거를 위한 HTML 또는 CSV 리포트가 생성됩니다.

CRAP 지표로 다음에 테스트해야 할 코드를 파악하세요

커버리지가 80%라는 사실만으로는 나머지 20%가 사소한 코드인지, 아니면 중요한 코드인지 알 수 없습니다. CRAP 지표(Change Risk Anti-Patterns)는 순환 복잡도(Cyclomatic)와 커버리지 데이터를 결합하여 함수별 리스크 점수를 산출합니다. 복잡도가 높을수록, 그리고 커버리지가 낮을수록 점수는 높아집니다. 

  • 30점 이상의 함수는 고위험으로 표시되어 CoverageBrowser의 순위 목록 상단에 표시됩니다.
  • 전체 코드베이스를 검토하지 않고도, 새 테스트를 추가했을 때 리스크를 가장 많이 줄일 수 있는 위치를 정확히 파악할 수 있습니다. 
  • 결과는 스프린트 계획, QA 리뷰, 경영진 보고를 위해 정렬 및 내보내기가 가능합니다. 

가장 엄격한 안전 표준을
위한 인증 완료

Untitled design-23 1

Coco는 SGS TÜV Saar로부터 독립적으로 인증받았으며, ISO 26262 기준 최고 수준인 ASIL D까지의 안전 관련 소프트웨어 인증에 승인되었습니다. 이는 자체 승인이 아닌, 외부 감사를 통해 확인된 최고 수준의 자동차 기능 안전 무결성 등급입니다. 

 인증 상세 보기

ASIL D 인증

대부분의 커버리지 도구는 안전 필수 워크플로우를 지원한다고 주장합니다. Coco는 이를 독립적으로 검증받았습니다. SGS TÜV Saar는 ISO 26262-8:2018 기준에 따라 ASIL D까지의 안전 관련 소프트웨어 검증을 위해 Coco를 평가하고 인증했습니다. 실제로 이것이 의미하는 바는, 안전 엔지니어가 세이프티 케이스에서 커버리지 도구의 적합성을 입증해야 할 때, 직접 작성한 내부 문서가 아닌 감사 담당자들이 인정하는 기관의 인증서로 답할 수 있다는 것입니다. 기존에는 몇 주가 걸리던 과정이, Coco를 사용하면 몇 분으로 단축됩니다. 

데이터시트의 기능 항목이 아닌, 감사 담당자가 직접 검증할 수 있는 인증

조달 승인, 공급업체 감사, 인증 마일스톤 등의 과정에서는 툴체인의 검증 상태가 면밀히 검토됩니다. 그리고 그러한 검토 시 대부분의 팀은 기존에 사용하고 있는 커버리지 도구가 문제를 해결하기보다 오히려 더 많은 서류 작업을 만들어낸다는 사실을 깨닫게 됩니다. Coco의 SGS TÜV Saar 인증서(인증 번호 FS/71/220/26/2113)는 공식 명칭이 부여된 외부 발행 결과물로, 컴플라이언스 팀이 프로젝트 문서에 직접 인용하고 추가 설명 없이 어떤 상황에서든 제시할 수 있습니다. 다른 도구들은 팀이 직접 근거를 만들어야 하는 반면에, Coco는 이미 근거가 갖춰진 채로 제공됩니다. 

도구 검증에 드는 시간을 줄이고, 제품 개발에 더 집중하세요

안전 필수 검증 툴체인의 모든 도구는 목표 수준에 맞게 검증되어야 합니다. 사전 검증된 도구가 없다면 해당 검증 작업은 전적으로 팀의 몫이 되어, 안전 환경에서 도구를 사용하기 전부터 수 주의 추가 작업이 발생합니다. Coco의 TÜV Saar 인증은 이러한 초기 부담을 제거합니다. 특정 표준에 따른 완전한 도구 검증이 필요한 프로젝트의 경우, ISO 26262, DO-178C, IEC 62304, EN 50128을 위한 Coco의 표준별 인증 키트가 그 과정을 완성해 드립니다. 해당 표준이 요구하는 맞춤 문서, 사전 구성된 테스트 케이스, 안전 매뉴얼을 제공하여, 팀이 몇 달이 아닌 며칠 안에 검증을 완료할 수 있도록 지원합니다. 

산업 표준에 맞게 설계된 Coco

기능 커버리지부터 MC/DC까지,
산업 표준이 요구하는 모든 수준을 어떤 플랫폼에서든 지원합니다.

코드 커버리지를 측정하고 개선하세요

Coco가 지원하는 커버리지 수준

Coco는 기본적인 함수 및 라인 커버리지부터 가장 엄격한 안전 표준이 요구하는 MC/DC 수준까지, 모든 주요 구조적 커버리지 지표를 지원합니다. 각 수준은 테스트 품질을 바라보는 서로 다른 관점을 제공합니다. 적합한 수준은 적용 표준, 무결성 등급, 그리고 릴리스 전 필요한 신뢰도에 따라 달라집니다. 

 

Coco가 지원하는 커버리지 수준 자세히 알아보기

함수 커버리지

함수 커버리지는 C++의 멤버 함수를 포함하여 코드베이스의 모든 함수가 테스트 중 최소 한 번 이상 호출되었는지 확인합니다. 이는 핵심 로직 유닛이 실제로 실행되고 있는지 여부를 알려주는 기본적인 첫 번째 점검 항목입니다. 테스트 스위트 실행 중 한 번도 호출되지 않은 함수는 정의상 테스트되지 않은 것입니다. Coco는 각 함수가 몇 번 호출되었는지 집계하여, 아키텍처 수준에서의 커버리지를 명확하게 파악할 수 있도록 합니다. 

표준
IEC 61508 SIL 1–4

산업분야
Automotive Aerospace Industrial Railway Medical

문서에서 자세히 알아보기

구문 블록 커버리지

구문 블록 커버리지(Statement Block Coverage)는 프로그램의 모든 실행 가능한 구문이 테스트 중 실행되었는지 확인합니다. Coco는 항상 함께 실행되는 구문들을 블록으로 묶어, 코드 형식과 관계없이 일관된 지표를 유지합니다. 이는 테스트 완성도를 파악하기 위한 신뢰할 수 있는 기준선이 되며, 다양한 코딩 스타일을 사용하는 팀에게는 라인 커버리지보다 더 안정적인 대안이 됩니다. 

표준
ISO 26262 ASIL A–B IEC 61508 SIL 1–4 EN 50128 SIL 0

산업분야
Automotive Industrial Railway Medical

문서에서 자세히 알아보기

라인 커버리지

라인 커버리지는 각 코드 라인이 테스트 중 실행되었는지 확인합니다. 이는 테스트 스위트의 공백을 파악하고 코드가 얼마나 철저하게 실행되고 있는지 빠르게 확인할 수 있는 간단하고 익숙한 방법이라고 할 수 있습니다. Coco는 라인 커버리지를 지원하며, 커버리지 분석을 처음 접하는 팀이나 범용 프로젝트를 진행하는 팀에서 처음 사용하기에 적합합니다. 다만, Coco는 안전 필수 또는 규제 대상 개발에는 라인 커버리지를 권장하지 않습니다. 코드 형식에 따라 결과가 달라질 수 있어 ISO 26262 또는 IEC 61508과 같은 표준의 근거 요건을 충족하기에는 메트릭 안정성이 부족할 수 있기 때문입니다. 이러한 환경에서는 구문 블록 커버리지가 동일한 가시성을 제공하면서도 코드 형식에 관계없이 일관된 결과를 보장합니다. 

표준
Not mapped to safety standards

산업분야
General use Non-regulated projects

문서에서 자세히 알아보기

분기 및 결정 커버리지

분기(Branch) 및 결정 커버리지(Decision Coverage)는 코드의 모든 결정 지점에서 가능한 모든 결과가 생성되는지 확인함으로써, 일반 구문 커버리지의 범위를 넘어섭니다. 각 조건은 참일 때와 거짓일 때 각각 한 번씩 집계되므로, 특정 입력 조건에서만 발생하는 에지 케이스를 운영 환경이 아닌 테스트 단계에서 포착할 수 있습니다. Coco는 모든 if, while, for 및 switch 문에 대해 두 가지 결과를 모두 검증하므로, 테스트에서 누락된 경로를 더 쉽게 파악할 수 있습니다.

표준
ISO 26262 ASIL A–D DO-178C DAL A–B IEC 61508 SIL 1–4 EN 50128 SIL 1–4

산업분야
Automotive Aerospace Industrial Railway Medical

문서에서 자세히 알아보기

조건 커버리지

조건 커버리지(Condition Coverage)는 복잡한 부울 식(Boolean Expressions)을 개별 부분으로 분해함으로써 결정 커버리지를 한 단계 더 발전시킨 개념입니다. AND, OR 연산자로 연결된 각 부분식은 참과 거짓에 대해 독립적으로 평가됩니다. 이를 통해 결정 커버리지만으로는 포착할 수 없는 누락 부분을 파악할 수 있으며, 특히 여러 조건이 포함된 결정의 경우 일부 조합이 전혀 테스트되지 않을 수 있는 상황을 파악하는 데 유용합니다. Coco에서 조건 커버리지는 MC/DC로 나아가는 자연스러운 출발점이며, 완전한 독립성 요구 사항으로 넘어가기 전에 논리적 테스트의 완전성에 대한 더 심층적인 통찰력을 제공합니다.

표준
Stepping stone to MC/DC — not a standalone standard requirement

산업분야
Automotive Aerospace Industrial Railway Medical

문서에서 자세히 알아보기

MC/DC 및 MCC 커버리지

개정된 조건/결정 커버리지(MC/DC)는 결정에 포함된 모든 조건이 결과에 독립적으로 영향을 미쳐야 한다고 규정합니다. 각 조건에 대해, 해당 조건만 변경되고 나머지 모든 요소는 동일하게 유지되는 두 번의 테스트 실행이 있어야 합니다. 이는 안전 감사관이 최고 무결성 수준에서 기대하는 엄격한 기준이며, 이에 대해 Coco는 ASIL D까지 지원하도록 인증받았습니다. 다중 조건 커버리지(MCC, Multiple Condition Coverage)는 모든 결정에서 가능한 모든 진리값 조합을 요구함으로써 한 단계 더 나아가며, IEC 61508 및 EN 50128에 따라 SIL 3 및 4 수준에서 MC/DC의 대안으로 인정받고 있습니다.

MC/DC 표준
ISO 26262 ASIL A–D DO-178C DAL A IEC 61508 SIL 1–4 EN 50128 SIL 1–4

MCC 표준
IEC 61508 SIL 3–4 (alt.) EN 50128 SIL 3–4 (alt.)

인증 키트
IEC 62304 Class C

산업 분야
Automotive Aerospace Industrial Railway Medical

MC/DC 문서  MCC 문서

테스트 소요 시간 및 성능 지표

Coco는 커버리지 뿐만 아니라 각 테스트의 실행 시간과 코드의 각 부분이 실행되는 빈도를 추적합니다. 이를 통해 팀은 실행 속도가 느린 테스트를 파악하고, 필요 이상으로 자주 호출되는 코드를 찾아내며, CI 파이프라인 전반에서 테스트가 실행되는 순서를 최적화할 수 있습니다. 이는 커버리지 표준의 필수 요건은 아니지만, 필요한 커버리지를 희생하지 않으면서 테스트 스위트를 간결하고 빠르게 유지하는 데 유용한 도구입니다.

표준
CI and pipeline optimisation — not a coverage standard requirement

산업 분야
All industries

document

[백서] 안전이 중요한 프로그램에서의 코드 커버리지 가이드

지금 읽어보기

각 팀원마다 필요한 기능이 다릅니다.
Coco는 모든 것을 제공합니다.

QA 담당자 & 테스트 리더

단계별 도입 효과

가시성 확보

일관성 강화

ROI 극대화

  • 사용 사례

  • Coco 기능

  • 기대 효과

  • 조직 확장

    모든 테스트를 의미 있게 활용하세요.
    불필요한 부분이 아닌 중요한 부분에 집중하세요.

  • cmreport는 매 빌드마다 자동으로 보고서를 생성하며, Cobertura XML 및 SonarQube XML 내보내기 기능은 외부 대시보드에 데이터를 제공합니다. 또한 CoverageBrowser는 빌드 간 결과를 나란히 비교합니다. 

  • 커버리지 간극이 릴리스 시 예상치 못한 문제가 아닌, 관리 가능한 미해결 과제로 전환됩니다.

    모든 팀과 플랫폼에 걸쳐 동일한 측정 기준을 적용합니다.

    SonarQube 또는 Codecov와 연동하여 시계열 추세 대시보드를 확인할 수 있습니다.

    팀의 전체 코드베이스에 Coco를 적용하세요.

컴플라이언스 & 안전 담당자

단계별 도입 효과

감사 통과

증빙 자료 구축

자격 인증

  • 사용 사례

  • Coco 기능

  • 기대 효과

개발자 & 엔지니어

단계별 도입 효과

리스크 파악

자신 있는 출시

더 빠른 사이클

  • 사용 사례

  • Coco 기능

  • 기대 효과

  • 코드 병합 전 신뢰도 검증

    코드 병합 전에 모든 변경 사항이 미치는 영향을 파악하세요.

  • 패치 커버리지 분석은 기존 커버리지 데이터와 비교하여 변경 내역을 매핑하고, 어떤 라인이 커버되었는지, 어떤 라인이 커버되지 않았는지, 그리고 어떤 테스트가 해당 경로를 실행했는지를 보여줍니다. 이 모든 과정을 전체 테스트 스위트를 다시 실행하지 않고도 확인할 수 있습니다. 

  • 검토 전에 변경 사항 중 어떤 라인이 테스트를 통과했는지 정확히 파악할 수 있습니다.

    모든 테스트를 다시 실행하지 않고도 기존 테스트 중 어떤 것이 패치를 검증하는지 확인할 수 있습니다.

    복잡한 로직의 경우, MC/DC가 모든 조건이 완전히 검증되었는지 확인합니다.

    Coco의 실제 작동 모습을 확인해보세요. 

DevOps & CI 엔지니어

단계별 도입 효과

파이프라인에 추가

전체 자동화

표준 준수

  • 사용 사례

  • Coco 기능

  • 기대 효과

  • 시작하기

    지금 바로 파이프라인에 커버리지 데이터를 반영하세요. 

  • cmreport는 Cobertura XML, SonarQube XML, JUnit 및 EMMA-XML을 출력하며, 이는 기존 CI 시스템에서 이미 지원하는 형식입니다. 

  • 도입 첫날부터 CI 호환 형식의 커버리지 데이터를 제공합니다.

    기존 파이프라인을 재구성할 필요가 없습니다.

    다음 빌드에 Coco를 추가하세요. 

  • 완전한 자동화

    모든 수동 작업을 제거하고 표준을 자동으로 적용하세요. 

  • 빌드 과정에서 CoverageScanner 도구가 실행됩니다. cmreport는 명령줄에서 보고서를 생성합니다. 패치 커버리지 분석은 모든 diff에 대해 실행됩니다. CI 시스템은 아웃풋을 읽어들이고 임계값을 적용합니다.  

  • 수동 작업 없이 매 빌드마다 커버리지 데이터를 수집하고 보고합니다.

    Coco가 데이터를 제공하면, CI 시스템이 게이트를 적용합니다.

    SonarQube 또는 Codecov와 연동하여 커버리지 추세 대시보드를 시각적으로 확인할 수 있습니다.

    Coco가 CI 파이프라인에 어떻게 통합되는지 확인해 보세요. 

엔지니어 팀 매니저 & 기술 팀장

단계별 도입 효과

리스크 파악

팀 간 협력 강화

의사 결정

  • 사용 사례

  • Coco 기능

  • 기대 효과

  • 시작하기

    조직 전체에서 소프트웨어 위험 요소를 명확히 파악하세요.

  • CRAP 지표는 복잡도와 커버리지 격차를 결합하여 가장 위험한 함수를 파악합니다. 

    CoverageBrowsercmreport는 모든 팀에 걸쳐 일관된 측정 결과를 제공합니다.  

  • "이 정도면 충분히 테스트되었다"는 추측 대신, 객관적인 데이터로 확인할 수 있습니다.

    코드베이스 중 어느 부분이 테스트되지 않아 가장 큰 위험 요소가 되는지 파악할 수 있습니다.

    모든 팀에 공유 가능하고 측정 가능한 품질 기준을 제시할 수 있습니다.

    관리자가 확인하기 편한 커버리지 증거가 어떤 모습인지 확인해보세요. 

  • 전략적 계획

    커버리지 데이터를 바탕으로 투자 및 출시 결정을 내리세요.

  • 모듈별 커버리지 격차 분석이 포함된 cmreport. 관리자와 경영진을 위한 대시보드용 Cobertura XML 및 SonarQube XML 내보내기. CoverageBrowser 빌드 비교가 가능합니다.

  • 릴리스 간 커버리지를 비교하여 개선 현황을 추적할 수 있습니다.

    측정 가능한 품질 데이터를 기반으로 테스트 투자 타당성을 입증할 수 있습니다.

    Coco 내보내기 데이터를 SonarQube 또는 귀사의 CI 시스템과 연동하여 시계열 대시보드를 생성할 수 있습니다.

    조직 전반에 걸쳐 Coco를 도입하는 방법에 대해 Qt Group과 상담해 보세요. 

임베디드 & MCU 엔지니어

단계별 도입 효과

타겟에 툴 적용

실제 데이터 수집

빌드 전반에 걸친 확장

  • 사용 사례

  • Coco 기능

  • 기대 효과

  • 데이터 수집

    모든 타겟에서 수집한 커버리지 데이터를 가져와 하나의 보고서로 통합하세요.

  • CoverageScanner의 커스텀 IO 함수는 GDB, 시리얼, TCP/IP, CAN bus 및 ARM 세미호스팅을 지원합니다.

    Qt for MCU의 경우, --qul-port 옵션을 사용한 cmcsexeimport를 통해 Qt for MCU 타겟에 대한 원클릭 임포트가 가능합니다.

    cmmergecocoqmlscanner는 C++과 QML을 단일 데이터베이스로 통합합니다. 

  • 별도의 전송 방식이 필요하지 않으며, 하드웨어에 이미 탑재된 기능을 활용하면 됩니다.

    모든 타겟 및 테스트 실행에 대한 통합 보고서를 확인할 수 있습니다.

    빌드부터 보고서 생성까지 완전히 스크립트로 제어 가능한 엔드투엔드 워크플로우

    안전이 중요한 분야에서 임베디드 소프트웨어를 인증하는 방법을 확인해 보세요. 

있는지도 몰랐던 커버리지 공백을 파악하는 방법


Qt Group의 수석 소프트웨어 엔지니어인 James Vance가 Coco 코드 커버리지 인터페이스를 단계별로 설명하며,
커버리지를 측정하고 테스트되지 않은 코드를 식별하는 방법을 보여줍니다.
 

“코드 커버리지와 테스트 커버리지를 제대로 파악하지 못한다면 내가 개발하고 있는 소프트웨어 품질이 어느 정도인지 알지 못하는 것입니다. 그런 면에서 Coco 코드 커버리지는 우리에게 아주 유용한 도구라고 할 수 있습니다. ” 

Jaakko Palokangas, Metso 디지털 기술 개발 이사

기존 환경에 완벽하게 통합되는
코드 커버리지 툴

Coco는 CI/CD, IDE 및 품질 관리 도구와 연동되어, 작업 현장에서 커버리지 분석 결과를 즉시 활용할 수 있도록 지원합니다. 테스트 데이터를 통해 장기적으로 소프트웨어 품질을 개선해보세요.

 

어디서나 배포하세요

Coco를 네이티브로 실행하거나 크로스 컴파일을 통해 다양한 타겟에서 사용하세요. 데스크톱부터 베어메탈 임베디드 시스템에 이르기까지 모든 대상 플랫폼에서 구동할 수 있습니다.

네이티브 호환성
이미 사용 중인 시스템에서도 실행 가능
 Linux, Windows (32/64비트), macOS 64비트 — Rosetta 2를 통한 Intel 및 ARM 지원
 UNIX 계열: Solaris, AIX (엔터프라이즈용, 요청 시 제공)
크로스 컴파일
임베디드 타겟 및 제약이 있는 환경
 임베디드 리눅스/윈도우 — 산업용 및 자동차용
 RTOS: QNX, VxWorks, FreeRTOS
 안전이 중요한 기기를 위한 베어메탈 마이크로컨트롤러
지원되는 컴파일러
주류 및 특수 목적 툴체인*
 GCC, Clang, MS Visual Studio, Intel, Mono
 QNX, ARM (Keil), Green Hills, HighTec, Diab, TI 등
*일부 툴체인의 경우 Coco 크로스 컴파일 Add-on이 필요합니다.
대상 하드웨어
실제 양산용 하드웨어에서 검증 수행
 Intel x86/x64, ARM, PowerPC, MIPS, SPARC, AURIX™ 등
 범용 CPU부터 안전 등급 마이크로컨트롤러까지

더 빠르게 개발하고 구축하세요

Coco를 통해 도구를 바꾸거나 코드를 리팩토링할 필요 없이 시스템을 구축할 수 있습니다.

보고하고 컴플라이언스를 준수하세요

팀과 감사 담당자가 이미 익숙한 형식으로 내보내기할 수 있습니다.

이미 사용 중인 도구로 테스트하세요

Coco는 GoogleTest, Boost.Test, NUnit 등 기존 프레임워크와 완벽하게 연동됩니다.

자동화하여 릴리즈하세요

CI/CD 파이프라인에서 자동화된 커버리지 피드백을 확인할 수 있습니다.

임베디드 시스템 및 MCU를 위한
코드 커버리지

Coco for MCU
모든 마이크로컨트롤러 프로젝트를 위한 코드 커버리지

Coco는 칩 제조사, RTOS, 애플리케이션 프레임워크에 관계없이 모든 C 또는 C++ MCU 프로젝트에서 작동합니다. 툴체인 변경이나 소스 코드 수정 없이 빌드 과정에서 기존 컴파일러를 래핑합니다. 커버리지 데이터는 실제 타겟에서 수집되며 CoverageBrowser에서 분석됩니다.

대부분의 MCU 프로젝트에는 데이터 수집을 도와줄 파일 시스템이나 OS가 없습니다. Coco는 테스트 실행 중에 커버리지 데이터를 캡처하고, 하드웨어에 이미 구축된 통신 채널을 통해 데이터를 가져옴으로써 이 문제를 해결합니다.

  • Qt for MCU를 사용하여 빌드하는 경우, 완전한 C++ 및 QML 커버리지, 디바이스 탐색, 원클릭 데이터 가져오기 기능을 지원하는 전용 통합 기능을 이용할 수 있습니다.

  • Qt를 사용하지 않는 경우에도 GDB, 시리얼, TCP/IP, CAN bus 또는 ARM semihosting을 통해 정확히 동일한 방식으로 작동합니다.


NXP Infineon Renesas STM32 Microchip TI AURIX

ARM GCC IAR Green Hills HighTec Clang Diab

Bare-metal FreeRTOS QNX VxWorks Zephyr SafeRTOS

MCU 코드 커버리지 측정 방법

1

빌드 시 계측

Coco는 기존 컴파일러를 래핑합니다. 계측된 바이너리는 평소와 똑같이 빌드되어 타깃에 플래시됩니다.

2

실제 하드웨어에서 테스트 실행

테스트는 실제 MCU 타겟(베어메탈 또는 RTOS)에서 실행됩니다. 커버리지 데이터는 실행 중에 장치에서 수집됩니다.

3

사용 가능한 채널을 통해 데이터 가져오기

Coco는 하드웨어에 맞게 구현할 수 있는 커스텀 IO 함수를 제공합니다. 지원되는 전송 경로는 다음과 같습니다.

GDB variable dump any target
Serial / COM port common
TCP/IP networked targets
CAN bus automotive
ARM semihosting ARM Cortex-M/R
Qt for MCUs DeviceLink Qt MCUs projects
4

병합, 분석, 보고

여러 테스트 실행 및 타깃의 결과가 단일 CoverageBrowser 보고서로 병합됩니다. 전체 워크플로우는 CI 통합을 위해 명령줄에서 스크립트로 제어할 수 있습니다.

Qt for MCU 통합
기본 제공되는 C++ 및 QML에 대한 완벽한 커버리지

Qt for MCU를 사용하여 개발하는 팀을 위해, Coco는 단일 워크플로우 내에서 C++과 QML(Qt Quick Ultralite)을 모두 포괄하는 전용 통합 기능을 제공합니다. 지원되는 Qt for MCU 툴체인의 컴파일러 프로필이 기본적으로 포함되어 있으므로 수동 구성이 필요하지 않습니다. C++ 및 QML 커버리지 결과는 하나의 데이터베이스로 통합되어 애플리케이션 커버리지를 종합적으로 파악할 수 있습니다.

CoverageBrowser 보드에서 직접 디바이스 검색 및 원클릭 커버리지 가져오기
테스트 실행 중 디바이스 출력을 모니터링하기 위한 디버그 출력 콘솔
--qul 옵션을 통한 QML 계측으로 프로젝트 통합을 자동으로 처리
데이터 검색을 위해 디버거나 사용자 정의 IO 함수가 필요 없음

Qt for MCU 버전 2.12.1 이상과 호환됩니다.

규제가 엄격한 산업을 위한
감사인이 검증할 수 있는 커버리지 증빙 자료 준비

MCU 소프트웨어에 대한 안전 표준은 특정 수준에서 구조적 커버리지 증거를 요구합니다. Coco는 함수 및 구문 커버리지부터 분기, 조건, MC/DC에 이르기까지 해당 표준이 요구하는 모든 수준을 지원합니다. Coco를 통해 감사 준비가 완료된 상태이며 귀사의 표준에 완전히 부합하는 보고서가 생성됩니다. 완전한 툴 인증이 필요한 프로젝트의 경우, ISO 26262, DO-178C, IEC 62304, EN 50128 표준별 인증 키트를 별도로 구매할 수 있습니다.

ISO 26262 (ASIL D까지) · DO-178C · IEC 62304 · IEC 61508 · EN 50128
SGS TÜV Saar 공인 인증 완료. 인증 번호: FS/71/220/26/2113

“Coco는 코드와 테스트 사이의 연결 고리를 채워주는 도구입니다. 처음에는 Coco가 평범한 코드 커버리지 도구라고 생각했지만, 실제로 사용해 보니 매우 정교한 기능들이 있다는 것을 알게 되었습니다."

InnovMetric

tool qualification
규제가 엄격한 산업을 위한 도구 인증

몇 개월이 걸리던
수작업도 한 번에

소프트웨어 인증을 받기 위해서는 도구 적격성 검사가 필요합니다.

Coco 도구 인증 키트는 안전이 중요한 개발 환경에서 Coco가 안전하고 신뢰할 수 있는 도구라는 것을 입증하는 데 필요한 모든 것을 제공합니다. 테스트 스위트를 직접 구축하거나 정당성 설명서를 처음부터 작성할 필요가 없습니다. Coco가 이미 모두 준비해 두었습니다.

  • 사전 구축된 테스트 케이스 및 예상 결과

  • 툴 분류 및 안전 매뉴얼

  • ISO 26262, DO-178C, IEC 62304, EN 50128 등 다양한 표준 지원

다양한 산업 분야를 지원하도록 설계된 Coco는 즉시 사용 가능한 검증 보고서, 프로세스 문서 및 인증 템플릿을 제공하여 규정 준수 및 품질 보증을 간소화합니다. 

도구 인증 키트에 대해 자세히 알아보기

 

Coco의 새로운 기능을 확인해보세요  
- Coco 7.5 최신 릴리스

  • CRAP 메트릭: 사이클로매틱 복잡도와 코드 커버리지를 단일 위험 점수로 통합하여, 버그가 포함될 가능성이 가장 높은 C++ 함수 목록을 우선순위별로 제공합니다. 이를 통해 더 이상 커버리지 퍼센트 수치에만 매달리지 않고 정말 중요한 부분을 먼저 수정할 수 있습니다.
  • cmimport: Python의 coverage.py 보고서를 Coco 형식으로 변환하여 Python 및 C++ 커버리지를 하나의 통합 보고서로 병합할 수 있습니다. 이 덕분에 이제 스택 전반에서 두 가지 도구를 별도로 관리할 필요가 없습니다.
  • Coco Setup: 컴파일러 툴체인을 자동으로 감지하고 커버리지 스캐너 래퍼를 생성하여, 며칠이 걸리던 구성 작업을 단 5분 만에 안내에 따라 완료할 수 있습니다.
  • Qt for MCUs: 임베디드 타겟 장치에서 실행되는 C++ 및 QML 모두에 계측을 적용하고, Device Link 프로토콜을 사용하여 커버리지 데이터를 자동으로 전송함으로써, 디버거 스크립팅 없이도 실제 하드웨어에서 프론트엔드부터 백엔드에 이르는 완전한 커버리지 보고서를 제공합니다.

 

최신 릴리스 업데이트 내용 확인하기

인증 키트

테스트 프로세스가 안전 표준에 부합하는지 확인할 수 있도록 도와주는 맞춤형 종합 인증 도구입니다.

더 알아보기

문서

Coco의 기술적 측면에 대해 자세히 알아보세요.

자세히 보기

Coco 평가판 활용 가이드

평가판 활용 가이드는 Coco 평가판을 다운로드하여 세팅하고 사용하기까지의 모든 과정을 안내합니다.

가이드 확인하기

블로그

코드 커버리지 70%, 80%, 90%, 아니면 100%? 어느 정도면 충분할까요?

70%, 80%, 심지어 100%와 같은 수치만으로는 전체적인 상황을 파악할 수 없으며, 때로는 잘못된 안도감을 줄 수도 있습니다. “코드 커버리지 70%, 80%, 90%, 아니면 100%면 충분할까?” 블로그 글에서는 이러한 지표가 테스트에 대해 실제로 무엇을 의미하는지, 그리고 왜 구문 커버리지 100%를 달성했더라도 여전히 위험한 사각지대가 남을 수 있는지 자세히 살펴봅니다. 

가이드

AI 코드 어시스턴트를 활용하여 단위 테스트 생성 및 커버리지 극대화하기

GitHub CopilotCoco Code Coverage를 활용하여 테스트 커버리지를 65%에서 78%로 높이는 방법을 확인해보세요. 또 이 접근 방식을 안전이 중요한 분야를 포함한 다른 프레임워크 및 산업 분야에 어떻게 적용할 수 있는지 알아보세요.

소프트웨어 개발에서의 품질 보증을 위한 완벽한 가이드

가이드 읽어보기

자주 묻는 질문

임베디드 C/C++ 시스템의 코드 커버리지는 어떻게 측정하나요?

임베디드 C/C++ 시스템에서 코드 커버리지를 측정하려면, 크로스 컴파일 타겟에 맞게 코드를 계측하고 실제 하드웨어에서 실행 데이터를 수집할 수 있는 도구가 필요합니다. Coco는 컴파일러 레벨 계측 방식을 사용하는데, 이는 컴파일러(GCC, Clang, IAR, ARM/Keil, Green Hills 등)를 감싸서 빌드 과정 중에 측정 지점을 삽입하는 방식입니다. 커버리지 데이터는 QNX, VxWorks, FreeRTOS와 같은 RTOS 기반 시스템은 물론 베어메탈(Bare-metal) 마이크로컨트롤러를 포함한 실제 임베디드 타겟에서 테스트를 실행하는 동안 수집되며, 이후 CoverageBrowser에서 분석됩니다. 여러 타겟과 구성에서 얻은 결과는 하나의 커버리지 리포트로 병합할 수 있습니다.

MC/DC와 분기 커버리지의 차이는 무엇인가요?

결정 커버리지(Decision coverage)라고도 불리는 분기 커버리지(Branch coverage)는 if문과 같은 모든 결정이 참과 거짓 두 값으로 모두 평가되었는지를 검증합니다. MC/DC(Modified Condition/Decision Coverage)는 여기서 한 단계 더 나아가, 하나의 결정 안에 있는 개별 조건 각각이 그 결정의 결과에 독립적으로 영향을 미치는지를 요구합니다. 즉, 각 조건이 단독으로 결과를 바꿀 수 있음을 개별적으로 입증해야 합니다. MC/DC는 분기 커버리지보다 더 많은 테스트 케이스를 필요로 하지만, 훨씬 강력한 품질 보증을 제공합니다. 이 때문에 ISO 26262의 ASIL D 등급, DO-178C의 DAL A 등급에서 MC/DC가 요구되고 있습니다.

C++ 및 임베디드 시스템에 적합한 코드 커버리지 도구는 무엇인가요?

Coco는 데스크톱과 임베디드 시스템에서의 C/C++ 개발을 위해 특별히 설계된 코드 커버리지 분석 도구입니다. GCC, Clang, IAR, ARM/Keil, Green Hills 컴파일러에 대한 컴파일러 레벨 계측을 지원하며, QNX, VxWorks, FreeRTOS, 베어메탈 마이크로컨트롤러를 포함한 임베디드 타겟에서 동작합니다. ISO 26262, DO-178C, IEC 62304와 같은 안전 표준을 따르는 팀을 위해, Coco는 SGS TÜV Saar로부터 ASIL D 등급으로 독립 인증을 받았으며 표준별 인증 키트를 제공합니다.

소스 코드 접근 없이도 코드 커버리지를 수집할 수 있나요?

네, 가능합니다. Coco는 계측(Instrumentation) 과정과 소스 코드 접근 권한을 분리하는 방식으로 블랙박스 테스트를 지원합니다. 소스 코드를 보유한 개발자가 소스 코드가 전혀 포함되지 않은 계측된 바이너리, 즉 블랙박스 계측 데이터베이스를 생성합니다. 이 바이너리는 QA 엔지니어나 외주 테스트 팀에게 배포되어 테스트를 실행하고 실행 리포트(.csexe 파일)를 생성하는 데 사용됩니다. 이 실행 리포트는 다시 개발자에게 전달되어 마스터 커버리지 데이터베이스에 병합되며, 이 과정에서 QA 팀은 소스 코드를 전혀 볼 수 없습니다. 이는 분산 팀, 외주 테스트, IP(지적재산) 민감 프로젝트에 특히 유용합니다.

임베디드 C/C++ 타겟에서 코드 커버리지는 어떻게 측정하나요?

Coco는 기존에 사용하던 컴파일러를 감싸서 빌드 과정 중에 측정 지점을 삽입하는 컴파일러 단위 계측 방식을 사용합니다. 커버리지 데이터는 QNX, VxWorks, FreeRTOS와 같은 RTOS 기반 시스템 및 베어메탈 마이크로컨트롤러를 포함한 실제 임베디드 타겟에서 테스트를 실행하는 동안 수집됩니다. 여러 타깃과 구성에서 얻은 결과는 CoverageBrowser에서 하나의 커버리지 리포트로 병합할 수 있으며, 별도의 툴체인 마이그레이션 작업은 필요하지 않습니다.

Coco는 CI/CD 파이프라인과 어떻게 연동되나요?

Coco는 Jenkins, GitHub Actions, GitLab CI와 기본적으로 연동됩니다. 커버리지 데이터는 파이프라인 실행 중에 자동으로 수집되며, Cobertura XML, SonarQube XML, JUnit, EMMA-XML과 같은 CI 호환 형식으로 내보내집니다. 커버리지 임계값을 품질 게이트로 설정하여, 커버리지가 정해진 기준 이하로 떨어질 경우 병합을 차단할 수 있습니다. cmreport 명령줄 도구를 사용하면 GUI 없이도 모든 빌드 스크립트에서 자동으로 리포트를 생성할 수 있습니다.

소프트웨어 테스트에서 코드 커버리지란 무엇을 의미하나요?

코드 커버리지 분석은 테스트 실행 중에 소스 코드의 어떤 구문, 분기, 조건이 실행되었는지를 기록하여, 전체 실행 가능한 코드에 대한 백분율로 표시하는 것입니다. 이는 요구사항 커버리지를 측정하는 ‘테스트 커버리지’나 테스트가 실제 결함을 포착하는지 여부를 측정하는 ‘테스트 효과성’과는 별개의 개념입니다.

ISO 26262 ASIL D를 충족하려면 어떤 코드 커버리지가 필요한가요?

ISO 26262 제6부 표 14에서는 ASIL 수준별로 구조적 커버리지 요구 사항을 분류하고 있습니다. ASIL D의 경우, 수정된 조건/결정 커버리지(MC/DC)는 ‘강력히 권장(++)’으로 분류되는데, 이는 인증 기관이 이를 기대하며, 미적용 시 그 사유를 제시해야 함을 의미합니다. ASIL C에서는 MC/DC가 ‘권장(+)’됩니다. ASIL A 및 B에서는 구문 커버리지와 분기 커버리지가 요구됩니다. ISO 26262에서 ‘강력히 권장’은 일부 DO-178C 요구사항과 마찬가지로 엄격한 의무 사항은 아니지만, 실제로 감사관들은 ASIL D 수준에서 이를 사실상 필수 사항으로 취급합니다. Coco는 SGS TÜV Saar로부터 ASIL D까지의 ISO 26262 프로젝트에 사용될 수 있도록 인증을 받았습니다. (인증 번호 FS/71/220/26/2113)

IEC 62304의 Class C에서는 어떤 코드 커버리지를 요구하나요?

IEC 62304는 의료기기 소프트웨어를 안전 위험 수준에 따라 분류합니다. Class C 소프트웨어(오작동 시 사망 또는 중상을 초래할 수 있는 경우)의 경우, 위험 통제 조치와 관련된 모든 코드가 테스트되었음을 입증하는 커버리지 보고서를 포함한 포괄적인 소프트웨어 단위 검증이 필요합니다. Class C 의료기기에 대한 규제 당국 제출 자료에는 구조적 커버리지 증거가 포함되어야 합니다. Coco는 IEC 62304 요구 사항에 부합하는 감사 준비가 완료된 커버리지 보고서를 생성하며, IEC 62304 인증 키트를 제공합니다.

안전이 중요한 소프트웨어의 경우 코드 커버리지 도구 인증을 받아야 하나요?

네 그렇습니다. ISO 26262, DO-178C, IEC 62304, IEC 61508, EN 50128에 따르면, 안전이 중요한 소프트웨어 검증에 사용되는 모든 도구는 목표하는 무결성 수준에 대해 인증을 받아야 합니다. 사전 인증된 도구가 없는 경우, 인증 부담은 전적으로 개발 팀에 돌아가게 되며, 이로 인해 도구 동작 문서, 검증 테스트 스위트 및 인증 보고서를 작성하는 데 수개월의 추가적인 노력이 소요됩니다. Coco는 이러한 부담을 크게 줄여줍니다. Coco 버전 7.4.0은 ISO 26262-8:2018 제11조에 따라 SGS TÜV Saar로부터 독립적인 인증(인증 번호 FS/71/220/26/2113)을 받았습니다. Coco의 ISO 26262, DO-178C, IEC 62304, EN 50128 표준별 인증 키트는 나머지 문서, 미리 구축된 테스트 케이스 및 안전 매뉴얼을 제공하므로, 도구 인증을 몇 달이 아닌 며칠 만에 완료할 수 있습니다.

Coco는 ISO 26262의 안전이 중요한 개발을 위한 인증을 받았나요?

네 그렇습니다. Coco 버전 7.4.0은 SGS TÜV Saar로부터 ISO 26262-8:2018 제11조에 따라 독립적인 평가 및 인증을 받았습니다(인증 번호 FS/71/220/26/2113). 이는 자동차 안전 무결성 수준 중 가장 높은 등급인 ASIL D 수준의 안전 관련 소프트웨어 검증에 적합한 것으로 확인되었습니다. Coco에는 ISO 26262, DO-178C, IEC 62304 및 EN 50128 표준별 자격 인증 키트가 제공됩니다.

Coco는 어느 정도의 커버리지 수준을 지원하나요?

Coco는 함수 커버리지, 라인 커버리지, 구문 블록 커버리지, 결정/분기 커버리지, 조건 커버리지, 수정 조건/결정 커버리지(MC/DC), 다중 조건 커버리지(MCC)를 지원합니다. MC/DC는 ISO 26262의 ASIL C/D 및 DO-178C의 DAL A/B에서 요구되는 수준입니다. 모든 수준은 CoverageBrowser에서 색상으로 구분된 소스 코드 주석으로 시각화됩니다.

Coco는 임베디드 시스템 및 실제 하드웨어 타겟과 호환되나요?

네 호환됩니다. Coco는 에뮬레이터뿐만 아니라 실제 임베디드 타겟에서도 커버리지 데이터를 수집할 수 있습니다. GCC, Clang, IAR, ARM/Keil, Green Hills 및 기타 임베디드 컴파일러와 호환됩니다. 지원되는 플랫폼으로는 임베디드 리눅스, QNX, VxWorks, FreeRTOS 및 베어메탈 마이크로컨트롤러가 있습니다. 실제 하드웨어 실행을 통해 수집된 커버리지 데이터는 다른 타겟의 결과와 병합되어 CoverageBrowser에서 함께 분석됩니다.

Coco에서 CRAP 지표란 무엇을 의미하나요?

CRAP은 변경 위험 안티 패턴(Change Risk Anti-Patterns)의 약자입니다. 이 지표는 사이클로매틱 복잡도(Cyclomatic complexity)와 커버리지 데이터를 결합하여 각 함수에 대한 위험 점수를 산출합니다. 복잡도가 높고 커버리지가 낮을수록 점수는 높아집니다. 점수가 30을 초과하는 함수는 CoverageBrowser에서 고위험으로 표시됩니다. 이를 통해 QA 팀은 직감에 의존하기보다 객관적인 위험 순위에 따라 새로운 테스트 작성의 우선순위를 정할 수 있으며, 순위가 매겨진 결과를 내보내 스프린트 계획 수립 및 경영 보고에 활용할 수 있습니다.

Coco의 패치 분석은 어떻게 이루어지나요?

패치 분석은 통합 형식의 diff 파일을 입력으로 받아, 테스트 스위트에서 생성된 기존 커버리지 실행 데이터(.csmes 및 .csexe 파일)와 대조합니다. 이를 통해 패치된 버전에 대해 테스트 스위트를 다시 실행하지 않고도, 패치 내의 어떤 줄이 기존 테스트에서 커버되었는지, 어떤 줄이 커버되지 않았는지, 그리고 변경된 코드 경로를 어떤 테스트가 실행했는지를 보여주는 주석이 달린 보고서를 생성합니다. 생성된 결과물은 코드 검토, 릴리스 게이트, 인증 증거 자료로 활용하기 위해 HTML 또는 CSV 형식으로 제공됩니다.

안전이 중요한 프로젝트에서 코드 커버리지 도구는 반드시 인증을 받아야 하나요?

네, 반드시 인증을 받아야 합니다. ISO 26262, DO-178C, IEC 62304, IEC 61508, EN 50128에 따르면, 안전이 중요한 소프트웨어 검증에 사용되는 모든 도구는 목표하는 무결성 수준에 대해 인증을 받아야 합니다. 사전 인증된 도구가 없다면, 인증 부담은 전적으로 개발 팀에 전가되며, 인증 작업을 위해 일반적으로 수개월의 시간이 소요됩니다. Coco의 TÜV Saar 인증은 이러한 초기 인증 부담을 해소해 줍니다. ISO 26262, DO-178C, IEC 62304 및 EN 50128 표준별 인증 키트를 사용하면 나머지 인증 절차를 수개월이 아닌 단 며칠 만에 완료할 수 있습니다.

Coco는 C와 C++ 이외의 언어에서도 작동하나요?

네. Coco는 C, C++, C#, QML, Tcl 및 Python을 지원합니다. 다만 Python 모듈의 경우 coverage.py 통합을 통해 지원되며, 네이티브 C/C++/C#/QML/Tcl 레이어에 대한 계측은 Coco가 처리합니다. Coco는 Qt 전용 도구가 아니며, 프레임워크와 관계없이 이러한 언어를 사용하는 모든 코드베이스에서 작동합니다. 지원되는 모든 언어에 대한 커버리지 결과는 단일 보고서로 통합하여 함께 분석할 수 있습니다.

테스트에서 부족한 부분을
바로 확인하세요

Coco의 평가용 라이선스를 사용하여 기존 빌드 시스템 및 테스트 스위트에 맞춰 컴포넌트를 계측해 보세요. 그 날 바로 실제 커버리지 보고서를 받아보실 수 있습니다. 이는 데모도, 샘플 데이터도 아닌, 귀사의 코드에서 도출된 실제 실행 결과로, 테스트가 정확히 어디에서 미흡한지 보여줍니다.