Invisible Safety,

Proven by Intelligence

보이지 않는 안전을 인텔리전스로 증명하다.

기술 노트
IT 산업의 변화를 이끄는 MDS인텔리전스의
기술 인사이트를 만나보세요.
시스템 소프트웨어 개발
[SW검증센터] Code Coverage 중요성과 오해(1)
2026년 01월 28일

안녕하세요. 🤗


임베디드 소프트웨어 전문 기업, MDS인텔리전스입니다. 



ISO 26262, IEC 61508, 무기체계 소프트웨어 개발 및 관리 매뉴얼과 같은 자동차, 국방, 철도와 기타 산업의 표준에서는 소프트웨어 검증 시 예외 없이 동적 시험을 통한 커버리지를 확인해야 함을 명시하고 있습니다. 시간이 지날수록 소프트웨어의 복잡성은 높아지고 시스템의 비중이 커짐에 따라 소프트웨어 검증에 대한 중요성은 이제는 모두가 인지하고 있습니다. 



이번 포스팅에서는  소프트웨어 검증에 있어서 왜 여러 표준에서 커버리지 확인을 필수적으로 요구하는지 에 대해 알아보고자 합니다.


 


 Code Coverage 의미


Code Coverage는 전체 소프트웨어 중 실제로 얼마나 실행되었는지를 나타내는 지표입니다. Code 라인 수를 기준으로 한 Statement Coverage, 각 분기문의 결과와 조건의 실행 정도를 나타내는 Branch 커버리지, MC/DC 같은 것들이 모두 Code Coverage의 종류 중 하나입니다. 소프트웨어에 따라 안전 등에 영향을 미칠 수 있는 위험도 분석 등을 통해 SIL, ASIL 등을 측정하고 그에 따라 측정해야 하는 Code Coverage의 수준이 결정됩니다.



앞서 언급했듯 Code Coverage는 얼마나 실행되었는지를 확인할 수 있는 지표입니다. 각종 표준에서 검증 시 Code Coverage를 확인하도록 하는 결정적인 이유는 실행되지 않은 코드 속에 숨겨진 결함이 존재할 수 있기 때문에, 모든 소스코드에 대해 실행하며 숨겨진 결함이 없는지 확인하라는 의미입니다. 아래의 코드를 통해 알아보겠습니다.



위 코드는 condition을 체크해서 Normal인 경우에 특정 데이터를 반환하도록 구현한 소스코드입니다.

개발 과정에서 condition이 Normal 일 때 잘못된 데이터를 반환하도록 구현 시 실수했다고 가정하겠습니다. 




Condition 이 Normal 이 아닌 경우만 실행시켜 본다면 모든 코드에 대해 실행시켜 볼 수 없게 되고 조건문 안의 Bug code는 실행되지 않게 됩니다.이 경우에는 검증 시에 결함을 발견할 수 없게 됩니다. 즉 Code Coverage 확인은 소프트웨어 품질과 밀접한 관계를 갖고 있습니다. 




간단하게 요약하자면 Code Coverage는 테스트를 수행하며 소스 코드의 모든 부분들을 확인했는지를 나타내며, 실행되지 않은 코드에 존재할 수 있는 코드 결함에 대해 확인했는지를 의미합니다. 이는 테스트가 충분히 이루어졌는지를 의미하기도 합니다. 충분한 테스트를 통해 결함을 발견할 확률은 높아지며, 당연히 소프트웨어 품질 향상과 밀접한 연관성을 갖고 있습니다.




 Code Coverage 어려움


코드 커버리지 측정은 검증 단계에 있어서 중요한 부분임에는 확실하지만 이를 측정한다는 것은 생각보다 쉬운 일은 아닙니다. 



실제로 소프트웨어를 실행시켜가며 각 조건별로 실행된 부분과 실행되지 않은 부분을 식별해야 하고 이를 종합해야 하는 번거로움이 있습니다. 또한 필요에 따라 유닛 간 독립적인 테스트를 위해 Stub function을 만들어야 할 필요도 있습니다. 



이것들을 하나하나 직접 한다는 것은 개발 과정에 있어서 생각보다 많은 시간과 비용이 소모되기 때문에 Code Coverage를 측정할 수 있는 자동화 도구를 사용하는 것은 사실상 필요가 아닌 필수적인 개발 환경에서, 많은 고객분들이 MDS인텔리전스의 VectorCAST 도입을 통해 어려움을 해결하고자 합니다.



VectorCAST는 동적 검증 시 Code Coverage를 측정할 수 있는 매우 편리한 기능들을 제공합니다. 자동으로 Instrument code를 생성해서 다양한 Code Coverage를 자동으로 측정할 수 있습니다. 또한 앞서 이야기한 Stub function이나 Driver code도 자동으로 생성하여 코드 검증을 용이하게 해줍니다.







MDS인텔리전스 소프트웨어 검증센터에서는 다양한 검증 영역에 대해 도움을 드리고 있습니다. 



동적 검증을 위한 자동화 도구인 VectorCAST와 코드 커버리지 측정에 대한 도움이 필요하시거나, 


기타 문의사항은 sve@mdsit.co.kr로 문의 메일 부탁드립니다.



​MDS인텔리전스

임베디드 소프트웨어 고품질 및 신뢰성 확보를 위한, SW 검증센터

E. sve@mdsit.co.kr