“이 테스트 코드, 언제 다 바꾸지…?”
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는 마이그레이션 과정을 하나의 파이프라인으로 만들었습니다.
파일 하나하나가 다음 단계를 통과할 때까지 자동으로 처리되죠.
- 예시 단계:
- Enzyme 코드 제거
- Jest 문법 정리
- Lint 및 TypeScript 통과
- 완료 마킹
각 단계에서 실패하면 LLM이 그 원인을 분석하고 수정합니다. 이 과정을 수백 개 파일에 병렬 적용했습니다. 단순한 파일은 빠르게, 복잡한 파일은 천천히 진화하듯 해결됐죠.
2. 리트라이 루프와 동적 피드백
단계 중 에러가 발생하면 최대 시도 횟수까지 자동 재시도합니다.
각 시도는 단순 반복이 아닙니다. LLM에게 다음과 같은 정보를 다시 제공하죠:
- 에러 메시지
- 이전 시도에서 수정된 코드
이 과정을 통해 대부분의 파일은 10회 이내에 자동 해결되었습니다.
3. 복잡한 파일은 ‘프롬프트 컨텍스트 확장’으로 해결
어떤 파일은 반복 시도만으로는 해결이 안 됩니다.
Airbnb는 이런 파일에 대해 프롬프트 컨텍스트를 대폭 확장했습니다.
최대 100,000 토큰 분량의 데이터를 넣어 문제를 해결했죠.
포함된 정보 예시:
- 해당 컴포넌트의 원본 코드
- 기존 Enzyme 테스트 코드
- 비슷한 테스트 예시 (Few-shot Prompting)
- 팀 내에서 자주 사용하는 스타일/패턴
핵심은 프롬프트 문장 그 자체보다, 어떤 정보를 포함시키느냐에 달려 있었습니다.
4. 97%까지 성공률 끌어올린 개선 프로세스
초기 자동화로 전체 파일 중 75%는 한 번에 전환됐습니다.
하지만 900개 파일이 실패 상태로 남았죠.
Airbnb는 이 파일들을 다음과 같이 접근했습니다:
- 실패 원인 수집
- 대표 실패 샘플(5~10개) 선정
- 프롬프트 및 자동화 스크립트 개선
- 다시 전체 적용
이 과정을 단 4일간 반복하며, 성공률을 97%까지 끌어올렸습니다.
나머지 3%는 자동 리팩터링 결과를 바탕으로 사람이 살짝 손보고 마무리했습니다.
총 마이그레이션 소요 기간? 단 6주.
📊 결과 요약 – 숫자가 말해주는 자동화의 위력
지표 | 결과 |
전체 테스트 파일 수 | 약 3,500개 |
최초 자동화 성공률 | 75% (4시간 내) |
최종 자동화 성공률 | 97% |
전체 완료 기간 | 6주 |
수작업 필요성 | 3% 이하 |
테스트 의도 및 커버리지 | 100% 유지 |
Airbnb는 단지 파일을 바꾼 게 아니라, 기존 테스트의 의도와 커버리지를 유지한 채 자동화를 완성했습니다.
이는 단순한 변환이 아니라 지능형 마이그레이션이라 부를 만합니다.
우리도 할 수 있을까?
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
'인공지능' 카테고리의 다른 글
“무려 27B 파라미터 모델이 3090에서도 돌아간다고?” – Gemma 3 QAT로 바뀌는 AI 모델의 미래 (0) | 2025.04.21 |
---|---|
2025 AI 리포트 완전 분석: 지금 AI를 이해해야 하는 12가지 이유 (0) | 2025.04.20 |
LLM 실험도 이젠 GUI로! 로컬에서 바로 써보는 Transformer Lab (0) | 2025.04.20 |
터미널 속 개발 파트너, Claude Code를 아시나요? - 개발 생산성을 극대화하는 에이전틱 코딩 도구 완전 정복 가이드 (0) | 2025.04.20 |
생성형 AI 앱, 어렵지 않아요! Google AI Studio Starter Apps 체험기 (0) | 2025.04.20 |