2026.08.02
인턴 시작!

이번주부터 인턴을 시작하게 되었다!
앞으로 인턴을 하며 적어도 2주에 한번씩 회고를 작성해보려고 한다.
회고의 목적은 "기록"이다. 기록하지 않으면 다 흘러가버릴 정보와 기억들이다 ..
이번주는 개발을 위한 세팅과 인수인계를 하며 시간을 보냈다. (기존 코드를 보면서 이런 구조로 되어있구나~ 이런 흐름으로 진행되는구나~를 이해하는 시간이었다.)
부서에서 진행중인 업무는 한마디로 검증 개발이다. 그중에서도 차량 소프트웨어 검증 개발을 다룬다.
제품이나 소프트웨어가 기획서의 요구 사항에 맞게 올바르게 만들어졌는지, 그리고 사용자의 실제 목적을 충족하는지 체계적으로 테스트하고 확인하는 과정이다.
그렇다면, 검증과 확인의 주요 차이는 무엇일까?
검증(Verification)은 개발자 관점, 사양서와 설계대로 만들어졌는지 확인하는 과정을 말하며,
확인(Validation)은 사용자 관점, 실제 사용자의 요구와 목적에 부합하는지 테스트하는 과정이라고 말할 수 있다.
QA나 Tester와 비슷한 업무라고 생각할 수 있지만, 직접 경험해보니 실제로는 개발적인 요소가 훨씬 많이 요구되는 직무라는 것을 느꼈다.
이번주에 관련해서 배운 것과 공부한 개념들을 정리해보려고 한다.
차량의 VHAL(Vehicle HAL) 프로퍼티가 명세서대로 정확하게 구현되어 있는지 검증하는 테스트 코드이다.
Android Automotive OS의 약자로, 자동차에 내장되는 인포테인먼트 플랫폼이다. (쉽게 말하면 차량 소프트웨어)
AAOS는 several Layer로 이루어져 있고, 각각의 레이어는 고유의 역할과 요소를 가진다.
Android Automotive 환경에서는 차량 내부 통신 인터페이스인 VHAL(Vehicle HAL)과 상위 IVI 애플리케이션 사이를 연결하는 서비스가 필수적이다.
"차가 없어도 차가 있는 것처럼 CAN 통신을 흉내 내는 도구"라고 생각하면 된다.
예를 들면,
CAN Simulator가 "차량 속도 = 80km/h" 메시지를 전송
테스트 프로그램이 해당 메시지를 수신
시스템이 정상적으로 속도를 표시하거나 특정 API를 호출하는지 검증
이런 식으로 입력(CAN 메시지) → 시스템 동작 → 결과 검증을 자동화하는 데 많이 사용할 수 있다.
로그 레벨은 시스템에서 로그의 중요도를 구분하기 위한 기준이다.
ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF
이중 운영업무에서 자주 볼 수 있는 로그는 DEBUG, INFO, WARN, ERROR이다.

https://www.tutorialspoint.com/log4j/log4j_logging_levels.htm
면접 볼 때, 면접관님이 이 업무에서 중요한건 무엇보다 꼼꼼함, 커뮤니케이션 능력이라고 말씀해 주셨다.
업무는 명세서를 기반으로 테스트 코드를 작성하는 것에서 시작된다. 이후 오류가 발생하면 수만 줄에 달하는 로그를 직접 확인하며 분석하고 원인을 찾아야 한다. 결국 작은 단서 하나도 놓치지 않는 꼼꼼함이 검증 개발에서 가장 중요한 기본기가 된다.
평소 나는 다른 사람의 피드백을 잘 받아들이는 편이라고 생각했다.
하지만 모든 의견을 그대로 수용하기보다는, 내 설계의 근거를 논리적으로 설명하고 필요한 부분은 설득하는 능력 역시 중요하다는 점을 배웠다. (무조건 고집을 부리는 것이 아니라, 근거 있는 판단을 할 수 있어야 한다는 의미이다)
또한 내가 짠 코드에 대해 정확하게 왜 이렇게 짰는지, 어떻게 설계한 건지 이유를 정확하게 설명할 수 있어야 한다. (물론 일반적인 소프트웨어 개발을 할 때도 당연한 부분이다!)

그리고 첫주차라 그런지 출근은 정말 힘든거구나.. 를 느꼈다 ...ㅎㅎ
아무튼 회사에서 다음주에 더 열심히 배워야 할 것 같다 ... 🙂