首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 156 毫秒
1.
错误定位就是寻找程序错误的位置.现有的错误定位方法大多利用测试用例的覆盖信息,以标识一组导致程序失效的可疑语句,却忽视了这些语句相互作用导致失效的上下文.因此,提出一种增强上下文的错误定位方法Context-FL,以构建上下文的方式来优化错误定位性能.Context-FL利用动态切片技术构建数据与控制相关性的错误传播上下文,显示了导致失效的语句之间传播依赖关系;然后,基于可疑值度量来区分上下文片段中不同语句的可疑度;最后,Context-FL以标记可疑值的上下文作为定位结果.实验结果表明,Context-FL优于8种典型错误定位方法.  相似文献   

2.
为深入提高软件可靠性,面向软件源文件缺陷定位效率低、精度不高等问题,提出优先级评估下的软件源文件可疑度度量方法.融合多属性决策算法与相似度理念,自适应调节个体决策结果,按照专家权重获得全新的群体决策,从高到低排序软件源文件缺陷可疑度度量顺序;使用粗糙集理论与模糊聚类算法分析软件缺陷数据,划分缺陷属性权值,计算缺陷数据与...  相似文献   

3.
徐同同  刘逵  夏鑫 《软件学报》2024,35(1):136-158
软件漏洞是计算机软件系统安全方面的缺陷, 给现代软件及其应用数据的完整性、安全性和可靠性带来巨大威胁. 人工治理漏洞费时且易错, 为了更好应对漏洞治理挑战, 研究者提出多种自动化漏洞治理方案, 其中漏洞自动修复方法近来得到研究者广泛关注. 漏洞自动修复技术旨在辅助开发人员修复漏洞, 涵盖漏洞根因定位、补丁生成、补丁验证等功能. 现有工作缺乏对漏洞修复技术系统性的分类与讨论, 为了促进漏洞修复技术发展, 加深研究人员对漏洞修复问题的认知理解, 对现有漏洞修复方法技术的理论、实践、适用场景和优缺点进行全面洞察, 并撰写了漏洞自动修复技术的研究综述. 主要内容包括: (1)按照修复漏洞类型不同整理归纳特定类型漏洞的修复方法以及通用类型漏洞的修复方法; (2)按照所采用的技术原理将不同修复方法进行分类与总结; (3)归纳漏洞修复主要挑战; (4)展望漏洞修复未来发展方向.  相似文献   

4.
基于频谱的缺陷定位(spectrum-based fault localization, SBFL)通过分析测试用例的覆盖信息和执行结果信息进行快速定位,是目前最常用的缺陷定位技术。然而,该方法未能充分利用代码中隐含的语义和结构信息。若能将缺陷预测中使用到的代码结构信息和频谱信息融合使用,将有助于进一步提升缺陷定位的效果。为此,提出了一种融合代码静态特征和频谱的软件缺陷定位(fault localization combing static features and spectrums, FLFS)技术。首先,从Halstead等度量元集合中选取度量元指标并进行修改,以适用于度量代码的方法级特征;然后,根据选取的度量元指标提取程序中各个方法的静态特征并用于训练缺陷预测模型;最后,使用缺陷预测模型预测程序中各方法存在缺陷的预测可疑度,并与SBFL技术计算的频谱可疑度进行融合,以定位缺陷所在方法。为验证FLFS的有效性,将其与两种定位效果最好的SBFL技术DStar和Ochiai在Defects4J数据集上进行了对比实验。结果表明,FLFS具有更好的缺陷定位性能,对于Einspe...  相似文献   

5.
何海江 《计算机应用研究》2021,38(11):3393-3397
基于程序谱的软件错误定位(spectrum-based fault localization,SBFL)技术收集测试用例结果和语句覆盖信息,用以计算每条语句的可疑度值.认知复杂度是软件复杂性度量工具,其值高的代码较易出错.为提升错误定位性能,提出一种语句级认知复杂度和SBFL相组合的方法对语句排序.当多条语句可疑度值相等时,新方法优先检查认知复杂度高的语句.测试数据集有925个错误版本,包含Java、C和C++项目.实验结果证实,加入认知复杂度后,传统的SBFL技术能减少待排查语句.  相似文献   

