Autorët :
(1) Bo Wang, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(2) Mingda Chen, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(3) Youfang Lin, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(4) Mike Papadakis, Universiteti i Luksemburgut, Luksemburg ([email protected]);
(5) Jie M. Zhang, King’s College London, Londër, Mbretëria e Bashkuar ([email protected]).
Authors:
(1) Bo Wang, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(2) Mingda Chen, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(3) Youfang Lin, Universiteti Jiaotong i Pekinit, Pekin, Kinë ([email protected]);
(4) Mike Papadakis, Universiteti i Luksemburgut, Luksemburg ([email protected]);
(5) Jie M. Zhang, King’s College London, Londër, Mbretëria e Bashkuar ([email protected]).
Tavolina e majtë
1 Hyrje2 Temat dhe punët e lidhura3 Study Design
3.1 Pyetje të përgjithshme dhe pyetje kërkimore
3.3 Gjenerimi i mutacioneve përmes LLMs
3.5 Përgatitja e eksperimenteve
4 Evaluation Results
4.1 RQ1: Performanca mbi koston dhe përdorshmërinë
4.2 RQ2: Ngjashmëria e sjelljes
4.3 RQ3: Efektet e Prompts të ndryshme
4.4 RQ4: Ndikimi i LLMs të ndryshme
RQ5: Shkaqet rrënjësore dhe llojet e gabimeve të mutacioneve jo-kompiluese
5 Discussion
5.1 Ndjeshmëria ndaj cilësimeve të eksperimentit të zgjedhur
5.3 Kërcënimet ndaj vlefshmërisë
6 Përfundimet dhe referencatabstraktë
Pyetja se si të gjenerohen mutacionet e të dhënave me vlerë të lartë, që do të përdoren për qëllime testimi, përbën një sfidë kyçe në literaturën e testimit të mutacioneve. Modelet e gjuhëve të mëdha (LLM) kanë treguar potencial të madh në detyrat e lidhura me kodin, por dobësia e tyre në testimin e mutacioneve mbetet e pashpjeguar. Për këtë qëllim, ne sistematikisht hetojmë performancën e LLM-ve në gjenerimin e mutacioneve efektive në krahasim me qasjet e tyre ekzistuese, potencialin e zbulimit të defekteve dhe marrëdhënien me gabimet e vërteta. Në veçanti, ne kryejmë një studim në shkallë të gjerë empirik që përfshin 4 LLM-të, duke përfshirë modelet me burim
1 Hyrje
Testimi i mutacionit është një nga teknikat më efektive të testimit të softuerit [17, 18, 27, 33, 59]. Ajo kryhet duke prodhuar variante të programeve duke bërë ndryshime të thjeshta sintactike (p.sh., mutacione) në kodin burimor të programit origjinal (p.sh., mutantët). Këto variante formojnë objektivat e testimit, në një kuptim që kërkon teste për të shkaktuar sjellje të ndryshme në programin origjinal dhe mutant. Një mutant quhet i vrarë ose i gjallë në varësi nëse ekzekutimi i testit çon në një prodhim të ndryshëm të programit (mbajtje të vëzhgueshme) nga ai i programit origjinal apo jo. Përqindja e mutantëve të vrarë mbi të gjithë grupin e mutantëve formohet një
Meqenëse mutacionet janë objektivat e testimit, efikasiteti i metodës varet fuqishëm nga grupi i mutantëve që përdoret.Tehnikat tradicionale përdorin transformime të thjeshta sintactike (rregulla), të quajtura operatorë mutacioni, të cilët sjellin ndryshime sintactike në çdo vendndodhje të kodit që aplikojnë [33, 59]. Ne i quajmë këto qasje si qasje të bazuara në rregulla.
Për fat të keq, qasjet e bazuara në rregulla prodhojnë një numër të madh të mutantëve të tepërt, d.m.th. mutantë që nuk kontribuojnë në procesin e testimit [5, 57] dhe kështu përkeqësojnë mbivlerësimet kompjuterike të metodës si dhe përpjekjet njerëzore të përfshira në ekzaminimin e mutantëve të gjallë. Për të adresuar këtë problem, hulumtuesit shfrytëzojnë qasjet e të mësuarit të thellë për të formuar operatorët e mutacioneve bazuar në historinë e projektit [62, 70, 73], me shpresën se këto do të prodhojnë pak por mutacione efektive.
Megjithatë, pyetja se cilat mutacione duhet të përdoren kur kryejnë testimin e mutacioneve mbetet e hapur për shkak të sfidave të mëposhtme: (1) Formimi i mutacioneve efektive. Për të qenë efektive, mutacionet duhet të jenë sintatikisht korrekte, e cila nuk është rasti i shumicës së metodave ekzistuese të bazuara në mësim, dhe të jenë të mundshme të zbulojnë gabimet [10, 80], dmth, kanë një potencial të mirë për t'u çiftuar me defekte të vërteta. Ndërsa metodat ekzistuese janë efektive, ka ende hapësirë të konsiderueshme për përmirësim [15]. (2) Formimi i mutacioneve natyrore. Mutacionet duhet të jenë në përputhje me modelet dhe praktikat natyrore të kodimit të vëzhguara midis zhvilluesve
Për t'u marrë me këto sfida, ne synojmë të përdorim Modelet e Gjuhës së Madhe (LLMs), të cilat janë trajnuar në kodin e madh dhe mund të prodhojnë kodin e ngjashëm me njeriun [11]. Pas studimeve ekzistuese [26, 49, 65], ne projektuam një këshillë default që përmban udhëzime detyre, elementin e kodit që duhet të mutohet, kodin korrespondues të metodës, dhe disa shembuj të nxjerrë nga gabimet e botës reale. Ne kryem një vlerësim në shkallë të gjerë duke përfshirë 4 LLMs, 2 komercial me burim të mbyllur dhe 2 të burimeve të hapura, 440 gabime të botës reale nga dy benchmarks Java, dmth, Defects4J [37] dhe ConDef
Vlerësimi ynë përfshin të dy analizat kuantitative dhe cilësore për mutacionet e gjeneruara nga LLMs, duke i krahasuar ato me qasjet ekzistuese për të vlerësuar koston dhe efektivitetin e tyre. Përveç kësaj, ne studiojmë se si strategjitë e ndryshme të inxhinierisë së menjëhershme dhe LLMs (p.sh., GPT-3.5-Turbo [4], GPT-4-Turbo, CodeLlama-13bInstruct [64], dhe StarChat-β-16b [45]) ndikojnë në efektivitetin e detyrës.
Rezultatet tona zbulojnë se modeli më i mirë për gjenerimin e mutantëve është GPT-4, pasi ai i tejkalon LLM-të e tjerë në të gjitha metrikat e përdorura, dmth prodhon më pak mutantë ekuivalentë, mutantë me potencial më të lartë të zbulimit të defekteve, si dhe lidhje më të lartë dhe ngjashmëri semantike me defekte të vërteta. GPT-3.5 është i dyti më i mirë në aspektin e potencialit të zbulimit të defekteve, duke çuar në një zbulim të 96.7% të bugs në Defects4J dhe 86.7% në ConDefects. Nga pjesa tjetër e teknikave, Major është më i miri, me potencialin për të zbuluar 91.6% të bugs në Defects4J dhe 68.9% në ConD
Një tjetër gjetje interesante e analizës sonë ka të bëjë me shumëllojshmërinë e mutantëve (të matur në aspektin e llojeve të reja të nodes AST). në veçanti, rezultatet tona tregojnë se GPT-të tregojnë diversitetin më të madh, duke futur 45 lloje të ndryshme të nodes AST, në krahasim me vetëm 2 të përdorura nga qasjet tradicionale të tilla si Majori, dhe duke përmbledhur të gjitha qasjet ekzistuese, duke treguar një kontekstualizim shumë më të mirë të qasjes së bazuar në LLM.
Ne gjithashtu analizuam mutacionet e gjeneruara nga GPT që dështojnë të kompilojnë, një problem i zakonshëm me mutacionet e bazuara në të mësuarit, dhe gjetëm se ata bien në 9 llojet e gabimeve të kompilimit me përdorimin e metodave të panjohura dhe llojet e shkatërrimit strukturor të kodit që janë më të përhapura.
Ne e mbështollëm metodën tonë në një mjet mutacioni të quajturKumo, një mjet i gjenerimit të mutacioneve të bazuar në LLM për Java. Bazuar në të dhënat eksperimentale, ne gjithashtu kemi ndërtuar një grup të dhënash që përmban mutacione me cilësi të lartë të gjeneruara nga LLM që mund të përdoren jo vetëm në testimin e mutacioneve, por edhe në aplikacione të tjera të mbjelljes së gabimeve, të tilla si lokalizimi i defekteve dhe parashikimi i defekteve.
Në përmbledhje, raporti ynë bën kontributet kryesore të mëposhtme:
• Ne hetojmë zbatueshmërinë e LLM-ve në testimin e mutacioneve. Ne kryejmë eksperimente të gjera dhe të detajuara krahasuese për të vlerësuar LLM-të kundër mjeteve / metodave ekzistuese. gjetjet tona tregojnë se modelet GPT shkëlqejnë në gjenerimin e mutacioneve që imitojnë ngushtë gabimet e vërteta.
• Ne krahasojmë këshilla të ndryshme, dhe të gjeni se pak-shot të mësuarit me kontekst të përshtatshëm të kodit arkivon performancën më të mirë.
• Ne analizojmë llojet e gabimeve të mutacioneve jo kompjuterike dhe kuptojmë se thirrja e metodës dhe vlerësimi i anëtarëve kanë më shumë gjasa të çojnë LLM-të në gjenerimin e mutacioneve jo kompjuterike.
• Ne ndërtojmë një grup të dhënash me cilësi të lartë të mutacioneve Java që përfshin mutantët ekuivalentë të analizuar manualisht.
Ky dokument është në dispozicion në arkiv nën licencën CC by 4.0 Deed (Attribution 4.0 International).
Ky dokument është në dispozicion në arkiv nën licencën CC by 4.0 Deed (Attribution 4.0 International).
Në dispozicion në arkiv