- 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 :
- collecte des problèmes communs aux fichiers en échec
- sélection déchantillons représentatifs (5 à 10)
- amélioration des prompts/scripts
- 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.