Development

Artificial Intelligence
ontwikkelaars

AI bij softwaretesten nog geen gesneden koek

Wel interessant voor toepassing bij geautomatiseerd testen.

16 december 2021

Wel interessant voor toepassing bij geautomatiseerd testen.

Vorige week presenteerden onderzoekers van Microsoft een nieuwe methode om met kunstmatige intelligentie (AI) softwarefouten op te sporen. AG Connect vroeg de Software Improvement Group (SIG) of dit een zinvolle aanpak is en stelde Microsoft aanvullende vragen.

De crux van BugLab - zoals de Microsoftonderzoekers hun experimentele testtool noemen - is dat het algoritme niet is getraind op grote hoeveelheden geannoteerde bugs, maar door twee modellen een soort verstoppertje te laten spelen. Het ene model brengt een fout aan in de software en het andere model moet de fout zien op te sporen. Door deze routine heel veel keer en met heel veel verschillende fouttypen uit te voeren, wordt het detectiemodel steeds beter in het vinden van fouten.

Hoewel het model succesvol was in het opsporen van fouten - er werden zelfs niet eerder ontdekte fouten mee opgespoord in actief gebruikte opensource-software - heeft BugLab een groot probleem. De tool slaat heel vaak alarm op code waarin helemaal geen fout zit (veel fout-positieven).

Magiel Bruntink, head of Research bij SIG: "Zoals aangegeven in het paper is het aantal fout-positieven momenteel zeer hoog: 98% van de gerapporteerde bugs blijkt geen echte bug. Daarmee is een echte praktijktest nog uitgesloten. Om bugs te vinden kan men de tijd nu evident beter besteden aan het gebruiken van bestaande bug findings tools, het doen van automatische, of zelfs handmatige tests."

Zelflerende aanpak kan meerwaarde hebben

Dat neemt niet weg dat SIG met veel belangstelling kijkt naar de toepassing van AI om te komen tot beter gereedschap om te testen op het voorkomen van softwarefouten. "De toepassing van zelflerende algoritmen binnen de software engineering is echt in de mode. Denk bijvoorbeeld ook aan GitHub Copilot, waarmee code grotendeels automatisch kan worden aangevuld. Vanuit de R&D-visie van SIG is het zeker de moeite waard om te onderzoeken welke zelflerende aanpakken meerwaarde leveren, met name om schaarse menskracht en expertise te kunnen ondersteunen en te ontlasten."

Maar de onderzoekaanpak zoals beschreven in het wetenschappelijk artikel van de Microsoftonderzoekers moet nog verder worden doorontwikkeld. "Bij een niet-zelflerende aanpak is een dergelijk aantal fout-positieven meestal reden om er direct mee te stoppen. In dit geval is het misschien mogelijk om de modellen langer en met meer en andere data te trainen. Helaas geeft het technische paper weinig inzage in de zogenaamde training en error rates zodat het moeilijk is om een inschatting te geven hoeveel beter de huidige aanpak nog kan worden."

Miltos Allamanis, Microsoft-onderzoeker en een van de auteurs van het BugLab-artikel, ziet wel mogelijkheden om dit probleem op te lossen: "Fout-positieven kunnen worden verminderd door meer onderzoek te doen naar neural network architectures (in dit geval het bug detector neural network) die krachtiger zijn en beter de code kunnen analyseren. De 'verstoppertje'-aanpak van ons machinelearning-model heeft zijn beperkingen. Het model dat code herschrijft (bug selector) kan dat doen op een manier die semantisch vergelijkbaar is of veranderingen introduceren die geen bugs vertegenwoordigen. Dat hebben we benoemd in secties 5.2 van de discussie in ons artikel."

Bruntink ziet echter nog een andere uitdaging. "Naast fout-positieven bestaat er ook het probleem van fout-negatieven. Dat zijn echte bugs die helemaal niet gevonden worden. Op dat vlak kan er zeker sprake zijn van fundamentele beperkingen, ook voor een zelflerende aanpak. De training gebeurt op basis van een vast gekozen set aan veranderingen die op code worden gedaan om een bug te introduceren. Het is maar zeer de vraag of alle relevante soorten van bugs op die manier aan bod komen. Bij een zelflerende aanpak is dat bovendien vrij lastig te controleren, omdat de modellen zelf heel moeilijk te inspecteren zijn. Een traditioneel geprogrammeerde bug finding tool of test suite hanteert meestal expliciete regels die duidelijk maken naar welk type bug gezocht wordt."

Alternatief voor mutation testing

De BugLab-aanpak doet Bruntink eigenlijk denken aan zogenaamd 'mutation testing', een methode waarmee de effectiviteit van een automatische test suite bepaald kan worden. Die methode brengt ook heel veel willekeurige veranderingen aan in een stuk code. Na elke verandering wordt dan gekeken of de testsuite een probleem detecteert. Op die manier kan de testsuite vervolgens verbeterd worden, zodat echte bugs vervolgens ook beter gevonden worden. "Ook mutation testing is nog niet doorgedrongen tot de echte mainstream ontwikkelprocessen, met name door de vereiste expertise en de zware belasting van de build pipeline." Daar biedt de aanpak van de Microsoft-onderzoekers misschien wel deels een oplossing voor.

Bruntink: "Ook al is het BugLab-model op dit moment nog niet inzetbaar, dat is zeker geen reden om met dit onderzoek te stoppen. Goed dat Microsoft dit oppakt. Wij juichen dit soort toepassingen erg toe, want op dit vlak zijn nog veel problemen."

Reactie toevoegen
De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.