205 čitanja

Studija otkriva da mutacije AI koda pomažu programerima da brže uhvate bugove

by mutation...6m2025/06/03
Read on Terminal Reader

Predugo; Citati

Ova studija pokazuje da GPT-4 i drugi LLM-ovi mogu generisati raznovrsne, mutacije kodova koji otkrivaju greške u Java, nadmašujući tradicionalne alatke za testiranje mutacija za 18%.
featured image - Studija otkriva da mutacije AI koda pomažu programerima da brže uhvate bugove
Mutation Technology Publications HackerNoon profile picture
0-item

Autori :

(1) Bo Wang, Peking Jiaotong University, Peking, Kina ([email protected]);

(2) Mingda Chen, Peking Jiaotong University, Peking, Kina ([email protected]);

(3) Youfang Lin, Peking Jiaotong University, Peking, Kina ([email protected]);

(4) Mike Papadakis, Univerzitet u Luksemburgu, Luksemburg ([email protected]);

(5) Jie M. Zhang, King’s College London, London, UK ([email protected]).

Authors:

(1) Bo Wang, Peking Jiaotong University, Peking, Kina ([email protected]);

(2) Mingda Chen, Peking Jiaotong University, Peking, Kina ([email protected]);

(3) Youfang Lin, Peking Jiaotong University, Peking, Kina ([email protected]);

(4) Mike Papadakis, Univerzitet u Luksemburgu, Luksemburg ([email protected]);

(5) Jie M. Zhang, King’s College London, London, UK ([email protected]).

Abstraktni i1 Introduction

1 Uvod

2 Background and Related Work

2 Pozadina i povezani radovi

3 Study Design

3.1 Pregled i istraživačka pitanja

3.2 Podatke

3.3 Generacija mutacija kroz LLM-ove

3.4 Metrika procjene

3.5 Eksperimentalne postavke

4 Evaluation Results

4.1 RQ1: performanse u pogledu troškova i korisnosti

4.2 RQ2: Sličnost ponašanja

4.3 RQ3: Uticaji različitih prometa

4.4 RQ4: Uticaji različitih LLMs

4.5 RQ5: Uzroci korijena i vrste grešaka ne-kompilabilnih mutacija

5 Discussion

5.1 Osetljivost na odabrane postavke eksperimenta

5.2 Implikacije

5.3 Pretnje valjanosti

6 Conclusion and References

6 Zaključci i reference

Abstrakcija

Pitanje konteksta kako generisati visokoučinkovite mutacije podataka, koje će se koristiti za testne svrhe, predstavlja ključni izazov u literaturi za testiranje mutacija. Veliki jezični modeli (LLM) pokazali su veliki potencijal u zadatcima povezanim sa kodom, ali njihova korisnost u testiranju mutacija ostaje neistražena. U tu svrhu, sistematski istražujemo performanse LLM-ova u generisanju efektivnih mutacija u odnosu na njihove postojeće pristupe, potencijal za otkrivanje grešaka i vezu sa stvarnim greškama. Posebno, provodimo veliku empirijsku studiju koja uključuje 4 LLM-a, uključujući i modele otvorenog i zatvorenog izvora, i 440 stvarnih grešaka na dva Java referentna znaka. Otkrivamo da

1 Uvod

Testiranje mutacija je jedna od najučinkovitijih tehnika testiranja softvera [17, 18, 27, 33, 59]. Ona se izvodi proizvodnjom programskih varijanti tako što se jednostavne sintaktičke promene (tj. mutacije) u izvornom kodu izvornog programa (tj. mutanti). Ove varijante formiraju ciljeve testiranja, u smislu traženja testova za pokretanje različitih ponašanja na izvornom i mutantnom programu. Mutanata se zove ubijena ili živa ovisno o tome da li test izvršenja dovodi do različitog programskog izlaza (opazivnog ponašanja) od onog iz izvornog programa ili ne. Udio ubijenih mutanata preko čitavog skupa mutanata formira metriku adekvatnosti testa koja se zove mutacijski rezultat.


Budući da su mutacije ciljevi testiranja, efikasnost metode uvelike ovisi o skupu mutacija koje se koriste.Tradicionalne tehnike koriste jednostavne sintaktičke transformacije (pravila), koje se nazivaju operatori mutacije, koji uvode sintaktičke promene u svakoj lokaciji koda koju primjenjuju [33, 59]. Mi ove pristupe nazivamo pristupima zasnovanim na pravilima.


Unfortunately, rule-based approaches produce large numbers of redundant mutants, i.e., mutants that do not contribute to the testing process [5, 57] and thus exacerbate the method’s computational overheads as well as the human effort involved in examining live mutants. To address this issue, researchers leverage deep learning approaches to form mutation operators based on the project’s history [62, 70, 73], with the hope that these will produce few but effective mutations. While interesting, these approaches fail to produce effective mutations [56], perhaps due to the fact that they are trained on a few data instances.


