Coco
추측이 아닌 코드 커버리지 수치로 증명하는 테스트 품질
Coco는 데스크톱 애플리케이션과 임베디드 시스템을 개발하는 소프트웨어 팀을 위한 최신 코드 커버리지 도구입니다. 빌드 프로세스 중 코드를 계측하여, 컴파일러, 빌드 시스템, 테스트 스위트를 변경하지 않고도 테스트 중 실행된 구문, 분기, 조건을 정확하게 캡처합니다. C, C++, C#, QML, Python, Tcl을 지원하며, 계측 및 정밀한 테스트 커버리지 분석을 제공합니다. Coco를 통해 ISO 26262 및 DO-330과 같은 국제 안전 및 컴플라이언스 표준에 부합하는 감사 대비 보고서를 생성할 수 있습니다.
Coco 무료 체험하기 문의하기 Coco for MCU
대부분의 팀이 코드 커버리지를 측정하지만, 이를 의사결정에 활용하지는 않습니다.
커버리지 수치는 어떤 코드가 실행됐는지는 알려주지만, 테스트되지 않아 위험을 초래할 수 있는 부분이 어디인지, 검증 없이 변경된 코드가 무엇인지, 리스크를 가장 많이 줄이기 위해서는 어디에 테스트를 추가해야 하는지는 알려주지 않습니다. Coco는 이러한 취약점을 가시화하고 실질적인 조치로 이어질 수 있도록 하여, 직관이 아니라 근거에 기반한 릴리스 결정을 내릴 수 있도록 합니다.
특히 규제가 엄격한 산업에서는 의사결정에 대한 근거가 명확히 입증되어야 합니다. 감사 담당자가 각 산업 표준에 의거해 추적 가능한 MC/DC 수준의 구조적 커버리지를 요구하기 때문입니다. 대부분의 도구는 브랜치 수준에서 멈추지만, Coco는 다릅니다.
코드 커버리지로 가능해지는 것들
한 번도 테스트되지 않은 코드를
정확히 확인하세요
커버리지 측정은 무엇이 테스트되었는지 알려줍니다.
근거를 확보한 후에는 아래와 같은 의사결정, 논의, 그리고 결과의 단계를 거치게 됩니다.
가시성
테스트가 무엇을 커버하는지 정확히 확인하세요. 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 리뷰, 경영진 보고를 위해 정렬 및 내보내기가 가능합니다.
가장 엄격한 안전 표준을
위한 인증 완료

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 수준까지, 모든 주요 구조적 커버리지 지표를 지원합니다. 각 수준은 테스트 품질을 바라보는 서로 다른 관점을 제공합니다. 적합한 수준은 적용 표준, 무결성 등급, 그리고 릴리스 전 필요한 신뢰도에 따라 달라집니다.
함수 커버리지
함수 커버리지는 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
테스트 소요 시간 및 성능 지표
Coco는 커버리지 뿐만 아니라 각 테스트의 실행 시간과 코드의 각 부분이 실행되는 빈도를 추적합니다. 이를 통해 팀은 실행 속도가 느린 테스트를 파악하고, 필요 이상으로 자주 호출되는 코드를 찾아내며, CI 파이프라인 전반에서 테스트가 실행되는 순서를 최적화할 수 있습니다. 이는 커버리지 표준의 필수 요건은 아니지만, 필요한 커버리지를 희생하지 않으면서 테스트 스위트를 간결하고 빠르게 유지하는 데 유용한 도구입니다.
표준
CI and pipeline optimisation — not a coverage standard requirement
산업 분야
All industries
각 팀원마다 필요한 기능이 다릅니다.
Coco는 모든 것을 제공합니다.
QA 담당자 & 테스트 리더
단계별 도입 효과
가시성 확보
일관성 강화
ROI 극대화
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
추측이 아닌 객관적인 릴리스 증거를 활용하세요.
-
CoverageBrowser와 cmreport는 문장 블록(Statement block)부터 MC/DC에 이르기까지 모든 수준에서 프로젝트 전반에 걸쳐 일관된 측정 결과를 제공합니다.
-
추정치 대신 모든 릴리스의 실제 테스트 현황을 파악할 수 있습니다.
주관적 의견이 아닌 실제 데이터를 바탕으로 릴리스를 리뷰할 수 있습니다.
모든 팀에 공통된 완료 기준을 제시합니다.
-
조직 확장
모든 테스트를 의미 있게 활용하세요.
불필요한 부분이 아닌 중요한 부분에 집중하세요. -
cmreport는 매 빌드마다 자동으로 보고서를 생성하며, Cobertura XML 및 SonarQube XML 내보내기 기능은 외부 대시보드에 데이터를 제공합니다. 또한 CoverageBrowser는 빌드 간 결과를 나란히 비교합니다.
-
커버리지 간극이 릴리스 시 예상치 못한 문제가 아닌, 관리 가능한 미해결 과제로 전환됩니다.
모든 팀과 플랫폼에 걸쳐 동일한 측정 기준을 적용합니다.
SonarQube 또는 Codecov와 연동하여 시계열 추세 대시보드를 확인할 수 있습니다.
컴플라이언스 & 안전 담당자
단계별 도입 효과
감사 통과
증빙 자료 구축
자격 인증
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
감사 담당자가 인정할 수 있는 커버리지 증빙 자료를 생성하세요.
-
실제 런타임 실행을 기반으로 측정된 MC/DC, 조건 및 결정 커버리지. CoverageBrowser는 사용자의 표준에 맞춰 HTML, XML 및 CSV 형식의 보고서를 내보냅니다.
-
정적 분석이 아닌 실제 실행에 기반한 증거를 활용할 수 있습니다.
포맷 변경 없이 표준에서 요구하는 형식으로 보고서를 생성할 수 있습니다.
Coco는 SGS TÜV Saar 인증 툴체인을 획득했습니다.
-
도구 인증
도구 적격성 평가를 몇 달이 아닌 단 며칠 만에 완료하세요.
-
도구 인증 키트(TQKs, Tool Qualification Kits)는 표준별 문서, 미리 구축된 테스트 케이스 및 안전 매뉴얼을 제공합니다. MCC 및 MC/DC는 최고 수준의 무결성 등급을 지원합니다.
-
ISO 26262, DO-178C, IEC 61508, EN 50128 인증 제출용 자격 검증 문서를 준비 완료하세요.
테스트와 코드 간의 완벽한 추적성을 보장할 수 있습니다.
내부 인증 작업을 처음부터 새로 구축할 필요가 없습니다.
개발자 & 엔지니어
단계별 도입 효과
리스크 파악
자신 있는 출시
더 빠른 사이클
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
커밋하기 전에 테스트가 어떤 코드를 커버하는지 확인하세요.
-
CoverageBrowser 는 문장 블록(Statement block) 및 결정 커버리지(Decision coverage)를 사용하여 소스 코드 내에서 테스트된 코드와 테스트되지 않은 코드를 색상으로 구분하여 표시합니다.
-
소스 코드에서 어떤 코드가 커버되고 어떤 코드가 커버되지 않는지 직접 확인할 수 있습니다.
직감이나 추측이 아니라, 실제 데이터를 바탕으로 정보에 입각한 리팩토링 결정을 내릴 수 있습니다.
-
코드 병합 전 신뢰도 검증
코드 병합 전에 모든 변경 사항이 미치는 영향을 파악하세요.
-
패치 커버리지 분석은 기존 커버리지 데이터와 비교하여 변경 내역을 매핑하고, 어떤 라인이 커버되었는지, 어떤 라인이 커버되지 않았는지, 그리고 어떤 테스트가 해당 경로를 실행했는지를 보여줍니다. 이 모든 과정을 전체 테스트 스위트를 다시 실행하지 않고도 확인할 수 있습니다.
-
검토 전에 변경 사항 중 어떤 라인이 테스트를 통과했는지 정확히 파악할 수 있습니다.
모든 테스트를 다시 실행하지 않고도 기존 테스트 중 어떤 것이 패치를 검증하는지 확인할 수 있습니다.
복잡한 로직의 경우, MC/DC가 모든 조건이 완전히 검증되었는지 확인합니다.
DevOps & CI 엔지니어
단계별 도입 효과
파이프라인에 추가
전체 자동화
표준 준수
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
지금 바로 파이프라인에 커버리지 데이터를 반영하세요.
-
cmreport는 Cobertura XML, SonarQube XML, JUnit 및 EMMA-XML을 출력하며, 이는 기존 CI 시스템에서 이미 지원하는 형식입니다.
-
완전한 자동화
모든 수동 작업을 제거하고 표준을 자동으로 적용하세요.
-
빌드 과정에서 CoverageScanner 도구가 실행됩니다. cmreport는 명령줄에서 보고서를 생성합니다. 패치 커버리지 분석은 모든 diff에 대해 실행됩니다. CI 시스템은 아웃풋을 읽어들이고 임계값을 적용합니다.
-
수동 작업 없이 매 빌드마다 커버리지 데이터를 수집하고 보고합니다.
Coco가 데이터를 제공하면, CI 시스템이 게이트를 적용합니다.
SonarQube 또는 Codecov와 연동하여 커버리지 추세 대시보드를 시각적으로 확인할 수 있습니다.
엔지니어 팀 매니저 & 기술 팀장
단계별 도입 효과
리스크 파악
팀 간 협력 강화
의사 결정
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
조직 전체에서 소프트웨어 위험 요소를 명확히 파악하세요.
-
CRAP 지표는 복잡도와 커버리지 격차를 결합하여 가장 위험한 함수를 파악합니다.
CoverageBrowser와 cmreport는 모든 팀에 걸쳐 일관된 측정 결과를 제공합니다. -
"이 정도면 충분히 테스트되었다"는 추측 대신, 객관적인 데이터로 확인할 수 있습니다.
코드베이스 중 어느 부분이 테스트되지 않아 가장 큰 위험 요소가 되는지 파악할 수 있습니다.
모든 팀에 공유 가능하고 측정 가능한 품질 기준을 제시할 수 있습니다.
-
전략적 계획
커버리지 데이터를 바탕으로 투자 및 출시 결정을 내리세요.
-
모듈별 커버리지 격차 분석이 포함된 cmreport. 관리자와 경영진을 위한 대시보드용 Cobertura XML 및 SonarQube XML 내보내기. CoverageBrowser 빌드 비교가 가능합니다.
-
릴리스 간 커버리지를 비교하여 개선 현황을 추적할 수 있습니다.
측정 가능한 품질 데이터를 기반으로 테스트 투자 타당성을 입증할 수 있습니다.
Coco 내보내기 데이터를 SonarQube 또는 귀사의 CI 시스템과 연동하여 시계열 대시보드를 생성할 수 있습니다.
임베디드 & MCU 엔지니어
단계별 도입 효과
타겟에 툴 적용
실제 데이터 수집
빌드 전반에 걸친 확장
-
사용 사례
-
Coco 기능
-
기대 효과
-
시작하기
시뮬레이터가 아닌 실제 하드웨어에서 실제 커버리지를 확인하세요.
-
CoverageScanner는 툴체인 전환 없이 기존 컴파일러(ARM GCC, IAR, Green Hills, HighTec 등)를 감싸줍니다.
베어메탈 및 RTOS 타겟에서 문장 블록(Statement block), 분기(Decision), 함수 커버리지(Function coverage) 분석이 가능합니다. -
하드웨어가 실제로 실행하는 내용을 반영하는 커버리지를 확인할 수 있습니다.
빌드 시스템, 툴체인 또는 소스 코드를 변경하지 않고도 바로 측정을 시작할 수 있습니다.
-
데이터 수집
모든 타겟에서 수집한 커버리지 데이터를 가져와 하나의 보고서로 통합하세요.
-
CoverageScanner의 커스텀 IO 함수는 GDB, 시리얼, TCP/IP, CAN bus 및 ARM 세미호스팅을 지원합니다.
Qt for MCU의 경우, --qul-port 옵션을 사용한 cmcsexeimport를 통해 Qt for MCU 타겟에 대한 원클릭 임포트가 가능합니다.cmmerge와 cocoqmlscanner는 C++과 QML을 단일 데이터베이스로 통합합니다.
-
별도의 전송 방식이 필요하지 않으며, 하드웨어에 이미 탑재된 기능을 활용하면 됩니다.
모든 타겟 및 테스트 실행에 대한 통합 보고서를 확인할 수 있습니다.
빌드부터 보고서 생성까지 완전히 스크립트로 제어 가능한 엔드투엔드 워크플로우
있는지도 몰랐던 커버리지 공백을 파악하는 방법
Qt Group의 수석 소프트웨어 엔지니어인 James Vance가 Coco 코드 커버리지 인터페이스를 단계별로 설명하며,
커버리지를 측정하고 테스트되지 않은 코드를 식별하는 방법을 보여줍니다.
“코드 커버리지와 테스트 커버리지를 제대로 파악하지 못한다면 내가 개발하고 있는 소프트웨어 품질이 어느 정도인지 알지 못하는 것입니다. 그런 면에서 Coco 코드 커버리지는 우리에게 아주 유용한 도구라고 할 수 있습니다. ”
Jaakko Palokangas, Metso 디지털 기술 개발 이사
기존 환경에 완벽하게 통합되는
코드 커버리지 툴
Coco는 CI/CD, IDE 및 품질 관리 도구와 연동되어, 작업 현장에서 커버리지 분석 결과를 즉시 활용할 수 있도록 지원합니다. 테스트 데이터를 통해 장기적으로 소프트웨어 품질을 개선해보세요.
어디서나 배포하세요
Coco를 네이티브로 실행하거나 크로스 컴파일을 통해 다양한 타겟에서 사용하세요. 데스크톱부터 베어메탈 임베디드 시스템에 이르기까지 모든 대상 플랫폼에서 구동할 수 있습니다.
더 빠르게 개발하고 구축하세요
Coco를 통해 도구를 바꾸거나 코드를 리팩토링할 필요 없이 시스템을 구축할 수 있습니다.
Visual Studio
Eclipse
Qt
CMake
MSBuild
QML
C Languages
Tcl/Tk
보고하고 컴플라이언스를 준수하세요
팀과 감사 담당자가 이미 익숙한 형식으로 내보내기할 수 있습니다.
SonarQube
Cobretura
JUnit
HTML 5
이미 사용 중인 도구로 테스트하세요
Coco는 GoogleTest, Boost.Test, NUnit 등 기존 프레임워크와 완벽하게 연동됩니다.
Boost
Nunit
자동화하여 릴리즈하세요
CI/CD 파이프라인에서 자동화된 커버리지 피드백을 확인할 수 있습니다.
Jenkins
GitHub
Gitlab
임베디드 시스템 및 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 함수를 제공합니다. 지원되는 전송 경로는 다음과 같습니다.
|
||||||||||||
| 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
규제가 엄격한 산업을 위한 도구 인증
몇 개월이 걸리던
수작업도 한 번에
소프트웨어 인증을 받기 위해서는 도구 적격성 검사가 필요합니다.
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 프로토콜을 사용하여 커버리지 데이터를 자동으로 전송함으로써, 디버거 스크립팅 없이도 실제 하드웨어에서 프론트엔드부터 백엔드에 이르는 완전한 커버리지 보고서를 제공합니다.
블로그
코드 커버리지 70%, 80%, 90%, 아니면 100%? 어느 정도면 충분할까요?
70%, 80%, 심지어 100%와 같은 수치만으로는 전체적인 상황을 파악할 수 없으며, 때로는 잘못된 안도감을 줄 수도 있습니다. “코드 커버리지 70%, 80%, 90%, 아니면 100%면 충분할까?” 블로그 글에서는 이러한 지표가 테스트에 대해 실제로 무엇을 의미하는지, 그리고 왜 구문 커버리지 100%를 달성했더라도 여전히 위험한 사각지대가 남을 수 있는지 자세히 살펴봅니다.
가이드
AI 코드 어시스턴트를 활용하여 단위 테스트 생성 및 커버리지 극대화하기
GitHub Copilot과 Coco Code Coverage를 활용하여 테스트 커버리지를 65%에서 78%로 높이는 방법을 확인해보세요. 또 이 접근 방식을 안전이 중요한 분야를 포함한 다른 프레임워크 및 산업 분야에 어떻게 적용할 수 있는지 알아보세요.