ConPredictor:实际应用中的并发缺陷预测
ConPredictor: Concurrency Defect Prediction in Real-World Applications
摘要:
并发程序由于其固有的非确定性而难以测试。为了解决这个问题,测试通常需要探索程序的线程调度;这在应用于真实世界的程序时可能很耗时。软件缺陷预测已经被用来帮助开发人员发现错误并优先考虑他们的测试工作。先前的研究已经使用机器学习来基于对程序的特性进行编码的设计特征来构建这样的预测模型。然而,研究的重点是顺序程序,迄今为止,没有工作考虑并发程序的缺陷预测,程序特性区别于顺序程序。在本文中,我们提出了ConPredictor,一种方法来预测特定的并发程序的缺陷相结合的静态和动态程序度量。具体来说,我们提出了一套新的静态代码度量的基础上并发程序的独特属性。我们还利用基于突变分析构建的动态指标的额外指导。我们对四个大型开源项目的评估表明,与传统功能相比,ConPredictor改进了项目内缺陷预测和跨项目缺陷预测。
英文摘要:
Concurrent programs are difficult to test due to their inherent non-determinism. To address this problem, testing often requires the exploration of thread schedules of a program; this can be time-consuming when applied to real-world programs. Software defect prediction has been used to help developers find faults and prioritize their testing efforts. Prior studies have used machine learning to build such predicting models based on designed features that encode the characteristics of programs. However, research has focused on sequential programs; to date, no work has considered defect prediction for concurrent programs, with program characteristics distinguished from sequential programs. In this paper, we present ConPredictor, an approach to predict defects specific to concurrent programs by combining both static and dynamic program metrics. Specifically, we propose a set of novel static code metrics based on the unique properties of concurrent programs. We also leverage additional guidance from dynamic metrics constructed based on mutation analysis. Our evaluation on four large open source projects shows that ConPredictor improved both within-project defect prediction and cross-project defect prediction compared to traditional features.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。