6 puntos por GN⁺ 2025-04-18 | Aún no hay comentarios. | Compartir por WhatsApp
  • 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:
    1. Recolectar problemas comunes en los archivos fallidos
    2. Seleccionar muestras representativas (5~10)
    3. Mejorar los prompts/scripts
    4. 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.

Aún no hay comentarios.