6.
纪涛  齐玉华  毛晓光 《计算机科学》2014,41(9):88-90,124
虽然缺陷定位技术和软件错误自动修复技术已经得到一定的发展,但是软件的修复工作仍然需要程序员投入大量的时间和精力。大多数开发者仍然使用传统调试技术(例如断点)来进行手工的调试,缺陷定位技术的研究成果并没有较好地运用到实际的修复工作中。近来,软件错误自动修复技术得到了快速的发展和广泛的关注。在软件错误自动修复工作中,利用缺陷定位技术自动定位错误代码是必需的,而定位的精度直接影响到补丁的生成,从而对修复的效果产生较大的影响。GenProg-FL工具可以接受不同的缺陷定位技术去自动修复故障程序。同样,使用GenProg-FL可以从软件自动修复的角度评估现有的基于程序谱的缺陷定位技术定位的有效性。  相似文献   

7.
针对当前软件密集型装备软件故障诊断方法的缺陷,提出了一种基于粗诊断与细诊断技术相结合的软件故障定位方法。对故障进行初步定位,找出软件故障可疑模块集,利用切片技术对故障模块集进行检测,将故障定位到程序语句集中,采用代码分析辅助诊断工具对可疑代码集进行排查、定位。软件密集型装备故障诊断原型系统的应用表明,该方法能有效地进行软件故障的定位。  相似文献   

8.
《计算机科学与探索》2017,(8):1214-1223
随着航空工业的发展和飞控软件复杂度的提高,对飞控软件可靠性和实时性的要求也越来越高。软件老化缺陷中存在一类缺陷,会使系统响应逐渐变慢,最终出现失效,严重影响飞控软件的可靠性和实时性,但目前没有定位这类缺陷的有效方法。针对这类缺陷的定位,提出了一种基于上下文的飞控软件老化缺陷定位方法。该方法将飞控软件的主循环建模成一棵任务树,飞控软件反复运行的主循环抽象成一个任务树序列。通过Mann-Kendall Test对任务树中心节点的时间属性进行趋势检测,找到可疑任务,并根据任务树之间的关系对可疑任务进行筛选,定位出含有缺陷的任务,则该任务所对应的函数即为缺陷所在的位置。实验表明,该方法不仅能够给出缺陷的具体位置,还能给出发生失效时的调用上下文。  相似文献   

9.
《软件工程师》2017,(2):1-3
软件在开发和维护的过程中均可能产生软件缺陷,如果能够成功自动修复部分缺陷,则可以有效减少程序调试时间,避免损失。软件自动修复是一个新兴课题,尚存在很多需要解决的问题。本文首先介绍了软件自动修复的概念,并提出了基于搜索的软件自动修复的框架;接着,从缺陷定位、搜索策略、测试数据生成三个方面概括了基于搜索的软件自动修复面临的主要挑战,以及需要解决的一些关键问题;最后,总结全文并指出下一步的工作。所提框架及其关键问题的探讨,有助于软件自动修复技术的进一步研究和在工业生产中的推广应用。  相似文献   

10.
面向程序自动修复的缺陷分类方法研究*   总被引:1,自引:0,他引:1  
程序自动修复是近年软件工程的研究热点,但其发展难以满足工业应用的要求。分析了自动修复技术的局限性,引入了缺陷分类的思想,并与正交缺陷分类方法相结合,提出了面向软件自动修复的缺陷分类方法(APRDC)。基于APRDC提出了自动修复技术集成的思想。实验中将基于APRDC与基于随机的自动修复技术集成工具作了比较。实验结果表明基于APRDC方法的自动修复技术的集成提高了修复效果,同时也表明了APRDC方法的有效性。  相似文献   

