摘要
软件测试保证了高质量软件产品的交付,而软件缺陷预测已经成为软件测试的一个重要部分。软件缺陷预测分为传统软件缺陷预测,以及即时软件缺陷预测(JIT-SDP)。即时软件缺陷预测是保障软件安全与质量相统一的必要途径,在软件工程领域受到越来越多的关注。 然而,现有数据集存在特征冗余和特征相关性低的情况,极大影响了即时软件缺陷预测模型的分类性能和稳定性。此外,分析缺陷数据特征对模型的影响尤为重要,但如今对软件缺陷预测模型进行解释性研究较少。再者大多数现有的软件缺陷预测框架都较为单一,这使得为开发人员提供更详细的参考信息变得极其困难。本文为了提升软件缺陷预测效果,从而实现有效的软件测试资源分配。针对这些问题,论文的主要工作如下: 首先,创新性地选择了SHAP+SMOTEENN+XGBoost(SHAP-SEBoost)构建即时软件缺陷预测模型。首先通过SHAP(SHapleyAdditiveexPlanation)模型可解释器分析初始数据集特征,并根据分析结果对数据集进行相应的特征选择与组合。然后,利用SMOTEENN对类不平衡的缺陷数据进行正负样本均衡化,使用集成学习算法XGBoost对实验数据进行预测建模。最后,使用SHAP对本章模型进行可解释性分析。 其次,提出一种基于Nested-Stacking和异构特征选择的软件缺陷预测框架。该框架包括数据集预处理以及特征选择、Nested-Stacking分类器和模型分类性能评估三个阶段。框架中的异构特征选择和嵌套自定义分类器,能够有效提升软件缺陷预测的准确性。 最后,本文在两种软件缺陷数据集(Kamei、PROMISE)上进行实验,通过AUC和F1-score两种综合性评价指标来展示模型分类性能。实验进行了大规模的同项目内预测和跨项目预测。结果表明,本文提出的框架在两类软件缺陷数据集上均具有良好的分类性能,与基线模型效果相比得到了较大提升。