자동차 산업에서의 소프트웨어 테스팅 자동화: 요구 사항과 베스트 프랙티스

이 포스팅에서는 자동차 소프트웨어 산업 전망, 최근 자동차 소프트웨어의 발전, 자동차 소프트웨어 테스트와 관련된 법적 규제에 대해 알아보고, GUI가 포함된 제품을 보유한 기업들이 자동차 소프트웨어 테스팅을 활용하여 경쟁력을 유지할 수 있는 방법에 대해 설명합니다.

자동차 소프트웨어 산업 전망

자동차 소프트웨어 시장은 2030년까지 급성장할 것으로 예상되며, 산업 규모가 310억 달러(2019)에서 약 800억 달러로 증가할 것으로 전망됩니다. 이는 시장 전체에서 9% 이상의 연평균 성장률을 의미하며, 특히 인포테인먼트, 커넥티비티, 보안 및 커넥티드 서비스의 경우 9.1%의 연평균 성장률을 기록할 것으로 예상됩니다.

이는 다른 많은 산업과 마찬가지로 자동차 산업도 전례 없는 수준의 혁신과 기술 발전, 그리고 그에 따른 경쟁을 경험하고 있다는 것을 의미합니다. 그리고 자동차 제조업체와 부품 제조업체가 수익성을 유지하고 업계 선두를 유지하기 위해 경쟁하는 동안, 백그라운드에서는 코드 한 줄을 둘러싼 싸움이 벌어지고 있습니다.

자동차 테스트 한 눈에 보기

대부분의 사람들은 자동차 테스트를 생각할 때 충돌 테스트, 속도 테스트 및 기타 기계적 개입의 이미지를 떠올립니다. 하지만 실제로 대부분의 자동차 테스트는 자동차 부품이 조립되기 훨씬 전에 이루어집니다.

자동차 한 대에는 약 30,000개의 부품이 사용되며, 수십 개의 OEM(주문자 상표 부착 생산업체)이 함께 협력하여 자동차를 제작하기 위해 부품을 공급합니다. 하드웨어든 소프트웨어든 각 부품은 자동차가 최종 조립되기 전에 수십만 번의 테스트를 거치고, 도로에 출시되기 전에는 그보다 훨씬 더 많은 테스트를 거칩니다.

자동차 소프트웨어 테스팅

오늘날 도로를 달리는 자동차는 일반 세단부터 최고급 성능의 차량까지 모두 소프트웨어에 의해 구동됩니다. 2022년에 제작된 차량의 경우 최대 150개의 전자 제어 장치가 설치될 수 있습니다.

전자 제어 장치(ECU)는 자동차의 특정 기능을 제어하는 소형 컴퓨터라고 할 수 있습니다. ECU 이전에는 기계 시스템이 점화 타이밍, 연료, 공기, 엔진 회전을 사용하여 기능을 완성했었지만, 이제는 필요한 모든 것이 ECU 내부의 칩에 프로그래밍되어 있습니다.

자동차에서 찾을 수 있는 ECU의 예로는 엔진 제어 모듈(ECM) 및 브레이크 제어 모듈(BCM)과 같은 ‘Critical-function ECU’, 또는 자동차 내부의 내비게이션 정보 시스템이나 도어 잠금 및 잠금 해제, 창문 열기 또는 에어컨 제어와 같은 기능을 제어하는 일반 전자 모듈(GEM)과 같은 ‘Non-critical ECU’가 있습니다.

각 전자 제어 장치는 기능적으로 작은 컴퓨터와 같다는 점을 고려할 때, 기능성, 사용성 및 안전성을 보장하기 위해서는 반드시 소프트웨어 테스트가 엄격하게 수행되어야 합니다.

현실적으로 전통적인 자동차 테스트는 비용과 시간이 많이 들고 여러 번 반복하기가 쉽지 않습니다. 물론, 감사하게도 이 문제에 답이 되어줄 기술이 있습니다. 바로 Hardware-in-the-loop (HIL) Software-in-the-Loop (SIL) 테스팅입니다.

