Each language version is independently generated for its own context, not a direct translation.
Stel je voor dat je een enorme fabriek hebt waar software wordt gebouwd. Om te zorgen dat alles goed werkt, moeten de ingenieurs constant testen of de machines niet vastlopen. Dit noemen we unit testing.
Vroeger deden mensen dit handmatig: het was saai, duur en veel mensen vergeten het. Later kwamen er slimme robots (zoals EvoSuite) die automatisch tests schreven. Die robots waren heel goed in het vinden van alles wat kapot kon gaan (ze hadden een hoge "dekking"), maar hun tests waren vaak onleesbaar, vol met rare namen en leken meer op een rommelige schets dan op een duidelijk verhaal.
Nu hebben we LLMs (zoals ChatGPT) die kunnen schrijven alsof ze mensen zijn. De vraag in dit onderzoek is: Kunnen deze AI's betere tests schrijven dan de oude robots? En vooral: Hoe moeten we ze vragen (prompten) om het beste resultaat te krijgen?
Hier is wat de onderzoekers hebben ontdekt, vertaald naar alledaagse taal:
1. De "Vraagstelling" is cruciaal (Prompt Engineering)
Stel je voor dat je een kok (de AI) vraagt om een taart te bakken.
- Zonder instructies (Zero-Shot): "Maak een taart." De AI maakt er misschien eentje, maar hij vergeet deeg, gebruikt een plastic kom en de taart is plat.
- Met voorbeelden (Few-Shot): "Hier is een taart die ik eerder maakte. Maak er eentje zoals deze." Dit helpt soms, maar de AI kopieert soms gewoon de fouten uit het voorbeeld.
- Met redenering (Chain-of-Thought): "Denk eerst na: wat heb ik nodig? Meel, eieren, suiker. Schrijf dan het recept op." Dit werkt veel beter.
- De "Super-Kok" aanpak (Guided Tree-of-Thought): Dit is de beste methode die ze hebben getest. Stel je voor dat je drie experts in de keuken zet. Ze bespreken samen het recept, één zegt "nee, dat werkt niet", een ander zegt "probeer dit", en samen komen ze tot het perfecte plan voordat ze beginnen met bakken.
Conclusie: De AI's schrijven veel betere tests als je ze dwingt om eerst na te denken en samen te werken (de "Super-Kok" methode), in plaats van ze zomaar een opdracht te geven.
2. De AI's zijn creatief, maar ook hallucinerend
De AI's zijn fantastisch in het schrijven van tests die lezen als menselijk werk. Ze gebruiken mooie namen, goede zinnen en het ziet er netjes uit. De oude robot (EvoSuite) schreef tests die leken op een computerfoutmelding.
MAAR: De AI's hebben een groot probleem: ze hallucineren.
Stel je voor dat de AI een test schrijft voor een koffiezetapparaat. Hij schrijft: "Druk op de knop 'KoffieDruk'." Maar die knop bestaat niet in het echte apparaat! De AI heeft de knop verzonnen omdat het dacht dat het logisch was.
- Het gevolg: Als je de test probeert te draaien, crasht hij direct. In dit onderzoek faalden tot 86% van de AI-tests bij het compileren (het "opstarten") omdat ze op dingen verwezen die niet bestonden.
- De oude robot (EvoSuite) maakt geen hallucinaties; hij gebruikt alleen wat hij zeker weet dat er is. Daarom werkt zijn code bijna altijd direct, ook al is het lelijk.
3. Dekking: Kwaliteit vs. Kwantiteit
De oude robot (EvoSuite) is als een stofzuiger: hij zuigt elke hoek en kier schoon. Hij vindt bijna alle fouten (hoge dekking), maar laat een puinhoop achter.
De AI is als een kunstenaar: hij maakt een prachtig schilderij van de test, maar hij mist soms de hoekjes waar de stof zit.
- De AI's halen ongeveer 60-80% dekking (afhankelijk van hoe goed je vraagt), terwijl de robot 94% haalt.
- De AI's zijn dus nog niet slim genoeg om alles te vinden wat kapot kan gaan, maar ze schrijven wel tests die mensen kunnen begrijpen.
4. De "Test Geur" (Test Smells)
In de softwarewereld hebben tests soms "geurtjes" die aangeven dat ze slecht zijn gebouwd.
- Magische Getallen: De AI schrijft vaak: "Controleer of het getal 42 terugkomt." Waarom 42? Niemand weet het. Dat is een "Magisch Getal". Dit maakt het moeilijk om de test later aan te passen.
- Roulette van Asserties: De AI schrijft 10 keer "Controleer of X klopt", zonder te zeggen waarom. Als er één fout is, weet je niet welke.
- De AI's maken minder van deze "geurtjes" dan de oude robot, maar ze maken ze nog steeds veel te vaak.
Het Grote Advies: De Hybrid Oplossing
De onderzoekers concluderen dat we de AI's niet als vervanging moeten zien, maar als assistenten.
- De AI is de schrijver: Hij maakt de tests leesbaar, mooi en begrijpelijk voor mensen.
- De Oude Robot (EvoSuite) is de controleur: Hij zorgt dat er geen enkele hoekje over het hoofd wordt gezien en dat de code technisch klopt.
De beste aanpak: Laat de AI de tests schrijven (met de "Super-Kok" methode), en laat daarna de oude robot of een menselijke controleur de "hallucinaties" (de verzonnen knoppen) eruit halen en de dekking controleren.
Kort samengevat: AI's kunnen prachtige tests schrijven die mensen kunnen lezen, maar ze dromen soms dingen in die niet bestaan. We moeten ze dus slim aansturen en altijd een tweede paar ogen (of een oude robot) erover laten waken voordat we ze gebruiken in de echte wereld.