11.
张卓  雷晏  毛晓光  常曦  薛建新  熊庆宇 《软件学报》2020,31(11):3448-3460
错误定位方法大多通过分析语句覆盖信息来标识出导致程序失效的可疑语句.其中,语句覆盖信息通常以语句执行或语句未执行的二进制状态信息来表示.然而,该二进制状态信息仅表明该语句是否被执行的信息,无法体现该语句在具体执行中的重要程度,可能会降低错误定位的有效性.为了解决这个问题,提出了基于词频-逆文件频率的错误定位方法.该方法采用词频-逆文件频率技术识别出单个测试用例中语句的影响程度高低,从而构建出具有语句重要程度识别度的信息模型,并基于该模型来计算语句的可疑值.实验结果表明,该方法大幅提升了错误定位的效能.  相似文献   

12.
传统的软件错误定位技术通常利用测试覆盖信息计算程序语句发生错误的可疑度进行软件错误定位,但是这种定位技术没有充分考虑程序本身固有的依赖信息,缺乏语句筛选,从而使错误定位的精度受限.提出了一种基于层次切片谱的错误定位技术,以提高面向对象程序中的错误定位效率.这种技术首先分析程序不同粒度层次元素(包、类、方法以及语句)之间的依赖信息,对可能发生错误的元素进行筛选,缩小错误查找范围;在此基础上,建立了层次切片谱模型,并定义了一种可疑度度量方法;最后根据该可疑度结果从大到小的顺序进行错误定位.通过实验验证了基于层次切片谱的错误定位技术的有效性,且比基于程序谱的Tarantula 技术、Union 技术、Intersection 技术效率更高.  相似文献   

13.
Most of the existing fault localization approaches use execution coverage of test cases to isolate the suspicious codes that likely contain faults. Program slicing can extract the dependencies of program entities with respect to a specific criterion. Therefore this technique is expected to have a beneficial effect on fault localization. In this paper, we propose a novel approach using a hybrid spectrum of full slices and execution slices to improve the effectiveness of fault localization. In particular, our approach firstly computes full slices of failed test cases and execution slices of passed test cases respectively. Secondly it constructs the hybrid spectrum by intersecting full slices and execution slices. Finally it computes the suspiciousness of each statement in the hybrid slice spectrum and generates a fault location report with descending suspiciousness of each statement. We also implement our proposed approach in our prototype tool HSFal by Java programming language. To verify the effectiveness of our approach, we performed an empirical study by the prototype on several widely used open source programs. Our approach is compared with eight representative coverage-based and slice-based fault localization approaches. Final experimental results show that our proposed approach is more effective in fault localization than other compared approaches, and can reduce almost 2.98–31.79% of the average cost of examined code significantly.  相似文献   

14.
Recent techniques for fault localization statistically analyze coverage information of a set of test runs to measure the correlations between program entities and program failures. However, coverage information cannot identify those program entities whose execution affects the output and therefore weakens the aforementioned correlations. This paper proposes a slice-based statistical fault localization approach to address this problem. Our approach utilizes program slices of a set of test runs to capture the influence of a program entity's execution on the output, and uses statistical analysis to measure the suspiciousness of each program entity being faulty. In addition, this paper presents a new slicing approach called approximate dynamic backward slice to balance the size and accuracy of a slice, and applies this slice to our statistical approach. We use two standard benchmarks and three real-life UNIX utility programs as our subjects, and compare our approach with a sufficient number of fault localization techniques. The experimental results show that our approach can significantly improve the effectiveness of fault localization.  相似文献   

15.
针对程序切片方法不提供语句的可疑程度描述,而覆盖分析方法不能充分分析程序元素间的相互影响等问题,提出上下文统计分析的软件故障定位方法。首先,将源程序转换为抽象语法树和程序依赖图;接下来,插桩程序,收集运行时信息;然后,根据失效点,执行按需的反向动态切片,确定失效产生的上下文;最后,对于反向动态切片中的节点,统计计算可疑度,输出带可疑度排序的动态程序切片。该方法不但描述了失效产生的上下文,还计算上下文中各个语句的可疑度。实验结果表明,所提方法与单一的覆盖分析方法相比,平均Expense降低了1.3%,与单一的切片方法相比,平均Expense降低了5.6%,所提方法可以有效辅助开发人员定位与修正软件缺陷。  相似文献   

