
스스로 테스트 코드를 작성하고 화면 변화에도 자가 치유(Self-healing)하는 AI QA 엔진 '토스닥터 V2'의 모든 것
매주 반복되는 앱 배포 스모크 테스트를 효율화하기 위해 토스가 고안해 낸 자가 치료형 QA 자동화 도구 '토스닥터 V2'의 동작 메커니즘을 파헤칩니다. 시나리오 작성만으로 코드가 자동 빌드되는 코드젠, 팝업 블로커를 치우는 자가 치유 기술, 그리고 실패 원인을 판별해 스스로 코드를 고치는 자동 복구 프로세스까지, 플랫폼 테스팅의 극적인 혁신 방안을 담았습니다.
수동 모바일 QA 업무의 자동화 한계를 극복하고 싶거나, 화면 UI 변경 시마다 깨지는 깨지기 쉬운(Flaky) 테스트 코드로 인해 소모적인 유지보수 업무에 고통받고 있는 플랫폼/DevOps 엔지니어와 QA 엔지니어에게 적극 추천합니다.
토스 앱은 매주 플랫폼별로 5~7개의 배포 후보 빌드가 나와 회원가입부터 송금까지 반복적인 수동 스모크 테스트를 진행해야 했습니다. 이를 해결하고자 도입한 토스닥터 V1 역시 화면 UI가 조금만 바뀌어도 테스트가 쉽게 깨지고, 실패 원인을 사람이 직접 분석해야 하는 유지보수 리소스 문제가 뒤따랐습니다.
토스닥터 V2는 Gherkin 문법의 BDD 시나리오를 바탕으로 LLM과 Appium MCP를 연결해 코드를 자동 생성하도록 개선했습니다. 또한 테스트 중 예기치 않은 UI 변경이나 팝업을 동적으로 인지 및 복구하는 스마트파인더(SmartFinder)와, 실패의 수동 복구 가능 여부를 판별해 스스로 코드를 수정하고 회고를 작성하는 자가 치유 및 자동 복구 메커니즘을 설계했습니다.
이러한 고도화된 자가 치유와 분석 프로세스를 통해 스모크 테스트의 유지보수 비용을 크게 아꼈으며, 이를 전사 리그레션 영역으로 확장한 '토스체커'를 구축했습니다. 결과적으로 테스터 3명이 꼬박 이틀 동안 매달려 수동으로 검증해야 했던 1,375개의 리그레션 테스트 케이스를 3주 만에 자동화하는 데 성공했습니다.
Trade-off
검증(then) 단계에 대해서는 유사도 기반 매칭(similar-match) 기능을 비활성화하여 눈속임 방식의 거짓 성공 연쇄 반응을 차단했으며, 화면 구조 전체(XML)를 매번 분석하는 데 드는 막대한 LLM 토큰 비용을 최소화하기 위해 단계별 요소 탐색 기법을 적용해야 했습니다.
모바일 앱 테스트 프레임워크인 Appium과 LLM 모델을 실시간으로 중계하여, AI가 직접 디바이스의 UI 상태를 조회하고 적절한 조작 명령을 내릴 수 있도록 돕는 통신 프로토콜 환경입니다.
소프트웨어 테스트 환경에서 타겟 엘리먼트의 속성(ID, XPath 등)이 변경되거나 예상치 못한 방해 요소(팝업 등)가 생겼을 때, 테스트가 실패로 중단되지 않고 동적으로 요소를 재식별하거나 블록을 우회하여 테스트를 완주하는 기술입니다.
사용자의 비즈니스 시나리오를 중심으로 테스트 케이스를 명세화하는 개발 방법론으로, 'Given(준비)-When(행동)-Then(결과)'의 자연어 구조(Gherkin 문법)를 활용해 누구나 코드가 검증하고자 하는 핵심 목적을 한눈에 파악할 수 있도록 해 줍니다.



