- Airbnb hat rund 3.500 Enzyme-basierte Testdateien erfolgreich automatisch auf die React Testing Library (RTL) migriert
- Eine ursprünglich auf 1,5 Jahre geschätzte Aufgabe wurde mit LLMs und einer Automatisierungs-Pipeline in nur 6 Wochen abgeschlossen, wobei 3,5K Testdateien aktualisiert wurden
- Durch automatische Validierung, Retry-Loops, dynamische Prompts und die Zusammenstellung umfangreicher Kontexte wurde eine hohe Automatisierungsquote erreicht
- Am Ende wurden 97 % aller Dateien automatisch konvertiert, der Rest wurde manuell fertiggestellt, sodass 100 % erreicht wurden
- Auf Basis dieser Erfahrung plant das Unternehmen nun komplexere Migrationsaufgaben und den Ausbau LLM-basierter Entwicklungstools
Airbnbs LLM-basierte Migration von Tests im großen Maßstab
Hintergrund
- Airbnb verwendet seit 2020 für neue Tests die React Testing Library (RTL) und begann damit den Wechsel weg von Enzyme
- Enzyme greift tief in interne Implementierungen ein und passt damit nicht zur Philosophie von modernem React, weshalb eine schrittweise Ablösung notwendig wurde
- Ein bloßes Entfernen hätte Lücken in der Testabdeckung verursacht, daher war eine Umstellung erforderlich, die Absicht und Abdeckung der Tests beibehält
Migrationsstrategie
1. Phasenbasierte Validierung und Refactoring
- Die Dateien wurden in einer zustandsbasierten Pipeline verarbeitet; nur wenn die Validierung einer Phase erfolgreich war, ging es zur nächsten weiter
- Bei Fehlern wurde das LLM aufgerufen, um Korrekturen zu versuchen; Phasen waren z. B.
Enzyme entfernen → Jest anpassen → lint/tsc erfolgreich → als abgeschlossen markieren
- Hunderte Dateien konnten parallel verarbeitet werden; einfache Dateien waren schnell erledigt, komplexe wurden schrittweise gelöst
2. Retry-Loops und dynamische Prompts
- Fehlgeschlagene Phasen wurden bis zur maximalen Anzahl von Versuchen wiederholt
- Bei jedem Versuch wurden Fehlermeldungen und die geänderte Datei in den Prompt aufgenommen, um dem LLM Feedback zu geben
- Die meisten Dateien mit einfacher bis mittlerer Komplexität wurden in höchstens 10 Versuchen erfolgreich migriert
3. Erweiterung des Prompt-Kontexts
- Komplexe Dateien ließen sich nicht allein durch einfache Wiederholungen lösen, daher erfolgte der Wechsel zu einem Ansatz mit reichhaltigerem Kontext
- Es wurden Kontexte mit bis zu 100.000 Token zusammengestellt, darunter:
- der Quellcode der betreffenden Komponente
- der bestehende Enzyme-Test
- benachbarte Tests und Beispiele (few-shot prompting)
- teaminterne Stilrichtlinien und gemeinsame Muster
- Entscheidend war die Auswahl hochwertiger, relevanter Dateien; wichtiger als der eigentliche Prompt-Text war, „was hineinkommt“
4. Von 75 % auf 97 %: systematische Verbesserungen
- Nach einer ersten automatisierten Umstellung von 75 % befanden sich unter den verbleibenden 25 % 900 Dateien im Fehlerzustand
- Analyse der Probleme und iterative Verbesserungen:
- Gemeinsame Probleme der fehlgeschlagenen Dateien sammeln
- Repräsentative Samples auswählen (5–10 Stück)
- Prompts/Skripte verbessern
- Änderungen an den Samples testen und dann den gesamten Bestand erneut versuchen
- Durch Wiederholung dieses Ablaufs über 4 Tage wurde eine Automatisierungsquote von 97 % erreicht
Die verbleibenden 3 % wurden manuell bearbeitet
- Einige Dateien scheiterten auch nach mehr als 100 Wiederholungsversuchen; sie wurden auf Basis der automatisch refaktorierten Ergebnisse manuell korrigiert
- Auch hier ermöglichte die Automatisierung mit minimalem Aufwand die finale Fertigstellung
Ergebnisse und Auswirkungen
- Schon beim ersten automatisierten Durchlauf wurden in 4 Stunden 75 % der Migration erledigt
- Nach 4 Tagen iterativer Verbesserungen waren 97 % automatisiert abgeschlossen
- Einschließlich der verbleibenden manuellen Arbeiten wurde die komplette Umstellung innerhalb von 6 Wochen zu 100 % abgeschlossen
- Enzyme wurde vollständig entfernt, ohne die Testabsicht oder Testabdeckung zu verlieren
- Selbst unter Einbeziehung von LLM-API-Kosten und Engineering-Ressourcen war dies im Vergleich zur Handarbeit ein sehr effizienter Ansatz
Nächste Schritte
- Auf Basis dieser Erfahrung startet das Unternehmen nun die Automatisierung noch umfangreicherer Code-Transformationen mit LLMs
- Zudem wird untersucht, wie sich der Ansatz auf komplexe Refactorings und Strukturänderungen anwenden lässt
Noch keine Kommentare.