中文

利用演化耦合建立测试与代码单元间的相关链接:以故障定位为例

软件工程 2022-03-23 v1

摘要

许多软件工程技术(如故障定位)基于测试与代码之间的相关关系运作。这些关系通常通过动态测试执行信息(测试执行轨迹)来推断,以近似相关代码单元与测试所断言的程序行为之间的链接。遗憾的是,在实践中,由于插桩带来的开销或生产环境的性质,动态信息并不总是可用。为应对此问题,我们提出 CEMENT,一种静态技术,可在给定项目演化的前提下自动推断此类测试与代码关系。其核心思想是开发人员在同一时间段内对测试与代码单元做出相关修改,即测试与代码单元的共演化反映了它们之间的可能链接。我们在 15 个开源项目上评估 CEMENT,表明其确实捕获了相关链接。此外,我们进行了一项故障定位案例研究,将 CEMENT 与现有的基于信息检索的故障定位(IRFL)技术进行比较,显示其取得了相当的性能。对我们结果的进一步分析揭示两种方法成功定位的故障重叠很小,表明具有互补性。具体而言,在 39 个成功定位的故障中,仅有 2 个为共有,而 CEMENT 与 IRFL 分别定位了 16 个和 21 个。这些结果表明测试与代码的演化耦合可有效支持测试与调试活动。

关键词

引用

@article{arxiv.2203.11343,
  title  = {Using Evolutionary Coupling to Establish Relevance Links Between Tests and Code Units. A case study on fault localization},
  author = {Jeongju Sohn and Mike Papadakis},
  journal= {arXiv preprint arXiv:2203.11343},
  year   = {2022}
}