- Airbnb logró migrar automáticamente alrededor de 3,500 archivos de pruebas basados en Enzyme a React Testing Library (RTL)
- Una tarea que originalmente se estimaba en 1.5 años se completó con LLM y un pipeline de automatización en solo 6 semanas, actualizando 3.5K archivos de pruebas
- Se aseguró una alta tasa de éxito de automatización mediante validación automática, bucles de reintento, prompts dinámicos y construcción de contexto a gran escala
- Al final, se convirtió automáticamente el 97% de todos los archivos, y el resto se completó manualmente hasta llegar al 100%
- Con base en esta experiencia, ya planean ampliar esto a tareas de migración más complejas y herramientas de desarrollo basadas en LLM
Migración masiva de pruebas basada en LLM en Airbnb
Contexto
- Desde 2020, Airbnb usa React Testing Library (RTL) para las pruebas nuevas y comenzó la transición desde Enzyme
- Como Enzyme accede profundamente a detalles de implementación y eso no encaja con la filosofía moderna de React, surgió la necesidad de retirarlo gradualmente
- Una simple eliminación habría generado vacíos en la cobertura de pruebas, por lo que se requería una conversión que preservara la intención y la cobertura
Estrategia de migración
1. Validación y refactorización basadas en etapas
- Los archivos se organizaron en un pipeline basado en estados, avanzando a la siguiente etapa solo cuando pasaban la validación de cada fase
- Si fallaba una etapa, se invocaba al LLM para intentar corregirla; ejemplos de etapas:
eliminar enzyme → ajustar jest → pasar lint/tsc → marcar como completado
- Era posible procesar cientos de archivos en paralelo; los archivos simples se resolvían rápido y los complejos se abordaban de forma gradual
2. Bucles de reintento y prompts dinámicos
- Las etapas fallidas se repetían hasta el número máximo de intentos
- En cada intento, se incluían el mensaje de error y el archivo corregido en el prompt para dar retroalimentación al LLM
- La mayoría de los archivos de dificultad simple a media se resolvieron en 10 intentos o menos
3. Ampliación del contexto del prompt
- Los archivos complejos no se resolvían con simples reintentos, así que se cambió a un enfoque de contexto más rico
- Se llegó a construir contexto de hasta 100 mil tokens, incluyendo:
- Código fuente del componente correspondiente
- La prueba existente en Enzyme
- Pruebas cercanas y ejemplos (few-shot prompting)
- Estilo interno del equipo y patrones comunes
- La clave era seleccionar archivos relevantes y de buena calidad; más que la redacción del prompt, era más importante “qué incluir”
4. Llevarlo del 75% al 97%: mejora sistemática
- Después de convertir automáticamente el 75%, 900 archivos seguían en estado de fallo dentro del 25% restante
- Se repitió un ciclo de análisis y mejora del problema:
- Recolectar problemas comunes en los archivos fallidos
- Seleccionar muestras representativas (5~10)
- Mejorar los prompts/scripts
- Probar en las muestras y luego reintentar en todo el conjunto
- Tras 4 días de iteración, la tasa de finalización automatizada llegó al 97%
El 3% restante se resolvió manualmente
- Algunos archivos que fallaron incluso después de más de 100 reintentos se corrigieron manualmente tomando como base el resultado del refactor automatizado
- Incluso así, gracias a la automatización, el esfuerzo final fue mínimo
Resultados e impacto
- En la primera ejecución de la automatización, el 75% de la migración se completó en solo 4 horas
- Tras 4 días de mejoras iterativas, se alcanzó un 97% de automatización completa
- Incluyendo el trabajo manual restante, la transición completa se terminó al 100% en 6 semanas
- Se eliminó por completo Enzyme manteniendo la intención y la cobertura de las pruebas
- Incluso considerando el costo de la API del LLM y los recursos de ingeniería, fue un enfoque mucho más eficiente que hacerlo manualmente
Siguientes pasos
- Con base en esta experiencia, ya comenzaron a automatizar transformaciones de código aún más grandes usando LLM
- También exploran su aplicabilidad a refactorizaciones complejas, cambios estructurales y más
Aún no hay comentarios.