本项目拟针对软件回归测试的效率问题,研究基于被测软件内部模块历史执行数据预存与复用的回归测试加速技术,目标是实现回归测试执行过程的加速。重点研究回归测试加速技术的基础概念、适用性条件、正确性验证、以及可加速模块的识别、选取、加速处理等基础支撑技术,拟通过实验观察回归测试加速技术的实际效果,分析其关键影响因素,优化相应的支撑技术,同时考察外部测试条件对加速效果的影响,并研究面向回归测试加速技术的可测试性改进方法。项目预期将解决回归测试加速技术的各个基础问题,实现一个完整的支持回归测试加速技术的回归测试支撑平台,并对回归测试加速技术的实际效果、影响因素、适用性等获得较为全面的研究结论。项目的预期成果对回归测试具有较好的应用价值,有利于提高回归测试的效率和质量,所涉及的各种程序分析问题对相关领域也具有一定的参考价值。
software testing;regression testing;data reuse;program analysis;pure function
软件回归测试是软件系统修改或升级后所采取的一种测试技术,因其有效而且高效而被广泛采用。近十年以来,回归测试效率的问题被广泛研究,但主要工作是测试用例的选择和测试用例排序。本项目基于对软件程序在回归测试过程中执行过程的观察,提出从另一个角度尝试提高软件回归测试的执行效率,即通过复用“可加速模块”软件模块计算结果对回归测试过程进行加速。本项目首先从原理上探索了通过复用“可加速模块”计算结果对回归测试进行加速的“可能性”,然后探索和分析了回归测试加速技术实际效果的影响因素、主要成本代价、实际软件的适用性。分析结果表明,我们初始提出的回归测试加速技术框架虽然理论上可以带来加速效果,但存在着适用条件苛刻、额外开销多的问题,这使得该技术很难在实际软件开发活动中得到实用。基于对这些问题和结论的认识,我们退而求其次,提出了几种结合被测软件结构特征的简化应用模式。本报告给出了我们对回归测试加速技术的认识,包括原理和技术的探索、实用性分析、模式简化、以及一些失败的尝试,供后来者参考。