6 points par GN⁺ 2025-04-18 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Airbnb est parvenu à migrer automatiquement environ 3500 fichiers de test basés sur Enzyme vers React Testing Library (RTL)
  • Une tâche initialement estimée à 1,5 an a été bouclée avec des LLM et un pipeline dautomatisation en seulement 6 semaines pour mettre à jour 3,5K fichiers de test
  • Un taux de réussite élevé de lautomatisation a été obtenu grâce à une validation automatique, des boucles de retry, des prompts dynamiques et une construction de contexte à grande échelle
  • Au final, 97 % de lensemble des fichiers ont été convertis automatiquement, le reste ayant été finalisé manuellement pour atteindre 100 %
  • Fort de cette expérience, Airbnb prévoit détendre ces approches à des migrations plus complexes et à des outils de développement fondés sur les LLM

Migration de tests à grande échelle basée sur les LLM chez Airbnb

Contexte

  • Depuis 2020, Airbnb utilise React Testing Library (RTL) pour les nouveaux tests et a engagé la transition depuis Enzyme
  • Enzyme, qui permet daccéder en profondeur à limplémentation interne, ne correspond plus à la philosophie de React moderne, doù la nécessité de son retrait progressif
  • Le retirer simplement aurait créé des trous dans la couverture de tests ; il fallait donc transformer les tests en conservant leur intention et leur couverture

Stratégie de migration

1. Validation et refactoring par étapes

  • Les fichiers ont été intégrés dans un pipeline à états, où chaque fichier passe à létape suivante après validation de létape courante
  • En cas déchec, un LLM est appelé pour tenter une correction ; exemples détapes : suppression d'Enzyme  correction de jest  passage de lint/tsc  marquage comme terminé
  • Des centaines de fichiers peuvent être traités en parallèle : les fichiers simples sont gérés rapidement, tandis que les plus complexes sont résolus progressivement

2. Boucles de retry et prompts dynamiques

  • Les étapes en échec sont relancées jusquau nombre maximal de tentatives
  • À chaque tentative, les messages derreur et les fichiers modifiés sont inclus dans le prompt afin de fournir un retour au LLM
  • La plupart des fichiers de complexité faible à moyenne ont été traités avec succès en 10 tentatives ou moins

3. Extension du contexte des prompts

  • Les fichiers complexes ne se résolvaient pas avec de simples retries, ce qui a conduit à passer à une approche fournissant un contexte plus riche
  • Jusquà 100000 tokens de contexte pouvaient être assemblés, avec notamment :
    • le code source du composant concerné
    • les anciens tests Enzyme
    • des tests voisins et des exemples (few-shot prompting)
    • les styles internes de léquipe et les motifs communs
  • Le point clé était de sélectionner des fichiers pertinents et de qualité ; plus encore que la formulation du prompt, cest « ce quon y met » qui comptait

4. Passer de 75 % à 97 % : une amélioration systématique

  • Après une première vague dautomatisation à 75 %, 900 fichiers restaient en échec parmi les 25 % restants
  • Lanalyse des problèmes et les améliorations ont été répétées selon ce cycle :
    1. collecte des problèmes communs aux fichiers en échec
    2. sélection déchantillons représentatifs (5 à 10)
    3. amélioration des prompts/scripts
    4. test sur les échantillons puis nouvelle tentative sur lensemble
  • Quatre jours ditération ont permis datteindre 97 % dautomatisation

Les 3 % restants traités manuellement

  • Certains fichiers ayant échoué même après plus de 100 nouvelles tentatives ont été corrigés manuellement à partir du résultat du refactoring automatique
  • Là aussi, lautomatisation a permis daboutir avec un effort minimal

Résultats et impact

  • Dès le premier lancement de lautomatisation, 75 % de la migration a été réalisée en 4 heures
  • 97 % dautomatisation atteints après 4 jours daméliorations itératives
  • En incluant le traitement manuel restant, la transition a été achevée à 100 % en 6 semaines
  • Suppression complète dEnzyme tout en conservant lintention des tests et leur couverture
  • Même en comptant le coût des API de LLM et les ressources dingénierie, lapproche est restée bien plus efficace quun traitement manuel

Étapes suivantes

  • Sur la base de cette expérience, Airbnb a lancé lautomatisation de transformations de code encore plus massives avec des LLM
  • Lentreprise étudie aussi son application à des refactorings complexes et à des changements structurels

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.