Automated Test Suite Enhancement Using Large Language Models with Few-shot Prompting
Dit onderzoek toont aan dat het gebruik van few-shot prompting met large language models, en specifiek met menselijk geschreven voorbeelden die op basis van code- en probleemgelijkenis worden geselecteerd, de kwaliteit, leesbaarheid en dekking van geautomatiseerde unit-tests aanzienlijk verbetert.
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 softwareontwikkelaars bouwers zijn die gebouwen (apps) opzetten. Unit-tests zijn dan de veiligheidstests die elke steen, elk raam en elke deur controleren voordat het gebouw opengaat. Als je dit handmatig doet, is het een enorm, saai en tijdrovend klusje.
Vroeger gebruikten robots (oude softwaretools) om deze tests te maken, maar die robots maakten vaak tests die zo onleesbaar waren dat zelfs de bouwers er geen raad mee wisten.
Nu hebben we Grote Taalmodellen (LLMs), zoals de slimme AI's die ook in GitHub Copilot zitten. Die kunnen prima tekst en code schrijven. Maar hoe krijg je ze om goede tests te schrijven?
Deze paper onderzoekt een slimme truc: Few-shot prompting.
De Truc: "Kijk hoe ik het doe"
Stel je voor dat je een leerling wilt leren hoe je een taart bakt.
- Zero-shot (Geen voorbeeld): Je zegt alleen: "Bak een taart." De AI probeert het, maar maakt misschien een rommel of vergeet de eieren.
- Few-shot (Met voorbeelden): Je zegt: "Kijk, hier zijn drie voorbeelden van perfecte taarten die anderen hebben gebakken. Nu jij, maak er eentje na."
De onderzoekers wilden weten: Welke voorbeelden werken het beste?
- Menselijke voorbeelden: Tests die door echte mensen zijn geschreven (de "meesters").
- Robots voorbeelden (SBST): Tests die door oude, simpele robots zijn gemaakt (snel, maar vaak lelijk).
- AI voorbeelden: Tests die door een andere AI zijn gemaakt.
En ze vroegen zich ook af: Hoe kies je die voorbeelden?
- Willekeurig: Pak een willekeurige taartrecept uit de lade.
- Slim zoeken: Zoek specifiek naar recepten die lijken op de taart die je nu wilt bakken (bijvoorbeeld: "ik wil een chocoladetaart, dus zoek naar andere chocoladerecepten").
Wat vonden ze? (De resultaten in het kort)
1. De "Meesters" winnen, maar de "Robots" zijn verrassend goed.
Als je menselijke voorbeelden gebruikt, leert de AI het beste. De tests die de AI maakt, zijn dan het meest correct en hebben de beste dekking (ze testen alles).
- Maar: Als je een bestaande testset wilt verbeteren (bijvoorbeeld een set die nu maar half goed is), blijken robot-voorbeelden (SBST) soms zelfs beter! Waarom? Omdat die robots vaak heel specifieke hoekjes testen die mensen vergeten. Mensen zijn soms te "zorgvuldig" en missen de rare situaties.
2. Slim zoeken werkt beter dan willekeurig.
Als je de AI vraagt om voorbeelden te kiezen die lijken op de code die je nu test (zowel op de tekstuele beschrijving als op de code zelf), krijg je de beste resultaten.
- Analogie: Als je een auto wilt repareren, wil je niet naar een recept voor het bakken van brood kijken (willekeurig), maar naar een recept voor het repareren van een motor (slim zoeken).
3. De AI maakt kleine foutjes, maar die zijn makkelijk te fixen.
De AI maakt vaak tests die net niet werken omdat ze een klein dingetje vergeten zijn (bijvoorbeeld een import-commando). De onderzoekers hebben een simpele "reparatie-robot" gebouwd die deze kleine foutjes automatisch weghaalt. Na deze reparatie werken de tests van de AI bijna perfect.
De Grote Les voor de Praktijk
Deze studie zegt eigenlijk: Gebruik AI niet om je hele team te vervangen, maar als een superkrachtige assistent.
- Voor nieuwe projecten: Laat de AI tests schrijven gebaseerd op voorbeelden van echte mensen.
- Voor oude, slechte projecten: Laat de AI kijken naar de "robot-tests" om de gaten in de dekking te vullen.
- De sleutel: Gebruik slimme zoektechnieken om de juiste voorbeelden te vinden, en laat een simpele tool de kleine foutjes opschonen.
Kortom: AI is geen magische toverstaf die alles perfect maakt in één keer. Het is meer als een zeer talentvolle leerling die, als je hem de juiste voorbeelden geeft en even helpt met de kleine foutjes, uitstekend werk kan leveren om je software veiliger en betrouwbaarder te maken.
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.