정적 코드 검증과 동적 코드 검증

Vector는 두 가지 검증 방식을 모두 지원합니다

정적 분석과 동적 테스트는 동일한 품질 문제를 서로 다른 관점에서 다룹니다. 정적 분석은 소프트웨어를 실행하기 전에 소스 코드의 결함을 식별합니다. 동적 테스트는 실행 중 올바른 동작을 확인하고, 테스트가 코드를 얼마나 철저하게 검증하는지 측정합니다. 개발 파이프라인 전반에서 두 방식을 함께 적용하면, 각 방식이 서로 다른 유형의 결함을 보완적으로 포착할 수 있습니다. 

정적 코드 검증

정적 검증은 소스 코드를 실행하지 않고 분석하는 방식입니다. 정적 분석 도구는 코드의 구조와 논리를 직접 검토하여, 테스트를 한 번도 실행하기 전에 잠재적인 결함, 보안 취약점, 코딩 표준 위반 사항을 식별합니다. 

정적 분석으로 식별할 수 있는 항목

  • null 포인터 참조 및 배열 범위를 벗어난 액세스
  • MISRA C, AUTOSAR C++, CERT-C 등 코드 구현 표준 위반 
  • 초기화되지 않은 변수 및 부적절한 형 변환 
  • 도달 불가능한 코드 및 논리 오류 
  • CWE 분류 체계에 매핑된 보안 취약점 

주요 장점

  • 빌드나 실행 없이 소스 코드에서 직접 작동합니다.
  • 개발 초기 단계부터 빌드 파이프라인에서 지속적으로 실행됩니다
  • 개발 초기 단계에 통합할 경우 결함당 비용이 매우 낮습니다
  • 실행 환경이나 입력 데이터와 관계없이 일관되고 재현 가능한 결과를 생성합니다

PC-lint Plus는 Vector의 C 및 C++ 코드용 정적 분석 도구입니다. IEC 61508 및 ISO 26262 인증을 획득한 이 도구는 MISRA, AUTOSAR, CERT-C, CWE를 기본적으로 지원하며, 거의 모든 빌드 환경에 통합될 수 있습니다.

동적 코드 검증

동적 검증은 소프트웨어가 실행되는 동안 테스트하는 방식입니다. 정의된 테스트 케이스에 따라 코드를 실행하고, 실제 런타임 동작을 관찰하며, 테스트가 요구사항에 따라 코드를 얼마나 철저히 검증하는지 측정합니다. 

동적 테스트가 제공하는 항목

• 실제 환경 및 시뮬레이션 환경에서 코드가 올바르게 동작하는지 확인 
• 안전 표준에서 요구하는 문장, 분기, MC/DC를 포함한 코드 커버리지 측정 
• 스택 오버플로우 및 타이밍 위반과 같은 런타임 오류 탐지 
• 테스트 결과와 이를 검증하기 위해 설계된 요구사항 간의 요구사항 추적성

주요 장점

• 단순히 소스 코드 구조뿐 아니라 실제 런타임 동작을 검증합니다. 
• ISO 26262 및 DO-178C를 포함한 표준에서 구조적 커버리지 입증을 위해 요구됩니다. 
• 호스트 기반 및 타깃 기반 테스트 환경을 모두 지원합니다. 
• 지속적인 자동 실행을 위해 CI/CD 파이프라인에 통합할 수 있습니다. 

VectorCAST는 임베디드 C, C++, Ada 소프트웨어를 위한 Vector의 동적 테스트 및 테스트 자동화 플랫폼입니다. 이 플랫폼은 단위 테스트를 생성, 관리, 실행하고, 업계 표준 수준에 맞춰 코드 커버리지를 측정하며, 안전 인증에 필요한 검증 증적 보고서를 생성합니다.

왜 두 가지 모두 필요한가

정적 분석과 동적 테스트는 각각 명확한 적용 범위를 가지고 있습니다. 정적 분석은 소스 코드를 대상으로 수행되며, 실행 전에 결함을 식별합니다. 동적 테스트는 실행 중인 소프트웨어를 대상으로 수행되며, 실제 환경에서 올바른 동작을 확인합니다. 정적 분석과 동적 테스트를 함께 적용하는 개발 프로세스는 각 방법이 가장 효과적인 시점에서 결함을 포착할 수 있습니다. 이러한 이유로 ISO 26262, DO-178C, IEC 61508, IEC 62304에서는 두 활동을 별개의 검증 활동으로 요구합니다.