16.
Fault localization techniques are originally proposed to assist in manual debugging by generally producing a rank list of suspicious locations.With the increasing popularity of automated program repair,the fault localization techniques have been introduced to effectively reduce the search space of automated program repair.Unlike developers who mainly focus on the rank information,current automated program repair has two strategies to use the fault localization information:suspiciousness-first algorithm(SFA)based on the suspiciousness accuracy and rank-first algorithm(RFA)relying on the rank accuracy.However,despite the fact that the two different usages are widely adopted by current automated program repair and may result in different repair results,little is known about the impacts of the two strategies on automated program repair.In this paper we empirically compare the performance of SFA and RFA in the context of automated program repair.Specifically,we implement the two strategies and six well-studied fault localization techniques into four state-of-the-art automated program repair tools,and then use these tools to perform repair experiments on 60 real-world bugs from Defects4J.Our study presents a number of interesting findings:RFA outperforms SFA in 70.02%of cases when measured by the number of candidate patches generated before a valid patch is found(NCP),while SFA performs better in parallel repair and patch diversity;the performance of SFA can be improved by increasing the suspiciousness accuracy of fault localization techniques;finally,we use SimFix that deploys SFA to successfully repair four extra Defects4J bugs which cannot be repaired by SimFix originally using RFA.These observations provide a new perspective for future research on the usage and improvement of fault localization in automated program repair.  相似文献   

17.
基于谱的错误定位(SBFL)方法能帮助程序员减小软件调试的困难。作为一种轻量方法,SBFL只需收集测试用例的覆盖信息和测试结果,计算程序每条语句的运行特征。众多SBFL方法,将四个运行特征组合成不同的可疑度计算公式。然而,这些公式受固定参数的影响,无法适应不同的程序集。因此,提出一种机器学习方法,能自动确定特定程序集的可疑度计算公式。首先,收集已标注错误语句的程序旧版本;再将错误语句与正确语句的运行特征两两相减,构造为训练集的一个样本;最后基于Weka的分类算法,学习到线性函数,作为该程序的错误定位模型。在Siemens程序包、space和gzip三个基准数据集上,使用Logistic、SGD、SMO和LibLinear学习到的模型,性能都要优于SBFL方法。  相似文献   

18.
基于频谱的错误定位方法一般利用覆盖信息为每条语句度量出错的可能,即可疑度,通过逐条检查按可疑度值降序排列的语句序列来确定错误语句.针对已有的方法大多只考虑覆盖信息中语句执行信息的问题,分析了语句执行补集对错误定位的积极影响,进一步提出了在语句执行信息基础上结合语句执行补集的错误定位方法.实验结果表明,与其他方法相比,所...  相似文献   

19.
姜淑娟  张旭  王荣存  黄颖  张艳梅  薛猛 《软件学报》2021,32(7):2166-2182
软件错误定位是一项耗时又费力的工作,因此如何提高软件错误定位的自动化程度一直以来都是软件工程领域研究的热点.现有的基于频谱的错误定位方法很少利用程序的上下文信息,而程序的上下文信息对错误定位至关重要.针对此问题,本文提出了一种基于路径分析和信息熵的错误定位方法FLPI.该方法在基于频谱信息技术的基础上,通过对所有执行路径中的数据依赖关系进行分析来引入执行上下文信息,同时利用信息熵理论将测试事件信息引入到可疑语句的怀疑度计算公式中,以提高错误定位的精度和效率.为了评价该方法的有效性,基于一组基准程序和开源程序进行实验验证.实验结果表明,本文所提方法FLPI能够有效地提高错误定位的精度和效率.  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号