toplogo
Resources
Sign In

Erweiterung von Defects4J und BugsInPy um mehrfache Fehler in Programmen


Core Concepts
Durch die Verwendung von Testfall-Transplantation und Fehlerort-Übersetzung werden in den Datensätzen Defects4J und BugsInPy zusätzliche, bereits vorhandene Fehler in den Programmversionen identifiziert, um realistische Evaluations- und Trainingsdaten für Fehleranalyse-Tools bereitzustellen.
Abstract
Die Autoren erweitern die bestehenden Datensätze Defects4J und BugsInPy, die Fehler in Java- und Python-Programmen enthalten, um die Identifikation mehrfacher Fehler in einzelnen Programmversionen. Dafür verwenden sie zwei Hauptschritte: Testfall-Transplantation: Fehler-aufdeckende Testfälle aus späteren Programmversionen werden in frühere Versionen kopiert, um zusätzliche Fehler zu exponieren. Fehlerort-Übersetzung: Die Fehlerorte, die für die ursprünglichen Fehler identifiziert wurden, werden durch Rückverfolgung in den Versionsverlauf auf die Versionen mit mehreren Fehlern übertragen. Durch diese Erweiterung identifizieren die Autoren im Durchschnitt 9,2 Fehler in den 311 Versionen von 5 Projekten in Defects4J und 18,6 Fehler in 501 Versionen von 17 Projekten in BugsInPy. Die Identifikation der zusätzlichen Fehler erfordert im Durchschnitt 1-2 transplantierte Testfälle pro Fehler. Die so erweiterten Datensätze ermöglichen eine realistischere Evaluierung von Fehleranalyse- und Programm-Reparatur-Techniken, da sie die Existenz mehrfacher Fehler in Programmen berücksichtigen.
Stats
Die durchschnittliche Programm-Größe in Defects4J beträgt 133.981 Zeilen Code, mit 3.419 Testfällen pro Version. Die durchschnittliche Programm-Größe in BugsInPy beträgt 104.690 Zeilen Code, mit 6.667 Testfällen pro Version.
Quotes
"Datasets such as Defects4J and BugsInPy that contain bugs from real-world software projects are necessary for a realistic evaluation of automated debugging tools. However these datasets largely identify only a single bug in each entry, while real-world software projects (including those used in Defects4J and BugsInPy) typically contain multiple bugs at the same time." "We lift this limitation and describe an extension to these datasets in which multiple bugs are identified in individual entries."

Key Insights Distilled From

by Dylan Callag... at arxiv.org 03-29-2024

https://arxiv.org/pdf/2403.19171.pdf
Mining Bug Repositories for Multi-Fault Programs

Deeper Inquiries

Wie können die erweiterten Datensätze genutzt werden, um das Verständnis von Softwarefehlern und deren Lebenszyklus zu vertiefen?

Die erweiterten Datensätze, die multiple Fehler in Softwareprojektversionen identifizieren, bieten eine einzigartige Möglichkeit, das Verständnis von Softwarefehlern und deren Lebenszyklus zu vertiefen. Durch die Analyse dieser Datensätze können Forscher und Entwickler Einblicke in die Häufigkeit und Persistenz von Fehlern in Softwareprojekten gewinnen. Sie können den Lebenszyklus eines Fehlers verfolgen, von seiner Entdeckung über die Behebung bis hin zur Dauer seiner Existenz in verschiedenen Versionen. Dies ermöglicht es, Muster und Trends im Auftreten von Fehlern zu identifizieren und zu verstehen, wie sich Fehler im Laufe der Zeit verhalten. Darüber hinaus können die Datensätze verwendet werden, um die Wirksamkeit von Fehlerlokalisierungs- und Programmreparaturtechniken zu evaluieren und zu verbessern, indem sie realistische Szenarien mit multiplen Fehlern bereitstellen.

Welche Herausforderungen ergeben sich bei der Verwendung von Testfällen, die aus späteren Versionen stammen, für die Evaluierung von Programm-Reparatur-Techniken?

Die Verwendung von Testfällen aus späteren Versionen für die Evaluierung von Programm-Reparatur-Techniken kann aufgrund einiger Herausforderungen problematisch sein. Eine der Hauptprobleme besteht darin, dass die Testfälle aus späteren Versionen möglicherweise bereits das Wissen über die Fehlerbehebung enthalten, was zu einer Verzerrung der Ergebnisse führen kann. Dies kann die Fähigkeit von Programm-Reparatur-Techniken beeinträchtigen, da sie auf Informationen basieren, die in den Testfällen enthalten sind. Darüber hinaus kann die Verwendung von Testfällen aus späteren Versionen die Reproduzierbarkeit von Fehlern erschweren, da die Testfälle möglicherweise spezifisch auf die behobenen Fehler zugeschnitten sind und nicht unabhängig von ihnen getestet werden können. Es ist wichtig, diese Herausforderungen zu berücksichtigen und geeignete Maßnahmen zu ergreifen, um die Validität und Zuverlässigkeit der Evaluierung von Programm-Reparatur-Techniken sicherzustellen.

Inwiefern können die Erkenntnisse aus dieser Arbeit auf andere Programmiersprachen und Softwareprojekte übertragen werden?

Die Erkenntnisse aus dieser Arbeit sind auf andere Programmiersprachen und Softwareprojekte übertragbar, da die zugrunde liegenden Methoden und Techniken, die zur Identifizierung von multiplen Fehlern in Softwareprojektversionen verwendet werden, allgemein anwendbar sind. Die Testfalltransplantation und die Fehlerlokalisierungsübersetzung können auf verschiedene Programmiersprachen angewendet werden, um multi-fault Datensätze für unterschiedliche Softwareprojekte zu erstellen. Durch die Anpassung dieser Techniken an spezifische Sprachen und Projekte können Forscher und Entwickler ähnliche Datensätze erstellen, um die Effektivität von Fehlerlokalisierungs- und Programmreparaturtechniken in verschiedenen Kontexten zu untersuchen. Die Erkenntnisse aus dieser Arbeit liefern somit einen Rahmen für die Erweiterung und Anwendung auf eine Vielzahl von Softwareentwicklungsprojekten in verschiedenen Umgebungen.
0