论文部分内容阅读
为了提高测试效率,缩短软件开发周期,自动化软件测试受到越来越多的关注。单元测试作为测试工作的第一步,对软件中的最小单元模块进行测试。任何模块都不是独立的,可能需要调用其它模块完成目标功能。单元测试一般采用打桩技术对被调用模块进行处理,现有打桩技术都存在自动化程度低或者影响测试覆盖率的缺点,需要进行进一步研究。论文围绕提高打桩的自动化程度和满足高覆盖率要求进行了如下工作:(1)提出了一种面向路径的自动化打桩方法,该方法以数据流分析技术、路径敏感的区间运算技术和符号执行技术为核心,确定函数调用的影响失效点,计算路径对函数各调用点的限定条件,桩函数根据路径限定条件和调用点的上下文信息动态调整输出,保证待测程序能够按照目标路径执行,提高单元测试的覆盖率。(2)为了对单元回归测试进行支持,定义了一种基于JSON文法的桩函数后置信息中间表示格式,并设计了相应的序列化和反序列化算法,实现桩函数后置信息反馈和持久存储,回归测试时,根据数据库中保存的信息驱动自动化桩代码生成,实现对回归测试的支持。作者在单元自动化测试系统(Unit Automatic Test System, UATS)中实现了上述方法,对大型开源程序进行测试的结果表明,该方式将平均覆盖率由50%提高到81%,对于等价表达式较多的函数,覆盖率提高了10倍,并能对单元回归测试进行有效支持,验证了其在单元测试中的作用。