임베디드 소프트웨어는 ‘ 실시간 보증 , 자원 부족 , 런 - 타임 테스트 , 운용 환경 보존 ’ 과 같이 테스트 제약이 심한 환경에 배치되기 때문에 테스트가 쉽지 않습니다 . 본 논문에서는 운영체제가 프로세스 제어를 목적으로 관리하는 프로세스 제어 블록을 해킹함으로써 테스트 정보를 수집하는 동적 임베디드 소프트웨어 테스트 방안을 제안합니다 . 현재 ‘ 메모리 , 성능 , 프로세스 간 통신 ‘ 을 테스트하는 자동화 도구인 AMOS 를 개발하였고 , AMOS 는 자동차 산업의 카 인포테인먼트 시스템의 실차 테스트에 적용되어 품질 향상과 개발 비용 절감의 효과를 보이고 있습니다 .
소프트웨어 테스트는 개발 방법론이나 제품의 특성에 따라 개발 초기부터 개발 단계의 목적과 테스트 환경에 맞추어 차별화된 방법으로 이루어져야 합니다 . 테스트는 개발 산출물에 대한 리뷰 및 소스 코드 분석과 같은 정적 테스트 방법과 소스 코드를 실행하면서 하는 동적 테스트 방법으로 구분합니다 . 정적 테스트와 동적 테스트는 서로 보완적이어서 어느 하나가 다른 것을 대체할 수 없습니다 [Broekman et al., 2003]. 동적 테스트는 테스트 대상의 범위에 따라 단위 , 통합 , 시스템 테스트로 세분화되며 , 소스 커버리지가 95% 이상 되도록 단위 테스트를 면밀히 해도 통합 및 시스템 테스트를 피할 수는 없습니다 . 임베디드 소프트웨어의 경우 이뮬레이터 , 레퍼런스 보드 , 실제 타겟의 테스트 수행 환경에 따라서도 그 방법이 차이가 납니다 .
일반적으로 임베디드 시스템은 제한된 자원으로 최적의 성능을 위하여 제작되기 때문에 시스템을 구성하는 하드웨어와 소프트웨어들의 결합력이 매우 높습니다 . 높은 결합력 때문에 일부 소프트웨어만 독립적으로 테스트하기 힘들며 , 시스템 기능을 부분적으로 확인하기 위한 단위 , 통합 테스트가 쉽지 않습니다 . 특히 단위 , 통합 레벨의 동적 테스트는 테스트 드라이버나 상대 컴포넌트를 대신할 시뮬레이션 장비를 갖추어야 하는 경제적 어려움도 있습니다 . 따라서 많은 산업현장에선 소스코드 분석과 같은 정적 테스트 후 , 단위 및 통합 테스트를 생략하거나 비전문적으로 테스트를 수행한 후 , 실제 타겟에서 전체 시스템에 대한 동적 테스트에 집중합니다 [SEC, 2004].
문제는 최종 테스트 단계인 타겟에서의 동적 테스트에서 발견된 결함은 그 원인과 위치를 파악하는 데 수 많은 시간과 비용이 소모된다는 점입니다 . 본 논문에서는 시스템이 타겟에 배치되어 실제 운용되는 환경에서 탑재된 모든 소프트웨어 및 하드웨어 컴포넌트들이 시스템의 품질 요구사항에 맞춰 올바르게 동작하는 가에 대한 동적 테스트와 동시에 결함의 원인과 위치 파악을 자동화한 동적 임베디드 소프트웨어 테스트 방안과 이를 구현한 AMOS 도구를 제안하고 이를 산업체 적용한 결과 및 경제적 효과를 소개합니다 .