테스트 차량이 자동차 모드로 진입하고 종료되는 시점을 재설정 없이 제어하세요.
자동차 앱 테스트는 단순히 화면에 표시되는 내용만 테스트하는 것이 아닙니다. 전체적인 사용자 경험을 테스트하는 것입니다.
차량 내 투영 인터페이스를 통해 모바일 앱을 테스트할 때, 일반적인 모바일 테스트와는 구조적으로 다른 현상이 발생합니다. 기기가 투영 상태로 전환되는데, 이는 가상 헤드 유닛에 지속적으로 연결되어 차량 디스플레이 시스템에 화면 제어권을 넘겨주는 것을 의미합니다.
이로 인해 일반적인 모바일 자동화에는 없는 테스트 문제가 발생합니다.
대부분의 차량용 앱은 화면 투영을 시작하기 전에 사용자가 이미 로그인되어 있거나, 앱이 알려진 상태이거나, 특정 데이터 조건이 충족되어야 합니다. 하지만 기기가 세션 시작 시 바로 화면 투영 모드로 진입하는 경우, 이러한 설정을 미리 할 수 있는 시간이 없습니다.
그리고 자동화 환경에서 자주 발생하는 것처럼 테스트가 종료될 때 기기가 여전히 프로젝션 모드 상태인 경우, 다음 테스트는 해당 상태를 그대로 이어받습니다.
팀들이 사용해 온 임시방편적인 해결책들은 CI/CD 환경에서 확장성이 떨어집니다. 이러한 방법들은 수동 작업을 추가하고, 일관성 없는 동작을 유발하며, 유지 관리가 더 어려운 테스트 인프라를 구축하게 됩니다.
실제로 바뀌어야 할 것은 무엇인가
핵심 요구 사항은 간단합니다. 팀은 테스트 세션 전체에 걸쳐 프로젝션을 켜거나 끄는 것뿐만 아니라, 테스트 세션 내에서 프로젝션이 시작되고 끝나는 시점을 제어할 수 있어야 합니다.
이로써 두 가지가 가능해집니다.
투영 전 필수 조건. 일반적인 기기 환경에서 앱 재설정, 로그인 및 데이터 설정을 실행하세요. 그런 다음 앱이 올바른 상태가 되면 프로젝션을 시작하세요.
화면 투영 후 기기 상태를 정리합니다. 테스트 종료 시점에 프로젝션을 명시적으로 중지하여, 풀에 있는 모든 기기에서 다음 테스트가 예측 가능한 기준선에서 시작될 수 있도록 합니다.
이것들은 고급 요구 사항이 아닙니다. 모든 CI/CD 파이프라인이 다른 유형의 테스트에 대해 가정하는 것과 동일한 사항입니다. 문제는 자동차 예측 도구가 이러한 요구 사항을 지원하지 않았다는 것입니다.
그 결과, 이제 Appium과 호환되는 두 가지 명령어인 automotive.start와 automotive.stop을 도입하여 팀이 실행 중인 테스트 세션 내 어느 시점에서든 Android Auto 및 iOS CarPlay 프로젝션 상태를 프로그래밍 방식으로 제어할 수 있도록 했습니다.
명령어의 기능
`automotive.start`와 `automotive.stop`은 Appium 테스트 스크립트 내에서 직접 호출됩니다. `automotive.start`는 연결된 차량 내 디스플레이에 프로젝션을 활성화하고, `automotive.stop`은 프로젝션 상태를 종료하여 세션을 표준 장치 컨텍스트로 반환합니다. 두 명령 모두 Android Auto 및 iOS CarPlay에서 지원됩니다.
이제 테스트는 다음과 같이 보일 수 있습니다.
- 기기에서 앱을 엽니다.
- 로그인하고, 데이터 조건을 설정하고, 적절한 화면으로 이동하세요.
- 시작 프로젝션(automotive.start)
- 차량 내 화면에서 자동화된 단계를 실행하세요
- 정지 투영(automotive.stop)
- 자동차 이외의 행위를 검증합니다
다음은 이를 프로그램적으로 구현했을 때의 모습입니다.
# Pre-condition: launch app in standard device context
driver.activate_app('com.example.automotiveapp')
login(driver) # run login flow normally
navigate_to_map_screen(driver) # set expected app state
# Enter automotive projection (Android Auto / CarPlay)
driver.execute_script('automotive.start')
# Interact with in-car display
driver.find_element(By.ID, 'com.example:id/nav_button').click()
assert_route_displayed(driver)
# Exit projection — device returns to standard context
driver.execute_script('automotive.stop')
# Continue validating non-automotive behavior
assert_app_state_preserved(driver)
각 프로젝션 세그먼트는 자체 비디오를 생성하여 테스트 보고서 첨부 파일로 업로드합니다. 단일 테스트에서 여러 시작/정지 주기를 지원하며, 각 주기마다 별도의 녹화가 이루어집니다.
그 결과, 특별한 장치 처리, 격리된 환경 또는 실행 간 수동 개입 없이도 표준 CI/CD 파이프라인에 적합한 자동차 테스트 범위를 확보할 수 있습니다.
이것이 가능하게 하는 것
전제 조건은 자유입니다. 프로젝션 전에 필요한 모든 앱 설정은 이제 별도의 해결 방법 없이 동일 세션 내에서 프로젝션 전에 완료할 수 있습니다.
CI/CD 신뢰성. 각 테스트는 자체적인 프로젝션 상태를 관리합니다. 이전 테스트에서 남겨진 내용에 대한 종속성이 없습니다. 공유 디바이스 풀과 클라우드 디바이스 풀 모두에서 일관되게 작동합니다.
세그먼트별 비디오. 각 시작/정지 주기마다 별도의 비디오 녹화 파일이 생성되어 테스트 보고서 첨부 파일로 업로드됩니다. 테스트에서 여러 번의 프로젝션 주기가 실행되는 경우, 각 주기마다 검토를 위한 별도의 녹화 파일이 생성됩니다.
다중 주기 세션. 하나의 테스트에서 자동차 투영 모드를 여러 번 진입하고 종료할 수 있어 컨텍스트 전환 시 동작을 테스트하는 데 유용합니다.
Android Auto와 iOS CarPlay 모두 지원됩니다. 단일 Appium 테스트 스크립트를 사용하여 두 플랫폼에서 동일한 방식으로 명령어를 실행할 수 있습니다.
이미 커넥티드 카 애플리케이션 자동화 테스트에 투자하고 있는 팀에게 automotive.start와 automotive.stop은 마지막 남은 격차를 해소해 줍니다. 이전에는 테스트 외부에서 관리되었던 프로젝션 상태가 이제는 파이프라인의 다른 모든 요소처럼 테스트 내부에서 관리됩니다.
매출을 극대화할 자동차 테스트 살펴보기?