Decided or Open? Comparing Program Repair Techniques When Patch Correctness Is Unknown
Dit artikel stelt een "beslist of open"-raamwerk voor voor het vergelijken van technieken voor automatische programmaherstel onder onzekerheid door het volledige bereik van mogelijke verschillen in succespercentages te berekenen, wat onderzoekers in staat stelt te identificeren welke vergelijkingen met verdere tests kunnen worden beslecht en de significante discrepanties in de betrouwbaarheid van gearchiveerde testresultaten over verschillende modellen heen blootlegt.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://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
In de wereld van software gaan programma's onvermijdelijk kapot. Wanneer een stuk code niet doet wat het zou moeten doen, moet een ontwikkelaar de fout vinden en een nieuwe versie van de code schrijven om het te herstellen. Dit proces is traag en moeilijk, waardoor onderzoekers decennia lang proberen computerprogramma's te bouwen die de reparatie automatisch kunnen uitvoeren. Deze geautomatiseerde tools scannen een kapot programma, genereren duizenden mogelijke oplossingen en proberen degene te kiezen die werkt. Om te weten of deze tools beter worden, vergelijken wetenschappers ze met elkaar. Ze draaien de tools op een reeks bekende defecte programma's en tellen hoe vaak elke tool een correcte fix produceert. Maar er zit een verborgen probleem in deze vergelijking: vaak weten de wetenschappers eigenlijk niet of een gegenereerde fix correct is. Een fix kan de tests die de computer uitvoert passeren, maar dat garandeert niet dat het juist is; het kan gewoon een slimme leugen zijn die toevallig werkt voor de specifieke vragen die gesteld worden. Zonder een mens die het werk controleert, blijven veel fixes in een grijs gebied, gelabeld als noch juist, noch onjuist.
Deze onzekerheid maakt het onmogelijk om met zekerheid te zeggen welke geautomatiseerde reparatietool werkelijk de beste is. Als twee tools worden vergeleken, en het resultaat hangt af van een handvol ongeverifieerde fixes, dan kan de winnaar slechts een toevalstreffer zijn. Een nieuwe studie door Sadnan Nafis aan de BRAC University pakt dit probleem rechtstreeks aan. In plaats van te proberen het antwoord voor elke ongeverifieerde fix te raden, ontwikkelde de onderzoeker een manier om de reikwijdte van mogafelijke uitkomsten te meten. Hij stelde een eenvoudige maar krachtige vraag: gegeven de informatie die we al hebben, staat de winnaar van een vergelijking vast, of hangt het volledig af van de onbekende fixes? Door het best-case en worst-case scenario te berekenen voor elke mogelijke waarde van de ontbrekende informatie, bepaalt de studie of een vergelijking "beslist" of "open" is. Een besliste vergelijking betekent dat de winnaar hetzelfde blijft, ongeacht hoe de onbekende fixes uitpakken. Een open vergelijking betekent dat de winnaar kan omslaan afhankelijk van de ontbrekende data.
De studie paste deze methode toe op een enorm archief van reparatiepogingen met bijna 55.000 kandidaat-fixes voor 488 verschillende bugs. De onderzoekers ontdekten dat voor de meeste vergelijkingen tussen een slimme, op leren gebaseerde tool en zijn simpelere rivalen, het antwoord al door de data werd bepaald. In twaalf van de zestien gevallen was de lerende tool duidelijk beter, en deze conclusie bleef overeind, zelfs als elke onbekende fix onjuist zou blijken te zijn. Echter, vier vergelijkingen bleven open, wat betekende dat de winnaar afhing van de ongeverifieerde fixes. De onderzoekers voegden vervolgens meer bewijs toe, draalden de code opnieuw en vroegen mensen om de lastige gevallen te beoordelen. Dit extra werk besliste alle zestien vergelijkingen en bevestigde dat de lerende tool inder in elk geval de winnaar was. Maar de studie onthulde ook dat deze laatste vier overwinningen fragiel waren; als slechts een paar van de nieuwe labels onjuist waren, hadden de resultaten kunnen veranderen.
Een van de meest verrassende ontdekkingen kwam voort uit het controleren van de betrouwbaarheid van het testingssysteem zelf. De onderzoekers merkten op dat het testingssysteem soms niet correct functioneerde, waardoor een correcte fix als een fout werd gemarkeerd. Om dit te vangen, keken ze naar gevallen waarin de computer een perfecte kopie genereerde van de oorspronkelijke fix van de menselijke ontwikkelaar. Aangezien deze kopie bekend was als correct, zou deze elke test moeten passeren. Als het systeem het als een fout markeerde, was het systeem kapot. Ze ontdekten dat dit op zeer uiteenlopende percentages gebeurde, afhankelijk van welk kunstmatig intelligentiemodel er werd getest. Voor één populair model werd de correcte kopie in 33,5% van de gevallen onterecht afgewezen. Voor een ander model gebeurde dit slechts 2,5% van de tijd. Dit betekende dat het testingssysteem een model onrechtvaardig benadeelde, niet omdat het model slechter was, maar omdat de testomgeving (test harness) eerder fouten maakte met dat specifieke model.
De studie introduceerde ook een manier om de waarde van toekomstige experimenten te voorspellen nog voordat ze beginnen. Omdat het draaien van een test alleen kan bewijzen dat een fix fout is, maar nooit kan bewijzen dat hij juist is, realiseerden de onderzoekers zich dat sommige vergelijkingen nooit door testen alleen beslist kunnen worden. Als de best mogelijke uitkomst van een testcampagne een gelijkspel is, dan is het draaien van meer tests verspilling van tijd. Ze creëerden een "pre-flight check" die naar de huidige data kijkt en onderzoekers precies vertelt welke vergelijkingen een nieuwe ronde testen mogelijk zou kunnen oplossen. In een praktijkproef publiceerden ze hun voorspellingen voor een aanstaande testcampagne vooraf. Elke voorspelling kwam exact uit: de check identificeerde correct welke vergelijkingen beslist zouden worden en welke open zouden blijven, waardoor onderzoekers werden behoed voor urenlange experimenten die de uitkomst nooit zouden kunnen veranderen.
De bevindingen suggereren dat het vakgebied van automatische reparatie de manier waarop resultaten worden gerapporteerd moet veranderen. In plaats van een enkel getal te geven dat doet alsof alle data bekend is, zouden onderzoekers de reikwijdte van de mogelijkheden moeten rapporteren. Deze aanpak scheidt de solide conclusies van de wankele conclusies. Het laat zien dat hoewel sommige tools duidelijk superieur zijn, anderen te dicht bij elkaar liggen om zonder meer bewijs te kunnen oordelen. Het benadrukt ook dat de tools die worden gebruikt om succes te meten niet perfect zijn en een bias kunnen introduceren die een model bevoordeelt boven een ander. Door deze nieuwe controles te gebruiken, kunnen wetenschappers hun inspanningen richten op de vergelijkingen die daadwerkelijk meer data nodig hebben, in plaats van achter resultaten aan te jagen die al beslist of onmogelijk te bepalen zijn. Het werk lost het probleem van het vinden van de perfecte fix niet op, maar het biedt een duidelijke kaart van waar de waarheid ligt en waar deze verborgen blijft.
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.