Software refactoring improves extensibility and maintainability of software systems by restructuring their internal structures. Though software refactoring would not change the external behaviors of software systems, they might make regression tests obsolete (with syntax and runtime errors) or fail. To this end, this project will analyze the impact of software refactoring on regression tests, and try to repair impacted tests. We would first analyze the reasons why tests become obsolete with theoretical analysis and refactoring history analysis. For refactorings recognized by tools (according to logs of refactoring tools or by refactoring identification technologies), we would propose a pattern-based test repairing approach. For refactorings that could not be automatically recognized by tools, we would propose a path-based test repairing approach. With test-driven development, tests should be updated before refactorings could be applied. To this end, we would propose an approach to identify refactoring intent by analyzing changes on tests and bad smells within corresponding production code. The research would help to reduce software refactoring cost, and improve the reliability of software refactoring.
软件重构通过调整软件的内部结构以提高软件的可扩展性和可维护性。虽然重构不得改变软件的外部行为特性,但它却有可能导致回归测试的失效(编译错误或运行错误)或失败(运行结果与预期不符)。为此,本项目计划研究软件重构对回归测试的影响,并尝试自动修复受损测试用例。通过理论分析及重构历史挖掘,对测试用例失效或失败的原因进行分析和归类,进而明确各种软件重构对测试用例的影响模式。针对工具可识别的软件重构(根据重构工具的记录或借助重构识别技术),计划采用基于模式的测试用例修复方法。对于难以准确识别的软件重构,计划研究基于执行路径的测试用例修复方法。在测试驱动的开发模式下,程序员必须先修改测试用例之后再实施重构操作。为此,计划通过挖掘测试用例的修改情况以及被测程序内的代码坏味,推测用户的重构意图,进而自动完成测试用例的修改及软件重构操作。本项目的研究将有助于降低软件重构的成本并提高重构的可靠性。
软件重构是提高软件的可扩展性和可维护性的一个重要手段。虽然重构不得改变软件的外部行为特性,但它却有可能导致回归测试的失效(编译错误或运行错误)或失败(运行结果与预期不符)。为了明确软件重构对回归测试的影响并实现测试用例的自动修复,本项目研究分析了测试用例失效的原因以及软件重构对软件接口的影响,明确了不同类型的软件重构对回归测试用例修的影响模式;研究分析面向软件重构的测试用例修复问题,提出了基于模板的测试用例修复方法;研究了测试驱动下的软件重构,提出了基于测试用例的重构意图捕获方法;研究分析了智能化软件重构机会推荐问题,提出了基于相似性的重构扩展方法;研究了代码坏味检测问题,提出了面向代码坏味检测的阈值优化方法。课题组还设计并实施相关实验,初步证明了以上研究成果的有效性。以上研究成果对于深入理解软件重构与回归测试具有重要意义。基于理论研究成果研发的相关工具也较大幅度地提高了软件重构的自动化水平以及软件重构的效率和效果。相关研究成果发表于国内外一流学术期刊与学术会议。在软件工程领域的顶级国际期刊IEEE Transactions on Software Engineering上发表论文3篇;在软件工程领域顶级国际会议IEEE/ACM International Conference on Software Engineering(ICSE)发表论文1篇,在重要国际SCI期刊与主流国际会议发表论文6篇;在国内一级学报发表论文1篇,获得2016年IET Premium Award 等重要学术奖励。
{{i.achievement_title}}
数据更新时间:2023-05-31
基于LASSO-SVMR模型城市生活需水量的预测
居住环境多维剥夺的地理识别及类型划分——以郑州主城区为例
基于细粒度词表示的命名实体识别研究
基于协同表示的图嵌入鉴别分析在人脸识别中的应用
适用于带中段并联电抗器的电缆线路的参数识别纵联保护新原理
基于软件网络的回归测试用例排序方法研究
面向软件回归测试用例集优化的混合进化方法研究
基于GPGPU的软件回归测试用例多目标预优化
多目标约束下的回归测试用例优化策略研究