论文部分内容阅读
可达性测试是并发程序测试的一种重要方法,具有在给定输入下生成并执行所有可行同步序列且无需记录任何历史信息等诸多优势。并发程序在开发过程中会经历多次修改,产生多个程序版本。在并发程序的演化过程中,直接对各个版本的并发程序进行可达性测试,将面临测试序列集过大而难以穷尽以及效率较低等问题。 为了解决上述问题,本文对处于演化过程中的Java并发程序可达性测试技术进行了较为深入的研究。文中首先通过语句级的细粒度程序切片、方法级粗粒度程序切片以及概念格等修改影响分析技术,识别出程序中受程序修改影响的代码部分,获取受修改影响的同步事件集合,在此基础上探索可达性测试约减技术,提出基于修改影响分析的回归可达性测试方法。 基于修改影响分析的回归可达性方法采用动态框架,无需构造程序静态模型和记录已执行的同步序列,保证选取的同步序列仅执行一次,所构造的竞争表仅覆盖受影响同步事件的所有竞争结果。根据本文算法,我们实现了一个回归可达性测试原型工具RegRichTest,并通过实验与现有可达性测试工具进行比较,验证了回归可达性测试方法的有效性。实验结果表明,与现有可达性测试方法相比,采用基于修改影响分析的回归可达性测试方法不仅明显约减可达性测试过程中产生的同步序列数,提高测试效率,同时还保持了较好的程序检错能力。