Međutim, pitanje koje mutacije treba koristiti prilikom testiranja mutacija ostaje otvoreno zbog sljedećih izazova: (1) Formiranje efikasnih mutacija. Da bi bile efikasne, mutacije moraju biti sintaktički ispravne, što nije slučaj s većinom postojećih metoda zasnovanih na učenju, i biti vjerojatno da će otkriti greške [10, 80], tj. imaju dobar potencijal da se pariraju sa stvarnim greškama [7]. Dok su postojeće metode efikasne, još uvijek postoji značajan prostor za poboljšanje [15]. (2) Formiranje prirodnih mutacija. Mutacije moraju biti usklađene sa prirodnim kodiranjem uzoraka i praksi koje se promatraju među programerima. (3) Formiranje različitih i ubijivih mutacija. Određivanje je li pokrivenost mutantima ekvivalentna 88, to je izaz


Kako bismo se nosili sa ovim izazovima, cilj nam je da koristimo Large-Language Models (LLM), koji su obučeni u velikom kodu i mogu proizvesti ljudski sličan kod [11]. Nakon postojećih studija [26, 49, 65], dizajnirali smo podrazumevani poziv koji sadrži upute za zadatke, element koda koji treba mutirati, odgovarajući kod metode i nekoliko uzoraka uzetih iz realnih bugova. Izvršili smo masovnu evaluaciju koja je uključivala 4 LLM-a, 2 komercijalno sa zatvorenim izvorom i 2 open-source, 440 realnih bugova iz dva Java referentna znaka, tj. Defects4J [37] i ConDefects [82], i usporedili ih sa postojećim tehnikama i alatima.


Naša evaluacija uključuje i kvantitativnu i kvalitativnu analizu mutacija koje stvaraju LLM-ovi, usporedivši ih sa postojećim pristupima kako bi se procijenili njihovi troškovi i efikasnost. Osim toga, proučavamo kako različite strategije inženjeringa prompt i LLM-ovi (tj. GPT-3.5-Turbo [4], GPT-4-Turbo, CodeLlama-13bInstruct [64], i StarChat-β-16b [45]) utiču na efikasnost zadatka.


Naši rezultati otkrivaju da je najbolji model za generaciju mutanta GPT-4 jer nadmašuje druge LLM-ove u svim metrikama koje se koriste, tj. proizvodi manje ekvivalentnih mutanta, mutante s većim potencijalom otkrivanja grešaka, kao i veće spajanje i semantičku sličnost sa stvarnim greškama. GPT-3.5 je drugi najbolji u smislu potencijala otkrivanja grešaka, što dovodi do otkrivanja 96,7% grešaka u Defects4J i 86,7% u ConDefects. Od ostalih tehnika, Major je najbolji, sa potencijalom otkrivanja 91,6% grešaka u Defects4J i 68,9% u ConDefects, što ukazuje na prednost od oko 18% za GPT na ConDefects koji je novi i nevidljivi skup podataka.


Posebno, naši rezultati pokazuju da GPT-ovi pokazuju najveću raznolikost, nedavno uvođenjem 45 različitih tipova AST-a, za razliku od samo 2 koje koriste tradicionalni pristupi kao što je Major, i sumirajući sve postojeće pristupe, što ukazuje na mnogo bolju kontekstualizaciju pristupa zasnovanog na LLM-u.


Također smo analizirali mutacije generisane od strane GPT-a koji ne uspevaju da kompilišu, zajednički problem sa mutacijama zasnovanima na učenju, i otkrili da spadaju u 9 tipova grešaka kompilacije s Upotrebom nepoznatih metoda i tipovima strukturnog uništenja koda koji su najčešći.


Uključili smo našu metodu u alat za mutacije nazvanKumo, alat za generaciju mutacija zasnovan na LLM-u za Java. Na temelju eksperimentalnih podataka, izgradili smo i skup podataka koji sadrži visokokvalitetne LLM-generirane mutante koji se mogu koristiti ne samo u testiranju mutacija već i u drugim aplikacijama za sedenje grešaka, kao što su lokalizacija grešaka i predviđanje grešaka.


Ukratko, naš članak daje sledeće glavne doprinose:


• We investigate the applicability of LLMs in mutation testing. We perform extensive and detailed comparative experiments to evaluate LLMs against existing tools/methods. Our findings indicate that GPT models excel in generating mutations that closely mimic real bugs.


• Uspoređujemo različite pozivnice i otkrijemo da malo učenje s odgovarajućim kontekstom koda arhivira najbolje performanse.


• Analiziramo tipove grešaka ne-kompilabilnih mutacija i shvatimo da su invokacija metoda i procjena članova vjerojatnije da će dovesti do LLM-ova da generišu ne-kompilabilne mutacije.


Izgradimo visokokvalitetni skup podataka o Java mutacijama koji uključuju ručno analizirane ekvivalentne mutante.


Ovaj dokument je dostupan na arhivu pod licencom CC by 4.0 Deed (Attribution 4.0 International).

Ovaj dokument je dostupan na arhivu pod licencom CC by 4.0 Deed (Attribution 4.0 International).

Dostupno u Arhivu


L O A D I N G
. . . comments & more!

About Author

Mutation Technology Publications HackerNoon profile picture
Mutation Technology Publications@mutation
Mutation: process of changing in form or nature. We publish the best academic journals & first hand accounts of Mutation

HANG TAGS

OVAJ ČLANAK JE PREDSTAVLJEN U...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks