Page 262 - 《软件学报》2021年第7期
P. 262

2180                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                                      P
                 一 bug 的程序设计的,而 O 更适合于多个错误的程序.Wong 等人还提出了 H3b 和 H3c                   [31] 、交叉表 [32] 和 DStar
                 技术 [33] .Souza 等人 [34] 将两种基于路线图的技术与新的过滤策略相结合实现了语句块级别和方法级别的可疑
                 度度量,极大地优化了错误定位技术.王赞等人               [35,36] 将遗传算法和基于搜索的软件工程思想有机地结合,寻找最
                 高适应度值的错误实体,在此基础上,他们还利用模拟退火算法和遗传算法,构建了一个称为 FSMFL 的框架来
                 解决多错误定位问题.宗芳芳等人            [37] 提出了二次定位策略,粗分细找,准确地确定故障的具体位置.在先前的研
                 究中,我们提出了利用失败执行的上下文信息的缺陷定位方法,进一步提高基于频谱的错误定位的精度                                    [38] .与以
                 上方法不同,在基于频谱信息的基础上,本文所提方法增加了路径分析的相关信息,并在可疑语句怀疑度计算公
                 式中增加了信息熵的相关信息.在之前工作               [39] 的基础上,本文开展了更为充分的实验验证,增加了对比方法实验
                 及实验程序.

                 6    结束语

                    针对现有的错误定位方法在定位错误时单独考虑程序实体怀疑度,忽视程序语句之间上下文信息的问题,
                 本文提出了一种基于路径分析和信息熵的上下文错误定位方法.该方法首先进行程序插桩工作,执行插桩后的
                 程序并运行测试用例得到程序的执行覆盖信息,同时通过静态分析对待测源程序构建图形结构,并利用其进行
                 数据依赖分析;接下来根据程序的执行轨迹和数据依赖分析结果对程序的执行路径进行分析,同时利用信息熵
                 理论重新设计怀疑度计算公式,并结合所有执行路径中不同数据依赖关系的覆盖信息分析得到可疑语句的错
                 误定位报告;最后按照可疑度值大小顺序检查语句,定位并修复错误.在实验部分,本文使用 17 个基准程序对
                 FLPI 方法进行了验证,对比实验结果表明,FLPI 方法能够有效地提高错误定位的准确度和效率.
                    虽然我们在不同规模的基准程序集上验证了本文方法的有效性,但未来需要在更大规模、更多语言和真实
                 程序上开展研究.同时,软件错误定位领域还有许多亟需解决的问题,例如偶然正确性问题、方法级别的错误定
                 位与多错误定位研究等,因此,如何将本文方法及程序上下文信息有效地结合并解决这些问题还有待进一步的
                 探索.此外,本文所提方法在提高定位精度的同时也增加了一定的时间开销,因此,如何在提高错误定位精度的
                 同时优化时间效率也是一个非常值得深入研究的问题.


                 References:
                 [1]    Collofello JS, Woodfield SN.  Evaluating the  effectiveness of reliability-assurance techniques. Journal of Systems  and Software,
                     1989,9(3):191–195.
                 [2]    Pai GJ, Dugan  JB. Empirical analysis  of  software  fault content and  fault  proneness  using Bayesian methods.  IEEE Trans.  on
                     Software Engineering, 2007,33(10):675–686.
                 [3]    Zeller  A,  Hildebrandt  R. Simplifying  and isolating failure  inducing input. IEEE Trans. on Software  Engineering, 2002,28(2):
                     183–200.
                 [4]    Vessy I.  Expertise in debugging  computer programs: A process  analysis. Int’l Journal of Man-machine Studies, 1985,23(5):
                     459–494.
                 [5]    Pearson S, Campos J, Just R, Fraser G, Abreu R, Ernst MD, Pang D, Keller B. Evaluating and improving fault localization. In: Proc.
                     of the 39th IEEE/ACM Int’l Conf. on Software Engineering. 2017. 609–620.
                 [6]    Wang KC, Wang TT, Su XH, Ma PJ. Key scientific issues and state-art of automatic software fault localization. Chinese Journal of
                     Computers, 2015,38(11):2262–2278 (in Chinese with English abstract).
                 [7]    Wong WE, Gao R, Li Y, Abreu R, Wotawa F. A survey on software fault localization. IEEE Trans. on Software Engineering, 2016,
                     42(8):707–740.
                 [8]    Jones JA, Harrold MJ, Stasko J. Visualization of test information to assist fault localization. In: Proc. of the 24th Int’l Conf. on
                     Software Engineering. 2002. 467–477.
                 [9]    Jones JA, Harrold MJ, Stasko J. Visualization for fault localization. In: Proc. of the 23rd Int’l Conf. on Software Engineering. 2001.
                     71–75.
                [10]     Abreu R, Zoeteweij P, Golsteijn R, Gemund A. A practical evaluation of spectrum-based fault localization. Journal of Systems and
                     Software, 2009,82(11):1780–1792.
   257   258   259   260   261   262   263   264   265   266   267