6 pontos por GN⁺ 2025-04-18 | Ainda não há comentários. | Compartilhar no WhatsApp
  • A Airbnb conseguiu migrar automaticamente cerca de 3.500 arquivos de teste baseados em Enzyme para React Testing Library (RTL)
  • Um trabalho originalmente estimado em 1,5 ano foi concluído com LLM e um pipeline de automação em apenas 6 semanas, atualizando 3,5 mil arquivos de teste
  • Alta taxa de sucesso na automação com validação automática, loops de retry, prompts dinâmicos e composição de contexto em larga escala
  • No fim, 97% de todos os arquivos foram convertidos automaticamente, e o restante foi finalizado manualmente para chegar a 100%
  • Com base nessa experiência, a empresa planeja expandir para tarefas de migração mais complexas e ferramentas de desenvolvimento baseadas em LLM

Migração em larga escala de testes com LLMs na Airbnb

Contexto

  • Desde 2020, a Airbnb usa React Testing Library (RTL) em novos testes e iniciou a transição a partir do Enzyme
  • Como o Enzyme acessa profundamente implementações internas, essa abordagem não se encaixa na filosofia moderna do React, o que levou à necessidade de remoção gradual
  • Uma remoção simples geraria lacunas na cobertura de testes, então era necessário converter preservando intenção e cobertura

Estratégia de migração

1. Validação e refatoração baseadas em etapas

  • Os arquivos foram organizados em um pipeline baseado em estados, no qual cada etapa só avança após passar pela validação correspondente
  • Em caso de falha, o LLM era chamado para tentar corrigir; exemplos de etapas: remoção do enzyme → ajuste do jest → aprovação em lint/tsc → marcação de conclusão
  • Centenas de arquivos podiam ser processados em paralelo; arquivos simples eram resolvidos rapidamente, enquanto os complexos eram tratados de forma gradual

2. Loops de retry e prompts dinâmicos

  • Etapas com falha eram executadas novamente até o limite máximo de tentativas
  • A cada tentativa, mensagens de erro e o arquivo corrigido eram incluídos no prompt, fornecendo feedback ao LLM
  • A maior parte dos arquivos de dificuldade simples a média foi resolvida em até 10 tentativas

3. Expansão do contexto do prompt

  • Arquivos complexos não eram resolvidos com retries simples, então a equipe mudou para uma abordagem com contexto mais rico
  • Foram montados prompts de até 100 mil tokens, incluindo:
    • código-fonte do componente em questão
    • teste Enzyme existente
    • testes vizinhos e exemplos (few-shot prompting)
    • estilo interno da equipe e padrões comuns
  • O ponto central era selecionar arquivos relevantes e de boa qualidade; mais importante do que a redação do prompt era "o que incluir"

4. De 75% a 97%: melhoria sistemática

  • Após converter 75% com automação, 900 arquivos entre os 25% restantes estavam em estado de falha
  • A equipe repetiu análise e melhoria dos problemas:
    1. coletar problemas em comum nos arquivos com falha
    2. selecionar amostras representativas (5 a 10 arquivos)
    3. melhorar prompts/scripts
    4. aplicar testes às amostras e tentar novamente no conjunto completo
  • Após 4 dias de repetição, a taxa de conclusão automática chegou a 97%

Os 3% restantes foram tratados manualmente

  • Alguns arquivos que falharam mesmo após mais de 100 tentativas foram corrigidos manualmente com base no resultado da refatoração automática
  • Ainda assim, graças à automação, a finalização exigiu esforço mínimo

Resultados e impacto

  • Na primeira execução da automação, 75% da migração foi concluída em 4 horas
  • Após 4 dias de melhorias iterativas, 97% da automação foi concluída
  • Incluindo o restante do trabalho manual, toda a transição foi concluída em 6 semanas
  • O Enzyme foi totalmente removido, preservando a intenção e a cobertura dos testes
  • Mesmo considerando o custo da API de LLM e os recursos de engenharia, a abordagem foi muito mais eficiente do que o trabalho manual

Próximos passos

  • Com base nessa experiência, a empresa iniciará automações de transformação de código em escala ainda maior com uso de LLM
  • Também está explorando a aplicação em refatorações complexas e mudanças estruturais

Ainda não há comentários.

Ainda não há comentários.