论文部分内容阅读
缺陷预测技术是利用软件度量数据构建缺陷预测模型预测软件系统中潜在缺陷的技术,它能帮助指导分配测试或审查资源。当前,围绕缺陷预测技术已有大量的研究,但仍然存在一些需要解决的问题。一方面,利用有限的代码以及过程度量信息构建的缺陷预测模型不够理想,从而导致缺陷预测模型没有真正被广泛地应用。另一方面,当前多数缺陷预测技术处于较粗的粒度级别(例如包、文件或者类的级别),粗粒度缺陷预测的结果不能较为准确地预测缺陷发生的位置,不太具有实用价值。 为解决上述问题,本文采取实证的方法研究了三种不同细粒度级别的缺陷预测技术,旨在提高缺陷预测模型的预测能力和实用性。本文所关注的三种细粒度缺陷预测分别是函数、变更和代码行级别的缺陷预测,相比于粗粒度的缺陷预测,细粒度缺陷预测模型预测范围更小,能更为精准定位缺陷发生的位置,给开发人员提供更为有用的信息。本文主要贡献总结如下: 1)针对函数级别缺陷预测,分析了基于切片的内聚性度量的预测能力。在交叉验证、跨版本预测和跨项目预测三种设置下,深入分析联合使用基于切片的内聚性度量和基准度量能否提升工作量感知的缺陷函数排序和分类能力。在多个开源软件系统上的实验结果表明,联合使用基于切片的内聚性度量的预测模型能显著提升工作量感知的缺陷函数排序和分类的能力。 2)针对变更级别缺陷预测,分析了基于变更度量值升序排列的无监督模型的预测能力。在交叉验证、时间敏感预测和跨项目预测三种设置下,深入比较了无监督模型和当前有监督模型的预测能力。在多个开源软件系统上的实验结果表明,存在许多无监督模型的工作量感知变更级缺陷预测能力优于或类似于最好的有监督模型。 3)针对代码行级缺陷预测,分析了基于单词总数预测模型的代码行级缺陷预测能力。在多个开源软件系统上的实验结果表明,基于单词总数的代码行级缺陷预测模型的预测能力优于当前基于N-grams的代码行级缺陷预测模型。