카피바라와 생성형 AI를 활용한 자연어 브라우저 테스트 가능성 탐구

Capybara+生成AIでどこまで本当に自然言語のテストを書けるか? / Yusuke Iwaki - Kaigi on Rails 2024

3줄 요약

  • 카피바라와 생성형 AI를 결합하여 자연어로 브라우저 테스트를 작성하고 실행하는 새로운 접근 방식을 제시합니다.
  • 기존 자동화 테스트의 유지보수 및 유연성 부족 문제를 해결하기 위한 시도입니다.
  • AI가 브라우저 상태를 인지하고 동적으로 행동을 결정하는 모델을 통해 구현 가능성을 확인했습니다.

기존 브라우저 자동화 테스트(e2e 테스트)는 작성 후 유지보수가 어렵고 UI 변경에 취약하며, 인간의 유연한 판단 능력이 부족하다는 한계가 있습니다. 테스트 시나리오를 기계적인 스텝으로 변환하는 과정에서 정보 손실이 발생하고, 요소 탐색에 사용되는 CSS 셀렉터 등은 변경에 쉽게 깨집니다. 본 발표는 이러한 문제를 해결하기 위해 생성형 AI를 활용하여 자연어로 테스트 시나리오를 작성하고 실행하는 새로운 접근 방식을 제안하며 그 가능성을 탐구합니다.

기존 자연어 기반 테스트 도구는 단순 변환 방식이어서 웹 페이지 구조를 알지 못해 실패할 수 있습니다. 생성형 AI 또한 마찬가지로, 단순히 자연어 명령만으로는 웹 페이지 요소를 정확히 식별하고 조작하기 어렵습니다. 이를 극복하기 위해 발표자는 브라우저 화면 상태(스크린샷, DOM 정보)를 생성형 AI에 입력하고, AI가 이를 분석하여 다음 행동을 지시하면 브라우저가 해당 행동을 실행한 후 다시 상태를 AI에 전달하는 동적인 루프 구조를 제안합니다. 실험 결과, AI는 이미지 정보만으로는 정확한 클릭 좌표를 특정하기 어려웠으나, DOM 정보(client rect)를 함께 제공했을 때 올바른 위치를 식별할 수 있음을 확인했습니다. 이러한 상호작용을 구현하기 위해 커스텀 카피바라 드라이버를 개발했습니다. 이 드라이버는 자연어 명령을 AI 에이전트에 전달하고, AI의 응답(Ruby 코드)을 샌드박스 환경에서 실행하며, 브라우저 조작 및 화면 캡처 결과를 다시 AI에 전달하는 역할을 수행합니다. 데모를 통해 자연어로 작성된 테스트 시나리오가 AI의 판단에 따라 동적으로 실행되는 과정을 보여주었으며, 일부 성공 사례와 함께 아직 개선이 필요한 부분(예: 리스트 항목 식별)도 있음을 확인했습니다. 특히, AI가 실행 중 발생하는 오류(예: 잘못된 요소 클릭)를 인지하고 스스로 수정하려는 시도를 보이는 등 AI의 능동적인 활용 가능성을 보여주었습니다.

카피바라와 생성형 AI, 그리고 브라우저 상태 피드백 루프를 결합함으로써 CSS 셀렉터 없이도 자연어에 가까운 입력으로 테스트를 작성하고, 실행 중 발생하는 오류를 스스로 수정하는 등 AI의 능동적인 활용 가능성을 확인했습니다. 이 접근 방식은 기존 e2e 테스트의 작성 및 유지보수 부담을 줄일 잠재력을 가지고 있습니다. 비록 현재는 동작 정확도 등 실용화 단계에는 미치지 못하지만, 향후 추가적인 개선을 통해 더욱 견고하고 유연한 자동화 테스트 환경을 구축할 수 있을 것으로 기대됩니다. 발표자는 이러한 브라우저 자동화 및 카피바라 드라이버 개발 경험을 바탕으로 OSS 활동을 지속하고 있으며, 관련 피드백을 환영합니다.