FPA-Debug: Effective Statistical Fault Localization Considering Fault-proneness Analysis
其目的是识别出对程序失败有很大影响的错误谓词。统计调试技术是查明程序源代码中缺陷的最佳方法之一。然而,它们有一些缺点。它们需要大量的执行来识别错误,它们可能会受到巧合正确性的不利影响,并且它们在构建行为模型时不考虑与程序代码的不同部分相关的错误倾向。此外,它们没有考虑谓词对程序终止状态的同时影响。针对上述问题,本文提出了一种基于弹性网络回归的故障倾向性感知方法,即FPA-SVM。FPA-RESISTANCE采用基于聚类的策略来减轻故障定位中的巧合正确性,并找到被称为错误预测器的程序谓词的最小有效子集。此外,该方法通过根据程序谓词在程序源代码中的位置对每个程序谓词应用不同的正则化参数来考虑统计建模过程中代码的易出错性。在著名的西门子测试套件上的实验结果表明了该方法的有效性和准确性。
2016-12-17 cs.SE
An Anatomy of 488 Faults from Defects4J Based on the Control- and Data-Flow Graph Representations of Programs
本文提出基于程序控制流和数据流图表示的直接故障分类方案,包含六个控制流和两个数据流故障类,并手动应用于Defects4J的488个故障,发现定义故障最常见但多数故障涉及控制流,可改进故障定位与自动化修复技术。
2025-04-28 cs.SE
Debugging Tool for Localizing Faulty Processes in Message Passing Programs
在消息传递程序中,一旦进程因意外错误而终止,终止的进程可以通过通信依赖性将错误传播到其余进程,从而导致程序失败。因此,为了定位故障,开发人员必须识别原始错误中涉及的进程组和激活故障的故障进程。本文提出了一种新的调试工具,命名为MPI-Prejugger(MPI-PD),定位错误的消息传递程序的进程。MPI-PD通过检查程序执行期间的通信错误来自动区分原始错误和传播错误。如果MPI-PD观察到任何通信错误,它会回溯通信依赖关系,并在时间轴视图中指出潜在的故障流程。我们还介绍了三个案例研究,其中MPI-PD已被证明在其调试中发挥关键作用。从这些研究中,我们相信MPI-PD可以帮助开发人员定位错误,并允许他们集中精力纠正他们的程序。
2003-10-09 cs.SE
DeepDiagnosis: Automatically Diagnosing Faults and Recommending Actionable Fixes in Deep Learning Programs
Iowa State University(爱荷华州立大学)
深度神经网络(DNN)被用于各种各样的应用中。然而,与任何软件应用程序一样,基于DNN的应用程序也存在漏洞。以前的工作观察到DNN错误修复模式与传统的错误修复模式不同。此外,这些有缺陷的模型是不平凡的诊断和修复,由于不明确的错误,有几个选项来修复它们。为了支持开发人员定位和修复错误,我们提出了DeepDiagnosis,这是一种新的调试方法,可以定位故障,报告错误症状并为DNN程序提供修复建议。在第一阶段,我们的技术监控训练模型,定期检查八种类型的错误条件。然后,在出现问题的情况下,它会报告包含足够信息的消息,以对模型执行可操作的修复。在评估中,我们彻底检查了444个模型-53个来自GitHub和Stack Overflow的真实世界,391个由AUTOTRAINER策划。与UMLUAT和DeepLocalize相比,DeepDiagnosis提供了更高的准确性。我们的技术比AUTOTRAINER更快的故障定位。结果表明,我们的方法可以支持其他类型的模型,而最先进的只能处理分类的。我们的技术能够报告在训练过程中不表现为数值错误的错误。此外,它可以为修复提供可操作的见解,而DeepLocalize只能报告在训练期间导致数值错误的错误。与其他方法相比,DeepDiagnosis表现出故障检测,错误定位和症状识别的最佳功能。
2021-12-07 cs.LG cs.SE
Evaluation-Strategy Gap in Fault Diagnosis of Deep Learning Programs
Sigma Jahan(西格玛·贾汗)
针对深度学习程序训练故障诊断技术,发现程序内交叉验证与留出完整程序评估间存在0.190的平衡准确率差距,归因于特征的程序级结构,并分析了曲率特征和优化器特征在不同程序上的表现。
2026-06-26 cs.AI cs.LG cs.SE
Can Automated Program Repair Refine Fault Localization?
软件缺陷在现代软件系统中普遍存在,并且众所周知难以手动调试。因此,大量的研究工作一直致力于自动化软件调试,包括自动故障定位和程序修复。然而,现有的故障定位技术通常是无效的,即使是最先进的程序修复技术,也只能修复一小部分真实世界的错误。虽然故障定位和程序修复是内在联系的,但我们观察到,在文献中,它们唯一的联系是程序修复技术通常使用现成的故障定位技术(例如,Ochiai)来确定用于修补的潜在候选语句/元素。在这项工作中,我们探索他们在另一个方向的联系,即,程序修复是否反过来有助于故障定位?通过这种方式,我们不仅为更强大的故障定位开辟了一个新的维度,而且将程序修复的应用范围扩展到所有可能的错误(而不仅仅是可以直接自动修复的错误)。我们设计了ProFL,一种简单的方法,使用补丁执行结果(来自程序修复)作为故障定位的反馈信息。在广泛使用的Defects 4J基准上的实验结果表明,基本的ProFL已经可以在Top-1内定位395个研究错误中的161个,而最先进的基于频谱和突变的故障定位技术最多在Top-1内定位117个。我们还证明了ProFL在不同设置下的有效性。最后,我们表明,ProFL可以通过无监督和监督学习进一步提高最先进的故障定位。
2019-10-03 cs.SE
Themis: Automatic and Efficient Deep Learning System Testing with Strong Fault Detection Capability
针对深度学习系统测试需手动指定神经元激活值、故障检测率低的问题,提出自动测试系统Themis,通过自动挖掘扰动下神经元输出变化显著的致错数据流实现高覆盖检测,实验证明其故障检出量和重训练后的准确率提升均大幅优于现有方法。
2024-08-16 cs.SE
FPA-FL: Incorporating Static Fault-proneness Analysis into Statistical Fault Localization
尽管在自动故障定位的统计方法的适用性证明,这些方法是有偏见的程序的不同执行收集的数据。这种偏倚可能导致不稳定的统计模型,该模型可能会因程序试验执行所提供的测试数据而异。针对这一问题,本文提出了一种基于弹性网络回归的故障倾向性统计方法,即FPA-FL。FPA-FL的主要思想是考虑程序语句的静态结构和错误倾向,以及它们与程序终止状态的动态相关性。FPA-FL的分组效应有助于发现多个故障并支持可扩展性。为了提供失败的上下文,程序故障的因果链被发现。FPA-FL是从不同的角度对著名的测试套件进行评估。结果表明,高故障定位性能,我们的方法相比,在文献中的类似技术。
2017-12-09 cs.SE
Searching for Multi-Fault Programs in Defects4J
Defects4J自引入以来已经实现了许多软件测试和调试研究工作。其贡献的很大一部分,以及由此产生的流行程度,在于基于仔细的手动分析,明确分离和提炼每个单独测试失败的根本原因,这反过来又使研究人员能够轻松地孤立地研究单个故障。然而,在实际的调试场景中,多个故障可能共存并共同影响测试结果。自动调试技术的研究,这些情况下,如故障集群或故障定位多个故障,将显着受益于一个可靠的基准多个共存的故障。我们搜索包含多个故障的Defects4J主题的版本,通过迭代地移植故障揭示测试用例跨越Defects4J版本。在326个研究版本的Defects4J主题,我们报告说,超过95%(311个版本)实际上包含从两个到24个故障。我们希望扩展后的多故障Defects4J可以为将来多故障程序的测试和调试技术的研究提供一个平台。
2021-08-10 cs.SE
Exception-Driven Fault Localization for Automated Program Repair
自动程序修复(APR)技术通常利用基于频谱的故障定位(SBFL)来识别应当被修补的程序位置,使得APR技术的有效性取决于故障定位的有效性。事实上,结果表明,SBFL往往不本地化故障准确,阻碍了有效性的APR。在本文中,我们提出了EXCEPT,一种技术,解决本地化问题,专注于语义的失败,而不是执行语句和失败的测试之间的相关性,SBFL。我们专注于故障由于异常,我们利用他们的类型和来源定位和猜测故障。对Defects4J基准测试中的43个异常引发错误的实验表明,EXCEPT的性能优于Ochiai和ssFix。
2022-01-03 cs.SE
Evaluating Mutation-based Fault Localization for Quantum Programs
本文评估 MBFL 在 Qiskit 量子程序调试中的效果,通过真实与人工故障实验表明其潜力及在真实故障上的局限。
2025-05-14 cs.SE
Fault Localization in Multi-Threaded C Programs using Bounded Model Checking (extended version)
软件调试是一个非常耗时的过程,对于多线程程序来说,由于线程调度算法的不确定性行为,这一过程甚至更糟。然而,如果使用自动方法来定位故障,则可以大大减少调试时间。在这项研究中,提出了一种新的方法,故障定位,在多线程的C程序。它将多线程程序转换为相应的顺序程序,然后使用适合于这类程序的故障诊断方法,以定位故障。代码转换是用来自反例的规则和上下文切换信息实现的,反例通常由有界模型检查器生成。实验结果表明,该方法是有效的,在这样一种方式,顺序故障定位方法可以扩展到多线程程序。
2015-09-08 cs.LO cs.SE
Inforence: Effective Fault Localization Based on Information-Theoretic Analysis and Statistical Causal Inference
在本文中,一种新的方法,Inforence,提出了隔离可疑的代码,可能包含故障。Inforence采用了一种基于互信息的特征选择方法,以识别那些可能导致程序失败的错误相关语句。由于大多数程序故障可能会被揭示为不希望的联合效果的程序语句对彼此和程序终止状态,不像国家的最先进的方法,信息试图识别和选择组相互依赖的语句,这完全可能影响程序故障。语句之间的相互依赖性是根据它们对彼此和对程序终止状态的相互影响来衡量的。为了提供失败的上下文,考虑到程序的静态结构,所选择的错误相关语句彼此链接。最后,所产生的因果链排名根据其组合的因果关系对程序失败。为了验证Inforence,我们的实验结果与七套程序,包括西门子套件,gzip,grep,sed,空间,使和bash。实验结果进行了比较,提供了不同的故障定位技术的单故障和多故障程序。实验结果证明了所提出的方法相比,国家的最先进的技术的优越性。
2017-12-09 cs.SE
ArChes -- Automatic generation of component fault trees from continuous function charts
嵌入式系统中软件的规模和复杂性的不断增长对嵌入式控制系统的安全评估提出了新的挑战。在工业实践中,在对系统进行安全性分析时,控制软件大多被当作黑箱来处理。为了提高安全分析的准确性,软件故障传播的适当表示是一个迫切的需要。然而,它也大大增加了创建和维护安全分析模型(如故障树)的工作量。在这项工作中,我们提出了一种方法来自动生成组件故障树从连续功能图。该方法旨在生成详细软件规格说明的故障传播模型。因此,可以将控制软件纳入安全性分析中,而无需额外的手动工作来构建软件的安全性分析模型。此外,在早期系统规范阶段创建的安全分析可以通过将其与详细规范阶段自动生成的安全分析进行比较来验证。
2021-05-31 cs.SE
Reproducing Failures in Fault Signatures
本文提出从故障位置和源代码生成故障签名,在小型可执行程序中重现故障,实验表明该方法可降低复杂度并生成原始程序无法生成的故障输入。
2023-09-20 cs.SE
An Empirical Study on Failed Error Propagation in Java Programs with Real Faults
在测试过程中,开发人员可以在方法的外部或内部放置Oracle。给定错误的执行状态,即,一个与预期的错误不同的错误,如果它被放置在不能访问不正确的程序状态或程序状态不再被破坏的程序点处,则Oracle可能无法暴露该错误。在这种情况下,oracle会受到失败的错误传播的影响。我们进行了一项实证研究,以衡量失败的错误传播缺陷4J,参考基准的Java程序与真正的故障,考虑所有6个项目(386个真正的错误和459个固定的方法)。我们的研究结果表明,失败的错误传播的流行是可以忽略不计的测试时,在单元级。然而,当提供系统级输入时,失败的错误传播的发生率大幅增加。这表明,方法后置条件仅根据外部可观察状态/数据进行预测就足够了,并且在系统级测试时应检查中间步骤。
2020-11-21 cs.SE
Data Poisoning: Lightweight Soft Fault Injection for Python
本文介绍并探讨了数据投毒的思想,这是一种轻量级的对等体系结构技术,用于将错误注入Python程序。这种方法只需要对原始程序进行很小的修改,这有助于评估在Python中原型化或建模的系统的灵敏度。我们提出了不同的故障情况下,可以注入程序使用数据投毒。我们使用Dijkstra的自稳定环算法来说明这种方法。
2016-11-04 cs.SE
CharmFL: A Fault Localization Tool for Python
故障定位是软件调试中最耗时、最容易出错的部分之一。有几种工具可以帮助开发人员进行故障定位过程,但是,它们主要针对用Java和C/C++程序设计语言编写的程序。虽然这些工具本身就很出色,但我们不能忽视Python是一种流行的程序设计语言的事实,仍然缺乏易于使用和方便的Python开发人员故障定位工具。在本文中,我们提出了一个名为“CharmFL”的软件故障定位工具作为PyCharm IDE的插件。该工具采用基于频谱的故障定位(SBFL)来帮助Python开发人员自动分析他们的程序,并在运行时生成有用的数据,然后生成潜在故障程序元素的排名列表(即,语句、函数和类)。因此,我们提出的工具支持不同的代码覆盖类型的可能性,以调查这些类型的分层方法。我们的工具的适用性已通过使用一组实验用例。结果表明,我们的工具可以帮助开发人员有效地找到不同类型的错误在他们的程序中的位置。
2021-08-27 cs.SE
Path Conditions Help to Locate and Localize Faults from Programs
准确、自动地检测程序中的错误,是软件工程的梦想。在这方面的每一次努力都使我们离实现这一目标更近了一步。这些地区的人们在测试、验证和调试方面付出了许多努力。我们正在为这个领域的研究社区提出这样的努力是使用路径条件来生成PLOFC(可能的错误代码行)的最小集合。这是一种运行时间方法,它将通过路径条件和一些相关的算法的帮助,有效地产生最小可能的错误代码行集。在本文中,我们产生可能的故障位置,从程序使用路径条件,可以把积极的影响,程序的静态分析。在此基础上,我们讨论了关于路径条件的基本思想、理论和初步分析结果。这项工作是基于以前的工作,使用的变量依赖故障检测。最后给出了一些应用实例,对软件验证有一定的参考价值。
2013-08-12 cs.SE
Error Propagation Analysis for Multithreaded Programs: An Empirical Approach
本文提出不变量传播分析(IPA)替代黄金轨迹,用于多线程程序的错误传播分析,实验表明其稳定且故障覆盖率可高于传统单线程EPA。
2023-12-28 cs.DC cs.SE
An Empirical Study of Fault Localization in Python Programs
本文首次对真实 Python 程序开展多系列大规模故障定位实证研究,基于 BugsInPy 的 135 个故障评估七类技术,并通过 FauxPy 工具复现和比较 Java 相关结论。
2024-03-20 cs.SE
Metamorphic Relation Prioritization for Effective Regression Testing
Montana State University(蒙大拿州立大学);University of North Florida(北佛罗里达大学)
变形测试(MT)被广泛用于测试面临预言机问题的程序。它使用一组变形关系(MR),这是多个输入之间的关系,并相应的输出,以确定是否被测程序是错误的。典型地,MR在它们检测被测程序中的故障的能力方面变化,并且一些MR倾向于检测相同的故障集合。在本文中,我们提出了优先考虑MR的方法,以提高回归测试的MT的效率和有效性。我们提出了两种MR优先级排序方法:(1)基于故障和(2)基于覆盖率。为了评估这些MR优先化方法,我们在三个复杂的开源软件系统上进行实验。我们的研究结果表明,我们开发的MR优先级的方法显着优于目前的做法,执行的源和后续测试用例的MR在一个特设的方式在故障检测的有效性。此外,基于故障的MR优先化导致减少需要执行的源和后续测试用例的数量,以及减少检测故障所花费的平均时间,这将导致在测试过程期间节省时间和成本。
2021-09-20 cs.LG cs.SE
Critical Review of BugSwarm for Fault Localization and Program Repair
基准测试在评估解决方案的效率和有效性以自动化软件开发生命周期的几个阶段方面发挥着重要作用。此外,如果设计得好,它们也可以作为一个重要的人工制品来比较不同的方法。BugSwarm是最近发布的一个基准测试,其中包含3,091对失败和通过的持续集成构建。根据作者的说法,基准测试的设计考虑到了自动程序修复和故障定位社区。鉴于针对这些社区的基准应该具有几个特征(例如,一个错误的声明需要存在),我们已经剖析了基准,以充分了解基准是否适合这些社区。我们的批判性分析发现,在基准测试中有几个限制:只有112/3,091(3.6%)适合评估自动故障定位或程序修复技术。
2019-05-22 cs.SE
Learning Tractable Probabilistic Models for Fault Localization
University of Washington(华盛顿大学)
近年来,一些概率技术已被应用于各种调试问题。然而,大多数现有的概率调试系统使用相对简单的统计模型,并未能推广到多个程序。在这项工作中,我们提出了可处理的故障定位模型(TFLMs),可以从数据中学习,并概率地推断错误的位置。虽然大多数以前的统计调试方法都是在单个程序的多次执行上进行推广,但TFLM是在以前看到的错误程序的语料库上进行训练的,并学会识别错误的重复模式。广泛使用的故障定位技术,如TARANTALY评估孤立的每条线路的可疑性;相比之下,TFLM定义了每条线路的故障指标变量的联合概率分布。具有丰富依赖结构的联合分布通常在计算上是难以处理的; TFLM通过利用易处理的概率模型(特别是关系SPN)的最新发展来避免这一点。此外,TFLM还可以包含其他信息源,包括基于覆盖范围的功能,如TARANTTM。我们评估故障定位性能的TFLM,包括TARANTHALDS分数的概率模型中的功能。我们的研究表明,学习TFLM隔离错误更有效地比以前的统计方法或直接使用TARANTFLOW。
2015-07-07 cs.LG cs.SE
ConDefects: A New Dataset to Address the Data Leakage Concern for LLM-based Fault Localization and Program Repair
Beijing University of Chemical Technology(北京化工大学)
针对LLM错误定位与程序修复中数据泄露问题,提出新数据集ConDefects,含2021-2023年AtCoder的Java/Python真实错误程序,并配对错误位置与修复版本,以支持更可靠的基准测试。
2023-10-25 cs.AI cs.SE
Improved Detection and Diagnosis of Faults in Deep Neural Networks Using Hierarchical and Explainable Classification
提出DEFault技术,结合动态与静态特征及层次化分类和可解释AI,检测并诊断DNN程序故障,在14.5K程序上训练,召回率达94%和63%,优于现有方法。
2025-01-22 cs.SE
Efficient Symbolic Execution of Software under Fault Attacks
University of Southern California(南加州大学);Purdue University(普渡大学)
本文提出了一种高效准确的符号执行方法,用于分析软件在故障攻击下的安全性,通过改进的故障建模和符号执行算法,提升了分析效率和准确性。
2026-04-24 cs.PL cs.SE
Large Language Models for Test-Free Fault Localization
Carnegie Mellon University(卡内基梅隆大学)
本研究针对传统故障定位依赖测试用例的问题,提出在大语言模型上添加双向适配器层的LLMAO方法,无需测试覆盖信息即可行级定位缺陷,在Defects4J等数据集上性能随模型规模提升,显著优于现有MLFL基准,还可实现行级安全漏洞检测。
2023-10-03 cs.LG cs.SE
Program Spectra Analysis in Embedded Software: A Case Study
由于市场的限制,消费电子产品中的嵌入式软件几乎不可避免地带有故障,目标只是在产品发布之前将固有的不可靠性降低到可接受的水平。自动故障诊断是一种有价值的工具,可以捕获软件故障,而无需花费额外的精力进行测试。除了在设计和集成时的调试辅助之外,故障诊断还可以帮助分析操作期间的问题,从而实现更准确的系统恢复。在本文中,我们将讨论应用一个特定的故障诊断技术,即程序谱分析,在消费电子设备的嵌入式软件领域的前景和局限性。我们说明了我们的第一次经验,从行业的测试案例。
2006-07-26 cs.SE
SmartFL: Semantics Based Probabilistic Fault Localization
本文提出SmartFL,一种基于语义的概率故障定位方法,通过仅建模程序值的正确性而非完整语义,在有效性和可扩展性间取得平衡,在Defects4J 2.0上比现有SBFL和MBFL方法提升130%且时间减半。
2025-04-03 cs.SE
Exploring the Potential and Limitations of Large Language Models for Novice Program Fault Localization
College of Information Science and Technology, Beijing University of Chemical Technology(北京化工大学信息科学与技术学院);College of Information Engineering, Beijing Institute of Petrochemical Technology(北京石油化工学院信息工程学院);School of Artificial Intelligence and Computer Science, Nantong University(南通大学人工智能与计算机科学学院)
本文评估了LLM在初级程序员故障定位中的性能,发现高级模型在准确性上表现优异,但存在推理过度和计算成本高等问题。
2025-12-03 cs.SE
FaultLens: Learning Compact Behavioral Test Suites for Generated Operational Programs
FaultLens是一种学习紧凑行为测试套件的方法,通过混合故障驱动贪心组件与多样性组件,在低计算成本下实现高故障覆盖率,可降低尾部回归风险。
2026-09-11 cs.AI cs.SE
Automatic Failure Explanation in CPS Models
信息物理系统(CPS)模型可能非常复杂。事实上,仅仅检测到一个故障是不足以知道如何纠正一个错误的模型。故障可以在时间和空间上传播,在与故障位置完全不同的位置产生可观察到的异常行为。理解观察到的故障的原因通常是留给设计者的经验和领域知识的具有挑战性和费力的任务。\n在本文中,我们提出了CPSstroke,一种新的方法,通过结合测试,规格挖掘,和故障分析,可以自动解释故障的Simulink/Stateflow模型。我们评估两个案例研究,涉及两个使用场景和几类故障,展示了我们的方法的潜在价值。
2019-03-29 cs.LO cs.SE
Towards Fault Localization via Probabilistic Software Modeling
软件测试帮助开发人员识别bug。然而,意识到bug只是第一步。找到并纠正错误的程序组件对于高质量的软件来说同样困难和必要。错误定位自动地精确定位程序中现有的错误。这是一个难题,现有的方法还不够精确,无法在工业上广泛采用。我们建议通过概率软件建模(PSM)的故障定位。PSM分析程序的结构和行为,并综合概率模型(PM)的网络。每个PM用它的输入和输出对方法进行建模,并且能够评估运行时数据的可能性。我们使用这种可能性评估,以找到故障位置及其对相关代码元素的影响。结果表明,PSM是一个强大的框架,准确的故障定位。
2020-03-04 cs.SE
An Empirical Study on Tensor Shape Faults in Deep Learning Systems
软件开发人员经常采用深度学习(DL)库来将学习解决方案纳入软件系统。然而,误用这些库会导致各种DL故障。其中,张量断层最为普遍。当操作的约束条件不满足时,张量形状故障发生,导致许多系统崩溃。为了支持这些故障的有效检测和修复,我们进行了实证研究,以获得深刻的见解。我们构建了SFData,这是一组146个有缺陷的程序,具有崩溃的张量形状故障(即,导致程序崩溃)。通过对SFData中的故障进行分析,将其分为四类,并得到了一些有价值的结论。
2021-06-05 cs.SE
CFaults: Model-Based Diagnosis for Fault Localization in C Programs with Multiple Test Cases
INESC-ID, IST, Universidade de Lisboa, Portugal(葡萄牙里斯本大学、IST、INESC-ID)
针对现有基于公式的故障定位方法存在多测试下诊断不一致、易生成冗余结果的问题,本文提出CFaults方法,结合多观测MBD与统一MaxSAT公式实现多故障C程序定位,实验证明其速度更快且仅生成子集最小诊断。
2025-09-05 cs.AI cs.LO cs.SE
Mining Bug Repositories for Multi-Fault Programs
针对 Defects4J 与 BugsInPy 多为单缺陷条目的局限,本文利用测试用例移植和故障位置转换构建保留原数据集特性的真实多故障程序数据集。
2024-04-10 cs.SE
A Note About: Critical Review of BugSwarm for Fault Localization and Program Repair
数据集在软件工具的进步中发挥着重要作用,并有助于对其进行评估。BugSwarm是一个基础设施,用于自动创建真实世界可重现故障和修复的大型数据集。在本文中,我们回应Durieux和Abreu对BugSwarm数据集的批判性评论,本文中称为CriticalReview。我们复制了CriticalReview的研究,并发现了关于BugSwarm数据集的几个不正确的说法和假设。我们讨论这些不正确的索赔和CriticalReview列出的其他贡献。最后,我们讨论了关于BugSwarm的一般误解,以及我们对基础设施和数据集使用的愿景。
2019-10-29 cs.SE
IBIR: Bug Report driven Fault Injection
软件工程和软件测试的许多研究依赖于基于故障注入的实验研究。然而,故障注入并不经常与模拟真实世界的软件故障相关,因为它“盲目地”注入大量的故障。它仍然确实具有挑战性,注入少数但现实的故障,目标是一个特定的功能,在一个程序。在这项工作中,我们引入IBIR,故障注入工具,通过探索与用户报告的故障相关的变化模式来解决这一挑战。为了注入真实的错误,我们通过重定向错误报告驱动的自动程序修复系统来创建突变体,即,反转其代码转换模板。IBIR在实践中更有吸引力,因为它既不需要深入了解代码也不需要深入了解测试,而只需要了解程序的相关错误报告。因此,我们的方法将故障注入的重点放在功能的缺陷报告。我们通过考虑Defects4J数据集来评估IBIR。实验结果表明,我们的方法优于传统的突变测试进行的故障注入与原始错误的语义相似性,当应用在系统或类级别的粒度,并提供更好的,统计上显着的,测试有效性(故障检测)的估计。此外,当注入100个错误时,IBIR在36%的情况下注入与真实错误耦合的错误,而突变测试中的突变注入不到1%。总的来说,IBIR的目标是真正的功能,并注入现实和多样化的故障。
2020-12-11 cs.SE
Assessing and Comparing Mutation-based Fault Localization Techniques
最近的研究表明,基于突变的故障定位技术是相对准确和实用的。然而,这些方法从未被比较过,并且仅用简单的手动播种故障进行评估。因此,当涉及到实际故障时,它们的实际实用性是值得怀疑的。为了解决这个问题,我们评估和比较两个主要的基于突变的故障定位方法,名为Metallaxis和MUSE,在一组现实世界的程序和故障。我们的结果基于三个典型的评估指标表明,基于突变的故障定位方法是相对准确的,并提供相关的信息,开发人员。总的来说,我们的结果表明,Metallaxis和MUSE需要18%和37%的程序语句来查找查找故障。此外,当开发人员检查10个和25个语句时,这两种方法都可以定位50%和80%的研究错误。
2016-07-19 cs.SE
Automated Fixing of Programs with Contracts
本文介绍了AutoFix,一种自动调试技术,可以修复通用软件中的错误。为了提供高质量的修复建议并实现整个调试过程的自动化,AutoFix依赖于以契约形式存在的简单规范元素(例如前置条件和后置条件)。使用契约增强了用于故障检测和定位以及验证修复的动态分析技术的精度。AutoFix支持工具唯一需要的用户输入是一个带有合同注释的错误程序;该工具根据其适用性的估计为故障生成一个经过验证的修复集合。在一个广泛的实验评估中,我们将AutoFix应用于不同成熟度和质量(实现和合同)的四个代码库中的200多个错误。AutoFix成功地修复了42%的错误,在大多数情况下,产生的纠正质量与合格的程序员编写的质量相当;使用的计算资源是适度的,在商品硬件上每次修复的平均时间低于20分钟。这些数字与自动化程序修复的最新技术水平相比毫不逊色,并证明了AutoFix方法可以成功地应用于减少现实世界场景中的调试负担。
2014-04-25 cs.SE
Improving Fault Localization by Integrating Value and Predicate Based Causal Inference Techniques
统计故障定位(SFL)技术使用来自软件执行的执行简档和成功/失败信息,结合统计推断,基于程序元素有多可能出错来自动对它们进行评分。SFL技术通常采用一种类型的配置文件数据:覆盖数据,谓词结果或变量值。大多数SFL技术实际上测量的是配置文件值与成功/失败之间的相关性,而不是因果关系,因此它们会受到混淆偏差的影响,从而扭曲了它们产生的分数。本文提出了一种新的SFL技术,命名为\emph{UniVal},它使用因果推理技术和机器学习整合谓词结果和变量值的信息,以更准确地估计真正的失败导致的程序语句的影响。\emph{UniVal}经验比较几个覆盖为基础的,基于谓词的,基于值的SFL技术上的800个程序版本与真正的故障。
2021-02-11 cs.SE
Assessing the Impact of Code Changes on the Fault Localizability of Large Language Models
Carnegie Mellon University, USA(卡内基梅隆大学,美国)
本文通过端到端评估框架评估LLM在故障定位中的鲁棒性,发现SPMs导致78%的LLM失败于之前定位的故障,表明LLM推理依赖于语法而非语义。
2026-03-05 cs.AI cs.LG cs.SE
Counterexample Guided Program Repair Using Zero-Shot Learning and MaxSAT-based Fault Localization
INESC-ID, IST, UL(INESC-ID、里斯本大学学院、里斯本大学)
针对入门编程作业自动化程序修复的局限,提出结合MaxSAT故障定位与大语言模型零样本学习的反例引导方法,提升修复能力且实现更小修复,优于现有工具。
2024-12-19 cs.AI cs.SE
Simple Fault Localization using Execution Traces
本文利用编程竞赛短程序的数千条执行轨迹,结合机器学习及运行时、控制流和词法特征,提出了改进传统基于谱的错误定位(SBFL)的简单方法与上下文信息集成技巧,无需GPU或高级程序分析即在多个数据集上优于Ochiai等现有公式。
2025-03-06 cs.SE
An Empirical Analysis of the Influence of Fault Space on Search-Based Automated Program Repair
自动程序修复(Automated program repair,APR)已经引起了广泛的研究关注,并且已经提出了各种技术。基于搜索的APR是这些技术中最重要的类别之一。现有的研究集中在设计有效的变异算子和搜索算法,以更好地找到正确的补丁。尽管有各种努力,这些技术的有效性仍然受到搜索空间爆炸问题的限制。这个问题的关键因素之一是现有研究报告的故障空间的质量。这促使我们研究故障空间的重要性,成功地找到一个正确的补丁。我们的实证研究旨在回答三个问题。故障空间是否与基于搜索的APR的性能显著相关?如果是,在应用昂贵的APR技术之前,是否有任何指示性测量来近似故障空间的准确性?有没有自动化的方法可以提高故障空间的精度?我们观察到,故障空间的准确性影响基于搜索的APR技术的有效性和效率,例如,即使正确的补丁在搜索空间中,当实际定位位置的等级低于10时,GenProg的失败率也可能高达$60\%$。此外,GenProg能够找到更多的正确补丁,并与更少的尝试时,给定的故障空间具有更高的精度。我们还发现,负突变覆盖率,这是在这项研究中被设计来衡量一个测试套件的能力,杀死突变的语句执行失败的测试,是最具指示性的测量,以估计基于搜索的APR的效率。最后,我们证实,自动生成的测试用例可以帮助提高故障空间的准确性,并进一步提高基于搜索的APR技术的性能。
2017-07-17 cs.SE
Extending Delta Debugging Minimization for Spectrum-Based Fault Localization
University of Ruhuna(卢胡纳大学)
DDMIN-LOC结合Delta调试最小化与基于光谱的故障定位,通过计算可疑性分数来定位故障语句,实验表明其在Jaccard算法下效果最佳。
2026-01-08 cs.SE
Combining Logic with Large Language Models for Automatic Debugging and Repair of ASP Programs
本文提出 FormHe,融合逻辑故障定位、程序变异与 LLM,自动识别并修复学生提交的错误 ASP 程序,实验显示故障检测准确率达 94%、修复成功率达 58%。
2024-10-28 cs.LO cs.SE
Automatic Property-based Testing of GraphQL APIs
近年来,GraphQL已成为公开Web API的流行方式。随着GraphQL API在工业中的应用越来越多,它的质量也必须像软件系统的任何部分一样进行评估,并且最好是以自动化的方式进行评估。然而,目前缺乏自动生成测试以执行GraphQL API的方法。在本文中,我们提出了一种自动生成GraphQL查询来测试GraphQL API的方法。这是使用基于属性的方法来实现的,该方法基于被测系统的GraphQL模式为查询创建生成器。我们对一个真实世界的软件系统的评估表明,这种方法是有效的,在寻找真正的错误,和效率,因为一个完整的模式可以在几秒钟内覆盖。此外,我们评估的故障发现能力的方法时,播种已知的故障。73%的种子错误被发现,在特定于领域的行为方面还有改进的空间,这是自动测试生成中常见的Oracle挑战。
2020-12-14 cs.SE
FetaFix: Automatic Fault Localization and Repair of Deep Learning Model Conversions
University of Edinburgh(爱丁堡大学);University of Glasgow(格拉斯哥大学)
本文提出自动化故障定位与修复方法 FetaFix,通过迭代比较源模型与目标模型的输出标签差异,修复深度学习框架间模型转换时在输入、参数、超参数和模型图中引入的故障,在 755 个故障中成功修复 462 个。
2025-04-26 cs.AI cs.CV cs.LG
Assessing Test Case Prioritization on Real Faults and Mutants
测试用例优先级(TCP)是回归测试的一个重要组成部分,它允许更早地检测故障或帮助减少测试时间和成本。虽然研究文献中存在几种TCP方法,但越来越多的研究已经针对称为突变体的合成软件缺陷对其进行了评估。因此,目前尚不清楚在何种程度上突变体上的TCP性能将代表在真实故障上实现的性能。为了回答这个基本问题,我们进行了第一次实证研究,比较TCP技术应用于现实世界和突变故障的性能。我们的研究背景包括八种经过充分研究的TCP方法,35k+突变故障和Defects4J数据集中五个Java系统的357个真实故障。我们的研究结果表明,所研究的TCP技术突变体的相对性能可能不会强烈相关的性能上真正的故障,这取决于属性的主题程序。这表明,在某些情况下,在一组突变体上表现最好的技术在实际应用于实际故障时可能不是最好的技术。我们还说明,这些相关性不同的突变体所产生的不同运营商,这取决于所选择的运营商是否反映一个主题程序的典型故障。这突出了开发针对特定程序域的变异算子的重要性,特别是对于TCP。
2018-09-18 cs.SE
HyQDB: LLM-Assisted Debugging for Hybrid Quantum Workflows
Imperial College London(帝国理工学院)
针对混合量子程序故障静默发生且现有工具支持有限的问题,提出分层代理HyQDB,注入确定性证据并升级意图重建,在QFaultBench上将修复成功率从45%提升至75%。
2026-09-28 cs.SE
Spectrum-based Software Fault Localization: A Survey of Techniques, Advances, and Challenges
尽管调试是软件开发中最基本的任务之一,但仍然以大多数手动方式执行,导致高成本和低性能。为了解决这个问题,研究人员已经研究了一些有前途的方法,例如基于频谱的故障定位(SFL)技术,该技术可以精确定位更有可能包含故障的程序元素。本调查讨论了SFL的最新技术,包括已提出的不同技术,它们解决的故障类型和数量,它们使用的光谱类型,它们在验证中使用的程序,支持它们的测试数据以及它们在工业环境中的使用。尽管取得了这些进展,但该行业在采用这些技术方面仍面临挑战,我们在本文中对此进行了分析。SFL技术应该提出新的方法来生成可疑实体的精简集,结合不同的频谱来微调故障定位能力,使用策略来收集细粒度的覆盖水平,从可疑的粗水平,以平衡执行成本和输出精度,并提出新的技术,以应付多故障程序。此外,需要更多的用户研究,以更好地了解如何SFL技术可以在实践中使用。最后,我们提出了一个概念图的主题和未来的研究在SFL的挑战。
2017-11-26 cs.SE
A Slice-Based Change Impact Analysis for Regression Test Case Prioritization of Object-Oriented Programs
针对面向对象程序回归测试用例优先级排序问题,提出基于受影响切片图(ASG)和受影响组件耦合度(ACC)的静态方法,通过计算节点故障易发性排序测试用例,经七个案例验证比现有技术可行且性能可接受。
2025-08-26 cs.SE