Software-in-the-Loop (SIL) 테스팅

Software-in-the-Loop 테스트는 시뮬레이션에서 소프트웨어의 코드를 테스트하고 검증하여 버그를 제거하고 코드 품질을 개선하며 빌드 시간을 크게 단축합니다.

자동차 브랜드와 OEM이 경쟁 우위를 확보하기 위해 혁신을 거듭하는 가운데, 진정한 승부는 코드 몇 줄에서 결정됩니다. 제품 유형(안전성, 대시보드, 내비게이션 시스템 등)에 관계없이 소프트웨어는 차량에 사용하도록 승인받기 전에 광범위한 테스트를 거쳐야 합니다.

SIL테스팅의 이점은 다음과 같습니다:

  • 최종 빌드를 기다리지 않고 프로그램의 각 세그먼트가 완료될 때마다 주기적으로 코드를 테스트할 수 있습니다.
  • 테스트를 자동화하고 동시에 실행할 수 있습니다.
  • 테스트 결과를 공유할 수 있고 분석하기 쉽습니다.
  • 소프트웨어와 하드웨어 개발을 분리하므로 소프트웨어 제조업체는 하드웨어 업계의 속도를 뛰어넘어 혁신을 지속할 수 있습니다.
  • 전용 테스트 벤치가 필요하지 않습니다. (아래에서 설명할 HIL 테스팅 역시 마찬가지)
  • SIL 테스팅은 쉽게 확장 가능하고 반복 가능하며 수동 테스트보다 빠릅니다.

Hardware-in-the-Loop (HIL) 테스팅

HIL 테스팅은 말 그대로 차량의 하드웨어와 관련된 테스트 및 검증 방법입니다. 이러한 시뮬레이터는 실제 ECU를 테스트 시스템에 연결하기 전에 철저한 테스트를 거치는 어느 정도 최종 제품과 흡사한 모델입니다.

HIL 테스트 벤치는 카메라 및 레이더와 같은 장치에서 입력된 데이터를 사용하여 실시간으로 수학적 모델을 실행함으로써 실제 자동차 엔진 동역학을 에뮬레이션합니다. 일반적으로 HIL 테스트는 SIL 테스트보다 비용과 시간이 더 많이 소요되므로 SIL 테스트 이후에 수행됩니다.

자동차 소프트웨어 테스트는 단순히 도로 주행 안전 이유 외에도 사이버 보안, OEM의 신뢰성, 자동차 브랜드의 건전성 및 이미지 등의 이유로도 중요하게 작용합니다.

자동차 소프트웨어 테스트와 관련한 법적 규제 사항

자동차 하드웨어 및 소프트웨어 구성 요소에 대한 테스트 관련 규정은 매우 엄격합니다.

ISO 26262: 도로 주행용 차량 - 기능 안전

자동차 안전에 대한 주요 법적 요건인 ISO 26262: 도로 주행용 차량 - 기능 안전은 대량 생산되는 승용차에 적용되며 버스, 트럭, 트레일러 및 세미 트레일러의 E/E 시스템에 대한 지침을 제공합니다.

ISO 21434: 도로 주행용 차량 - 사이버 보안 엔지니어링

ISO 21434 ISO 26262를 기반으로 하는 후속 표준이지만, 자동차 소프트웨어 및 하위 시스템의 설계 및 개발에서 사이버 보안에 특별히 초점을 맞추고 있습니다. 이 표준에서 다루는 주제에는 위험 관리 및 완화, 위험 평가, 지속적인 보안, 보안 관리 등이 포함됩니다.

AUTOSAR

