본문 바로가기

인공지능

단 6주 만에 끝낸 테스트 대이동: Airbnb가 LLM으로 이룬 자동화의 마법

728x90
반응형

“이 테스트 코드, 언제 다 바꾸지…?”
Enzyme에서 React Testing Library(RTL)로 테스트 프레임워크를 바꾸려던 Airbnb 개발자들도 같은 고민을 했습니다. 그 수가 무려 3,500개. 사람이 일일이 수정한다면 1년 반은 걸릴 거라 예상됐죠.

하지만 결과는 놀라웠습니다. LLM(Large Language Model)과 자동화 파이프라인을 활용해 단 6주 만에 마이그레이션을 완료한 겁니다.
자동화 첫 실행만으로 75% 전환 성공, 최종적으로 97% 자동화 완료. 남은 3%는 최소한의 수동 수정으로 마무리했습니다.

이번 글에서는 Airbnb가 어떻게 대규모 테스트 코드를 성공적으로 마이그레이션했는지, 그 전략과 구조를 자세히 살펴봅니다.

반응형

✅ 왜 Enzyme에서 RTL로 바꿔야 했을까?

Airbnb는 2020년부터 신규 테스트에 React Testing Library(RTL)를 도입했습니다. 이유는 명확합니다.

  • Enzyme은 내부 구현에 의존해 테스트를 작성하는 방식이 주를 이뤘습니다.
  • 하지만 현대 React는 컴포넌트 외부에서 사용자 관점으로 테스트하는 방식을 권장합니다.
  • Enzyme의 접근 방식은 React 철학과 어긋나며, 유지보수성도 떨어졌습니다.

즉, 더 이상 Enzyme은 미래지향적인 선택이 아니었던 거죠.
하지만 기존 테스트를 단순히 없애버리면 테스트 커버리지가 비는 문제가 생깁니다.
**‘테스트의 의도와 커버리지를 유지하면서 옮기자’**가 Airbnb의 목표였습니다.


⚙️ LLM 기반 마이그레이션 전략, 이렇게 작동했다

1. 단계별 자동 유효성 검사

Airbnb는 마이그레이션 과정을 하나의 파이프라인으로 만들었습니다.
파일 하나하나가 다음 단계를 통과할 때까지 자동으로 처리되죠.

  • 예시 단계:
    1. Enzyme 코드 제거
    2. Jest 문법 정리
    3. Lint 및 TypeScript 통과
    4. 완료 마킹

각 단계에서 실패하면 LLM이 그 원인을 분석하고 수정합니다. 이 과정을 수백 개 파일에 병렬 적용했습니다. 단순한 파일은 빠르게, 복잡한 파일은 천천히 진화하듯 해결됐죠.


2. 리트라이 루프와 동적 피드백

단계 중 에러가 발생하면 최대 시도 횟수까지 자동 재시도합니다.
각 시도는 단순 반복이 아닙니다. LLM에게 다음과 같은 정보를 다시 제공하죠:

  • 에러 메시지
  • 이전 시도에서 수정된 코드

이 과정을 통해 대부분의 파일은 10회 이내에 자동 해결되었습니다.


3. 복잡한 파일은 ‘프롬프트 컨텍스트 확장’으로 해결

어떤 파일은 반복 시도만으로는 해결이 안 됩니다.
Airbnb는 이런 파일에 대해 프롬프트 컨텍스트를 대폭 확장했습니다.
최대 100,000 토큰 분량의 데이터를 넣어 문제를 해결했죠.

포함된 정보 예시:

  • 해당 컴포넌트의 원본 코드
  • 기존 Enzyme 테스트 코드
  • 비슷한 테스트 예시 (Few-shot Prompting)
  • 팀 내에서 자주 사용하는 스타일/패턴

핵심은 프롬프트 문장 그 자체보다, 어떤 정보를 포함시키느냐에 달려 있었습니다.


4. 97%까지 성공률 끌어올린 개선 프로세스

초기 자동화로 전체 파일 중 75%는 한 번에 전환됐습니다.
하지만 900개 파일이 실패 상태로 남았죠.

Airbnb는 이 파일들을 다음과 같이 접근했습니다:

  1. 실패 원인 수집
  2. 대표 실패 샘플(5~10개) 선정
  3. 프롬프트 및 자동화 스크립트 개선
  4. 다시 전체 적용

이 과정을 단 4일간 반복하며, 성공률을 97%까지 끌어올렸습니다.

나머지 3%는 자동 리팩터링 결과를 바탕으로 사람이 살짝 손보고 마무리했습니다.
총 마이그레이션 소요 기간? 단 6주.


📊 결과 요약 – 숫자가 말해주는 자동화의 위력

지표 결과
전체 테스트 파일 수 약 3,500개
최초 자동화 성공률 75% (4시간 내)
최종 자동화 성공률 97%
전체 완료 기간 6주
수작업 필요성 3% 이하
테스트 의도 및 커버리지 100% 유지

Airbnb는 단지 파일을 바꾼 게 아니라, 기존 테스트의 의도와 커버리지를 유지한 채 자동화를 완성했습니다.
이는 단순한 변환이 아니라 지능형 마이그레이션이라 부를 만합니다.

728x90

우리도 할 수 있을까?

Airbnb 사례는 단순한 대기업 성공기가 아닙니다.
잘 설계된 자동화 파이프라인과 LLM의 조합이 있다면, 우리 팀도 비슷한 도전을 해볼 수 있습니다.

특히 다음과 같은 팀에게는 매우 유용한 인사이트입니다:

  • 레거시 테스트 프레임워크에서 벗어나려는 팀
  • 반복적이고 단조로운 리팩터링 작업이 부담스러운 팀
  • LLM을 실제 개발 프로세스에 녹이고 싶은 팀

LLM을 그저 ‘멋진 도구’로 바라보는 것을 넘어서, 실전 문제 해결의 무기로 전환하는 것, 그게 이 사례의 진짜 교훈입니다.

https://medium.com/airbnb-engineering/accelerating-large-scale-test-migration-with-llms-9565c208023b

 

Accelerating Large-Scale Test Migration with LLMs

How Airbnb migrated nearly 3.5K Enzyme test files to React Testing Library in just 6 weeks using automation and LLMs

medium.com

728x90
반응형