Defects4J är en stor, peer-reviewed, strukturerad datauppsättning av verkliga Java buggar. Varje fel i Defects4J kommer med en testsvit och minst en misslyckad testfall som utlöser felet. I detta dokument rapporterar vi om ett experiment för att undersöka effektiviteten av automatisk test-suite baserad reparation på Defects4J. Resultatet av vårt experiment visar att de aktuella toppmoderna reparationsmetoderna kan generera patchar för 47 av 224 fel. Dessa plåster är dock endast lämpliga i testsviten, vilket innebär att de klarar testsviten och kan vara felaktiga utöver kriteriet om riktighet i testsviten. Vi har manuellt analyserat 84 olika patchar för att bedöma deras verkliga korrekthet. Totalt kan 9 riktiga Java buggar repareras korrekt med test-svit baserad reparation. Denna analys visar att testsuite baserad reparation lider av underspecificerade buggar, för vilka triviala eller felaktiga patchar fortfarande passerar testsviten. När det gäller praktisk tillämplighet tar det i genomsnitt 14,8 minuter att hitta ett plåster. Experimentet gjordes på ett vetenskapligt rutnät, totalt 17,6 dagar Kommunicerad av: Sunghun Kim Empir Software Eng (2017Eng ( ) 22:1936Eng ( -1964 RQ3. Vilka fel i Defects4j är underspecificerade? Ett fel sägs vara underspecificerat om det finns en trivial patch som helt enkelt tar bort funktionalitet. För dessa fel, nuvarande reparationsstrategier misslyckas med att syntetisera en korrekt patch på grund av bristen på testfall. Dessa fel är de mest utmanande felen: för att automatiskt reparera dem måste man resonera om den förväntade funktionaliteten under vad som kodas i testsviten, för att ta hänsyn till en annan informationskälla än utförandet av testsviten. Ett resultat av vårt experiment är att identifiera de utmanande buggarna. RQ4 ska användas. Hur lång tid tar genomförandet av varje reparationssystem? Svaret på denna fråga bidrar också till att bedöma den praktiska tillämpligheten av automatisk reparation på fältet. Vårt experiment behandlar 224 fel som är spridda över 231K rader kod och 12K test fall totalt. Vi körde experimentet i över 17,6 dagar av beräkningstid på Grid'5000 Bolze et al. (2006), ett storskaligt nät för vetenskapliga experiment. Våra bidrag är följande: Svar på RQ1. Datauppsättningen Defects4J innehåller fel som automatiskt kan repareras med minst ett av de system som beaktas. jGenProg, jKali och Nopol syntetiserar tillsammans test-suite lämpliga patchar för 47 av 224 buggar med 84 olika patchar. Vissa buggar repareras av alla tre anses reparation tillvägagångssätt (12/47). Dessa resultat bekräftar att automatisk reparation fungerar på riktiga buggar i stora Javaprogram 1. De kan ses som en baslinje för framtida användning av Defects4J i automatisk reparationsforskning. Svar till RQ2. Vår manuella analys av alla 84 genererade patchar visar att 11 /84 är korrekta, 61 /84 är felaktiga, och 12 /84 kräver en domän expertis, som vi inte har. De felaktiga patchar tenderar att överpassa testfallen. Detta är en ny bit av empiriska bevis på verkliga buggar att antingen de nuvarande testsviterna är för svaga eller de nuvarande automatiska reparationstekniker är för dumma.Dessa resultat stärker resultaten i Qi et al. (2015), om ett annat riktmärke, om ett annat programmeringsspråk. De visar att det översittande problemet upptäcktes på Genprogs riktmärke av Qi et al. (2015) är inte specifikt för riktmärket och dess svaghet, utan mer grundläggande. Svar till RQ3. Defects4J innehåller mycket svagt specificerade fel. Korrekt reparera dessa fel kan betraktas som nästa milstolpe för fältet. Detta resultat kräver radikalt ny automatisk reparation metod som skäl bortom test svit utförande, med hjälp av andra informationskällor, och för test svit generation tekniker skräddarsys för reparation. Svar på RQ4. Processen för att söka efter en patch är en fråga om minuter för en enda bugg. Detta är ett uppmuntrande bevis på att denna forskning kommer att få effekt för praktiker.
För Java, Martinez et al. REF rapporterade om ett anmärkningsvärt stort experiment, där tre reparationsverktyg utfördes på felen från Defects4J.
Automatic repair of real bugs in java: a large-scale experiment on the defects4j dataset
{'venue': 'Empirical Software Engineering', 'journal': 'Empirical Software Engineering', 'mag_field_of_study': ['Computer Science']}