6 Punkte von GN⁺ 2025-04-18 | Noch keine Kommentare. | Auf WhatsApp teilen
  • 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:
    1. Gemeinsame Probleme der fehlgeschlagenen Dateien sammeln
    2. Repräsentative Samples auswählen (5–10 Stück)
    3. Prompts/Skripte verbessern
    4. Ä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.

Noch keine Kommentare.