Testing Framework Migration with Large Language Models
Dit artikel evalueert de effectiviteit van Large Language Models (GPT-4o en Claude Sonnet 4) bij het automatiseren van de migratie van Python-testsuites van \texttt{unittest} naar \texttt{Pytest} met behulp van een gecureerde dataset van real-world voorbeelden, waarbij wordt vastgesteld dat hoewel LLM's het proces kunnen versnellen, bijna de helft van de gegenereerde migraties faalt en dat er duidelijke gedragsverschillen optreden afhankelijk van het model en de promptingstrategie.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
Stel je voor dat je een enorme, oude bibliotheek hebt met boeken geschreven in een zeer strikte, formele taal genaamd unittest. Het werkt perfect, maar het is lomp, neemt te veel ruimte in beslag en is moeilijk te lezen. De eigenaren van de bibliotheek willen alles verplaatsen naar een nieuwe, moderne taal genaamd Pytest, die slanker is, makkelijker te lezen en betere functies heeft.
Het verplaatsen van duizenden boeken met de hand is echter een nachtmerrie. Het kost jaren en mensen worden moe. Daarom stelden de auteurs van dit artikel een zeer intelligente vraag: "Kunnen we een superintelligente AI-robot (een Large Language Model) inhuren om het verplaatsen voor ons te doen?"
Dit is wat ze deden en wat ze ontdekten, eenvoudig uitgelegd:
Het Experiment: De AI-Verhuizers
De onderzoekers kozen 40 specifieke "boeken" (testgevallen) uit beroemde open-source projecten (zoals de tools achter webservers en data-analyse). Ze vroegen twee van de slimste AI-robots die beschikbaar zijn — GPT-4o en Claude Sonnet 4 — om deze boeken van de oude taal naar de nieuwe te vertalen.
Ze probeerden verschillende manieren om de robots te vragen:
- Zero-shot: Alleen zeggen: "Vertaal dit."
- One-shot: Zeggen: "Vertaal dit, en hier is een voorbeeld van hoe ik het wil dat het gedaan wordt."
- Chain-of-Thought: Zeggen: "Denk stap voor stap na voordat je vertaalt."
Ze probeerden ook de "creativiteitsknop" van de robots hoger of lager te draaien om te zien of meer willekeur hielp.
De Resultaten: Een Gemengde Zak
De resultaten waren als het inhuren van een team verhuizers dat ongelooflijk snel is, maar soms dozen laat vallen.
- Het Succespercentage: Van elke 100 vertaalpogingen kreeg de AI er ongeveer 48 goed. De andere 52 keer was de vertaling kapot en zou niet werken.
- De "Perfecte" Verplaatsingen: Wanneer de AI het wél goed deed, werkten de boeken precies zoals ze dat zouden moeten doen. De "verhaallijn" (de codelogica) veranderde niet, en de "voetafdruk" (hoeveelheid van de code die werd gedekt) bleef gelijk.
- De "Kapotte" Verplaatsingen: De fouten gebeurden meestal omdat de AI een subtiel detail miste. Het kon bijvoorbeeld vergeten een specifiek gereedschap (een "fixture") mee te nemen dat nodig was voor de test, of het veranderde een getal lichtjes waardoor de berekening niet meer klopte.
De Persoonlijkheden van de Robots
De twee AI-robots hadden zeer verschillende stijlen, zoals twee verschillende architecten:
- Claude Sonnet 4 (De Conservatieve Renovateur): Deze robot was erg voorzichtig. Het hield ervan om de structuur van het oude gebouw aan te houden. Als de originele test een "class" (een grote container) was, hield Claude het als een class. Het wilde niet te veel veranderen, wat er soms toe leidde dat het sommige van de oude, lompe onderdelen behield.
- GPT-4o (De Modernist): Deze robot was enthousiast om te moderniseren. Het hield ervan om de grote "class"-containers af te breken en ze te herbouwen als eenvoudige, op zichzelf staande functies. Het was agressiever in het gebruiken van de functies van de nieuwe taal, maar dit leidde soms tot fouten als het te veel en te snel veranderde.
De Verrassingen
- Creativiteit Hielp Niet: De onderzoekers dachten dat als ze de AI vertelden om "creatiever" te zijn (door de temperatuurknop omhoog te draaien), het betere oplossingen zou vinden. Dat was niet zo. Meer willekeur betekende simpelweg meer fouten, of andere versies van dezelfde fouten.
- Voorbeelden Kunnen Lastig Zijn: Wanneer ze de AI een voorbeeld gaven van hoe het moest (One-shot), raakte de AI soms te gefocust op dat ene voorbeeld. Het kopieerde de stijl van het voorbeeld zelfs wanneer dat niet bij het nieuwe boek paste, wat leidde tot fouten.
- Simpel vs. Complex: De AI was goed in eenvoudige vertalingen (zoals het veranderen van een woord). Maar wanneer de vertaling een begrip vereiste van complexe relaties tussen verschillende delen van de code (zoals hoe een test verbinding maakt met een database), raakte de AI vaak de weg kwijt.
De Conclusie
Het paper concludeert dat AI een krachtige assistent is voor deze taak, maar niet klaar is om de enige baas te zijn.
Als je een AI je tests laat migreren, kan het ongeveer de helft van het werk correct en zeer snel doen. Echter, een mens moet nog steeds de andere helft controleren. De AI is als een zeer snelle vertaler die de taal vloeiend spreekt, maar soms de culturele context of de specifieke tools mist die nodig zijn om het verhaal in de nieuwe omgeving kloppend te maken.
Kortom: AI kan de verhuizing van het oude testframework naar het nieuwe versnellen, maar je kunt niet gewoon je koffers pakken en vertrekken; je moet de dozen nog steeds inspecteren wanneer ze aankomen om te controleren of er niets kapot is gegaan.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.