Scaling Mobile Chaos Testing with AI-Driven Test Execution
이 논문은 LLM 기반의 테스트 실행과 서비스 수준의 결함 주입을 결합하여 대규모로 회복 탄력성을 자동으로 검증하는 AI 기반 모바일 카오스 테스팅 시스템을 제시하며, 이를 통해 Uber의 모바일 애플리케이션 전반에서 치명적인 아키텍처 리스크를 성공적으로 식별하고 디버깅 시간을 단축하였다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
인터넷을 수백만 명의 작은 디지털 메신저(앱)들이 메시지, 음식, 이동 수단을 전달하기 위해 분주히 움직이는 거대하고 북적이는 도시라고 상상해 보세요. 이 배후에는 모든 것이 원활하게 돌아가도록 유지하는 전력 발전소, 신호등, 창고와 같은 거대하고 보이지 않는 서비스의 웹이 존재합니다. 때때로 이 보이지 않는 부분 중 하나가 고장 나거나 느려질 때가 있습니다. 이를 "장애(failure)"라고 부릅니다. 소프트웨어 공학의 세계에는 **카오스 엔지니어링(Chaos Engineering)**이라는 관행이 있는데, 이는 기본적으로 시스템이 살아남을 수 있는지 확인하기 위해 의도적으로 무언가를 고장 내는 기술입니다. 이는 건물의 화재 대피 훈련과 같지만, 불 대신 정전 상황을 시뮬레이션하여 비상 조명이 제대로 작동하는지 확인하는 것과 같습니다.
하지만 모바일 앱(휴대전화의 앱)을 테스트하는 것은 까다롭습니다. 단순한 웹사이트와 달리, 휴대폰 앱은 수천 개의 서로 다른 도시, 언어, 사용자 습관을 다뤄야 합니다. 만약 모든 도시에서 앱이 고장 날 수 있는 모든 가능한 방식을 테스트하려 한다면, 수백만 개의 테스트 스크립트를 작성해야 할 것입니다. 이는 뉴욕 같은 도시의 모든 문을 일일이 확인하며 제대로 잠기는지 체크하려는 것과 같으며, 인간이 수동으로 하기에는 불가능한 일입니다. 이 논문은 인간 대신 인공지능(AI)을 사용하여 이 불가능한 수학적 문제를 해결합니다.
Uber(승객과 운전자를 연결하고 음식 배달을 돕는 기업)의 연구진은 두 가지 강력한 도구를 결합한 시스템을 구축했습니다. 첫 번째 도구는 DragonCrawl이라는 AI 로봇입니다. DragonCrawl을 아주 똑똑하고 호기심 많은 십 대 청소년이라고 생각하면 쉽습니다. 이 로봇은 휴대폰 화면을 보고, 그 화면이 무엇인지(예: "오, 저건 피자를 주문하는 버튼이네") 이해하며, 인간이 모든 버튼에 대해 구체적인 지침을 작성하지 않아도 다음에 무엇을 클릭할지 스스로 알아냅니다. 두 번째 도구는 uHavoc으로, 통제된 파괴자 역할을 하는 시스템입니다. 이는 백엔드(보이지 않는 서비스의 웹)의 일부를 의도적으로 고장 내어 휴대폰 앱이 어떻게 반응하는지 테스트합니다.
보통 이 두 도구는 별개로 작동했습니다. DragonCral은 모든 것이 완벽할 때 앱이 잘 작동하는지 테스트했고, uHavoc은 서버가 충돌을 견딜 수 있는지 테스트했습니다. 하지만 연구진은 이 둘을 결합하면 자동으로 실행되는 "카오스 테스팅" 기계를 만들 수 있다는 사실을 깨달았습니다. 그들은 DragonCrawl이 앱을 탐색하는 동안 uHavoc이 동시에 백그라운드에서 무언가를 고장 내도록 했습니다. 목표는 백엔드 서비스에 문제가 생겼을 때도 앱이 (예: 차량 호출처럼) 계속 작동할 수 있는지 확인하는 것이었습니다.
논문은 이 시스템을 어떻게 구축했는지, 그리고 시스템을 가동했을 때 어떤 일이 일어났는지 설명합니다. 그들은 단순히 추측한 것이 아니라, 2024년 1분기부터 시작하여 18만 번 이상 시스템을 실행했습니다. 그들은 Uber의 Rider, Driver, Eats 앱에 걸친 47개의 핵심 흐름(critical flows)(예: 차량 예약 또는 음식 주문)을 테스트했습니다. 결과는 인상적이었습니다. AI 기반 시스템은 인간이 놓쳤던 23개의 심각한 문제를 찾아냈습니다. 대부분은 작고 중요하지 않은 서비스의 장애가 크고 중요한 기능(예: 결제)을 마비시키는 경우였습니다. 실제로 발견된 문제 중 두 가지는 앱을 완전히 멈추게 하거나 충돌을 일으키는 문제였는데, 이는 실제 휴대폰에서만 잡아낼 수 있는 현상이었습니다.
그들의 발견 중 가장 멋진 부분 중 하나는 "책임 공방(blame game)"을 해결하는 방법입니다. 이전에는 테스트가 실패하면 선임 엔지니어들이 어떤 고장 난 서비스가 휴대폰 앱의 오작동을 유발했는지 파악하는 데 몇 시간이 걸렸습니다. 새로운 시스템은 AI를 사용하여 증거를 조사하고 범인을 추측합니다. 이 시스템은 상위 5개의 추측 범위 내에서 실제 원인을 88%의 확률로 정확히 맞혔습니다. 이로 인해 문제를 해결하는 데 걸리는 시간이 몇 시간에서 몇 분으로 단축되었습니다.
논문은 이것이 단순한 이론이 아님을 강조합니다. 그들은 실제 고객에게 피해를 주지 않고도 이 방식이 실세계에서 작동함을 증명했습니다. 그들은 백그라운드에서 문제가 발생하더라도 AI가 **99%**의 테스트를 통과할 정도로 매우 신뢰할 수 있다는 것을 발견했습니다. 이는 시스템이 매일 밤 실행되어, 앱이 재난 상황에 대비할 준비가 되었는지 지속적으로 점검할 만큼 견고하다는 것을 의미합니다. 저자들은 이 접근 방식이 "조합 폭발(combinatorial explosion)" 문제, 즉 테스트의 수가 너무 빠르게 늘어나 감당할 수 없게 되는 문제를 해결한다고 주장합니다. AI를 사용하여 실시간으로 화면에 적응함으로써, 수백만 개의 테스트 스크립트를 쓸 필요 없이 AI가 진행하면서 스스로 방법을 찾아낸 것입니다.
하지만 논문은 이 시스템이 할 수 없는 일에 대해서도 주의 깊게 언급합니다. 이 시스템은 인터넷 케이블 절단이나 Uber가 제어하지 않는 서비스(예: 제3자 지도 제공업체)의 장애를 테스트할 수는 없습니다. 또한, 회사가 자신들의 서비스를 적절히 라벨링하고 추적할 수 있는 체계를 갖추고 있어야 한다는 전제가 필요하며, 이는 사전에 많은 노력이 필요한 작업입니다. 그러나 이 시스템이 해결하는 문제들에 있어서, 논문은 이것이 거대한 도약이라고 제안합니다. 이는 모바일 카오스 테스팅을 드물고 비용이 많이 드는 수동 이벤트에서, 매일 밤 실행되는 자동화된 안전 점검으로 변화시켜, 사용자가 휴대폰에서 "주문"을 누를 때 앱이 인터넷의 어떤 돌발 상황에도 대응할 준비가 되어 있도록 보장합니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.