AUTOSAR는 AUTomotive Open System ARchitecture의 약자로, "자동차 제조업체, 공급업체, 서비스 제공업체 및 자동차 전자, 반도체 및 소프트웨어 업계의 글로벌 개발 파트너십"을 의미합니다. AUTOSAR의 목표는 자동차 ECU를 위한 전 세계적으로 개방적이고 표준화된 소프트웨어 아키텍처를 만드는 것입니다. OEM과 제조업체가 AUTOSAR 아키텍처에 참여하거나 이를 준수할 의무는 없지만, 세계 유수의 많은 기업이 참여하고 있습니다.

MISRA 

MISRA는 공급업체, 엔지니어링 컨설팅 업체, 정적 코드 분석가 및 OEM 제조업체로 구성된 자동차 안전 단체입니다. 1998년에 처음 발표된 MISRA의 코딩 가이드라인은 이제 C C++ 코딩 언어를 기반으로 구축된 시스템까지 다루고 있습니다. MISRA 역시 의무적으로 따라야 하는 표준은 아니지만, 안전 및 보안이 중요한 시스템을 개발할 때 안전하고 보안성이 뛰어나며 이식이 쉬운 코드 개발을 용이하게 하기 때문에 많은 산업 분야에서 널리 채택되고 있습니다.

자동차 소프트웨어 테스트를 수행하고자 하는 기업들을 위한 베스트 프랙티스

차량 내 제품의 기능(안전을 위한 기능, 기계적 기능, 미적 기능)은 필요한 안전 테스트 수준에 영향을 미치지만, 소프트웨어 테스트의 베스트 프랙티스는 제품에 관계없이 일관되게 적용됩니다.

케이스별로 고려해야 할 사항은 작업에 적합한 도구가 무엇인지 판단하는 것입니다. 예를 들어, 제동 시스템을 생산하는 OEM은 복잡한 HIL 테스트가 필요할 수 있지만 인포테인먼트 또는 내비게이션 시스템은 SIL 테스트만 필요할 수 있습니다.

Automated GUI testing for automotive products 자동차 제품을 위한 자동화된 GUI 테스트

Squish는 데스크톱, 모바일, 임베디드 기기 및 웹 애플리케이션을 위한 자동화된 크로스 플랫폼 GUI 검증 도구입니다. 자동차 테스트에서는 네비게이션 시스템, 터치 패널, 대시보드 및 전면 패널 테스트에 Squish가 널리 사용되고 있습니다.

Squish가 자동차 GUI 테스트에 적합한 이유

사용자 인터페이스는 점점 더 애니메이션화되고 있으며 그래픽은 놀라운 수준의 애니메이션으로 빠르게 움직입니다. 이렇게 모든 것이 끊임없이 변화하고 있는 상황에서 애플리케이션의 상태와 테스트가 잘 동기화되도록 해야 하기 때문에 GUI 관점에서 테스트하는 것은 쉽지 않습니다.

애니메이션을 사람으로 생각해본다면, 테스터는 수동으로 스크린샷을 찍은 다음, 표시기가 올바른 위치에 올바른 색상으로 보여지고 있는지, 또 올바른 속도로 애니메이션이 적용되고 있는지(움직이도록 의도된 경우) 비교해야 합니다.

Squish의 목표는 엔드유저의 행동을 모방하는 것입니다. Squish는 엔드유저가 클릭, 드래그, 드롭, 터치하는 방식 그대로 애플리케이션과 자동으로 상호작용합니다. 또한 Squish는 스크린샷을 찍어 애플리케이션의 현재 상태와 디자인 및 개발팀이 의도한 대로 이미지가 렌더링되는지 확인할 수 있습니다.

Squish는 여러 검증 지점을 사용하여 시각적 모양이 예상과 일치하는지 확인하는 이미지 기반 테스트와 같은 위험을 완화하는 기능을 제공합니다. 또한 텍스트와 숫자가 화면에 의도한 대로 표시되는지 확인하는 데 도움이 되는 광학 문자 인식(OCR) 엔진도 지원합니다.

 

Squish에 대해 궁금하신가요? 여기를 클릭하여 무료 평가판을 다운로드하세요. 

자동차 산업에서의 Qt 알아보기