● 摘要
软件测试是软件开发过程中的一个重要环节,其中最耗时、代价最昂贵的任务之一就是软件调试。为了辅助开发人员进行程序错误的定位和修正,研究人员提出了多种自动化错误定位技术,用以指出软件缺陷在源代码中的可能位置。
传统的基于统计的错误定位技术需要执行一个测试数据集,通过分析每次执行的测试结果以及程序的各种行为特征信息来定位错误。在实际的开发场景中,往往只有一个揭露软件失效的测试数据。在这种情况下,基于统计的错误定位技术难以适用。一个解决方法是利用测试数据生成技术自动生成一组测试数据,然而一般的测试数据生成技术以程序结构的高覆盖为目标,生成的测试数据会降低错误定位的精度。特别地,在反应式软件系统中,由于控制循环结构的存在造成程序特征信息叠加,影响错误定位结果的准确性。
本课题主要研究面向单测试用例条件下的错误定位技术。首先,针对回归错误调试场景,利用软件开发过程中的程序历史数据,提出了缩小版本间差异的算法,并将其用于分离与故障相关的代码差异,得到最小化的最小修改集。其次,研究了基于相似度准则的测试数据生成方法,利用路径相似度引导生成测试数据。最后,针对反应式软件特点,通过循环内执行轨迹信息改进的基于统计的错误定位方法。
基于以上研究,本文实现了一个面向单测试用例的错误定位技术原型系统SINGLE,并在实际程序进行了实验评价。实验结果表明,在回归错误和反应式软件调试场景下,系统能有效给出错误语句的位置。此外,路径相似度引导测试数据生成对错误定位效果显著更大,优化后的技术能进一步减少冗余测试数据的生成。
相关内容
相关标签