论文部分内容阅读
在软件开发与维护过程中,软件测试是必不可少的一步。软件测试的主要目的在于通过测试套件来检测软件中的缺陷发生情况,通过测试结果来获得软件内的缺陷实体,从而修正软件中的缺陷。在传统的手工调试中,软件缺陷定位是一项费时费力的工作。近年来,随着软件规模的逐渐增大,自动化软件缺陷定位成为人们关注的热点。在已有的自动化软件缺陷定位技术中,基于频谱的动态缺陷定位技术展现出了良好的缺陷定位效果,该类方法通过构建缺陷程序的频谱信息,并分析该信息内包含的统计量来得到实体的怀疑值,进而得出可供开发人员参考的实体怀疑序列。但是该类方法在多缺陷定位问题上表现不佳,且部分方法需要较多的人工交互来指导运行。针对上述问题,本文提出了基于改进粒子群算法的软件多缺陷定位方法PSOMFL(Particle Swarm Optimization for Multi-fault Localization),该方法运用基于搜索的软件工程的思想,将多缺陷定位问题转换为粒子群算法能够处理的优化问题,通过算法的进化行为获得问题的最优解集合,最后分析最优解集合就能得到包含多个可疑实体的检查次序。另外,提出了基于改进蚁群算法的软件多缺陷定位方法ACOMFL(Ant Colony algorithm for Multi-fault Localization),该方法利用频谱信息创建搜索图,并通过蚁群算法中个体独特的进化行为获得问题的最优解集,分析统计最优解中包含的实体信息即可获得包含多个缺陷实体的怀疑序列。相比于PSOMFL方法,ACOMFL能够通过分布式计算、并行计算等方式提升方法的效率和精度,使其更适用于大型软件中的缺陷定位。在实证研究阶段,本文选取了四个大型Linux程序作为评测对象,并引入新的评测指标来评价方法的多缺陷定位性能。为了展示方法结果的有效性,与现有的7个基于程序谱的方法进行对比,其中包含一种多缺陷定位方法。在多缺陷定位性能对比阶段,通过方差检测和假设检验等手段,来详细说明本文提出方法与其他方法之间的性能差异幅度。实验结果显示,PSOMFL方法和ACOMFL方法不仅在多缺陷定位精度和单缺陷定位精度上优于其它对比方法,而且方法的执行时间和执行效率均在可接受范围内。