从细粒度语义变更视角看测试维护与代码维护的协同演化
软件工程
2017-09-27 v1
摘要
自动测试是提高软件质量的一种广泛应用的技术。软件开发者在软件开发过程以及初始发布后的演化阶段中,添加、移除和更新测试方法与测试类。在本研究中,我们对 61 个流行的开源项目进行了大规模研究,并报告了我们在测试维护、生产代码维护以及开发者在提交中执行的语义变更(例如,添加语句、移除方法等)之间所确立的关系。我们构建了预测模型,并表明通过采用代码维护特征(即,在每项维护活动中执行了多少次提交:纠正性、完善性、适应性)可以很好地预测软件项目中的测试数量。我们的发现还表明,在大多数情况下,开发者在同一次提交中执行代码修复时,并未执行互补的测试维护(例如,更新现有测试或添加新测试)。当开发者确实执行测试维护时,它很可能受到其作为提交一部分所执行的语义变更的影响。我们的研究基于对 61 个流行的开源项目的考察,这些项目包含由超过 4,000 名软件工程师执行的超过 240,000 次提交,且这些提交包含超过 16,000,000 个语义变更类型实例。
引用
@article{arxiv.1709.09029,
title = {The Co-Evolution of Test Maintenance and Code Maintenance through the lens of Fine-Grained Semantic Changes},
author = {Stanislav Levin and Amiram Yehudai},
journal= {arXiv preprint arXiv:1709.09029},
year = {2017}
}
备注
postprint, ICSME 2017