基于最弱前置条件计算的软件测试与错误定位方法研究

来源 :中国科学院大学 | 被引量 : 0次 | 上传用户:dulcimerqin
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
如今,软件在人们的社会生活中占据越来越重要的地位,软件的正确性也受到人们越来越多的重视。特别是随着敏捷开发、开源软件等快速迭代开发模式的出现,人们对软件的安全可信提出了更高的要求。据统计,软件测试及维护占50%~75%的软件开发成本。软件测试是保证软件安全的重要手段,它的主要任务是发现软件设计缺陷,进而要求开发人员分析并修复缺陷。  早期软件测试主要由人工完成,测试人员通过对软件功能的理解构建测试输入与期望输出。随后,自动化软件测试技术开始出现并不断发展。随着计算机计算能力的提高以及约束求解等技术的不断发展,基于符号执行技术的测试用例自动构造方法得到了广泛的重视和应用。然而符号执行技术的分析规模极大受困于路径爆炸问题。在测试阶段发现软件实现错误后,开发人员需要分析其产生的错误原因,进而正确的修复该错误。错误的缺陷修复不但无法修复已发现的错误,相反还会引起其它不可预期的缺陷甚至灾难。然而,目前的软件错误定位方法大多提供较少的信息帮助开发人员理解错误形成的原因,从而难以有效的指导开发人员正确修复发现的错误。  针对上述研究现状,本论文研究致力于研发有效的软件测试与错误定位方法。本论文首先提出一种基于最弱前置条件计算的分析框架,在此基础上提出一种基于符号执行技术的测试用例自动生成方法,该方法能有效的缓解符号执行技术面临的路径爆炸问题。随后,本论文基于该框架提出一种有效的错误定位方法,该方法可以提供有效信息帮助开发人员理解错误的形成原因。最后,本论文针对演化场景中出现的软件错误,提出一种全自动错误定位方法,该方法在自动定位错误相关的代码修改块时,还会提供有效的错误理解信息。  本论文的主要工作包括以下五部分:  1.基于程序执行路径的最弱前置条件计算框架。  本论文提出一种基于程序执行路径的最弱前置条件计算框架,其输入为一条具体的执行路径,它沿着该执行路径执行反向分析并计算最弱前置条件。本论文的后续研究会基于该框架提出有效的符号执行加速方法与错误定位方法。  2.基于最弱前置条件计算的符号执行加速方法。  基于大部分执行路径共享相同后缀执行路径的特性,本论文提出一种有效的符号执行加速算法以提高符号执行技术的分析规模。该方法通过裁剪公共后缀路径以减少重复分析冗余路径,缓解符号执行路径爆炸问题。在完成每条执行路径遍历后,该方法通过前置条件计算框架为每个分支执行点更新从该点出发的子路径集合摘要,并在后续路径遍历中使用当前摘要信息裁剪冗余的子路径。该方法在加速符号执行分析效率的同时,不会裁剪任何非冗余的执行路径。本论文基于最弱前置条件计算框架实现了该方法的原型工具,并在Linux应用程序上展开相关实验,实验表明该方法能安全而有效的裁剪实际程序中的冗余执行路径,提高了符号执行的分析效率。  3.基于最弱前置条件计算的级联式错误定位方法。  在错误修复阶段,为了给开发人员提供有效的错误理解信息,本论文提出了一种级联式错误定位方法。通过最弱前置条件计算及约束求解技术,该方法通过级联式分析方法计算导致错误发生的所有可能原因,并将其组织成帮助开发人员易于理解错误的原因树。为了提高分析效率,本论文还提出了一系列的优化策略,从而保证该方法的有效性。本论文基于最弱前置条件计算框架实现了该方法的原型工具,在大量实际程序上的实验结果表明该工具能提供有效的信息辅助开发人员理解错误形成原因。  4.基于最弱前置条件计算的演化软件错误定位方法。  对于演化中的软件,本论文提出一种语义分析与动态分析相协同的回归测试错误定位方法。该方法在语义分析阶段产生有效信息帮助开发人员理解错误形成原因,同时它会利用动态分析确定引起错误发生的代码修改块。该方法充分结合了语义分析和动态分析的优点,提高了错误定位的有效性与准确性。本论文基于最弱前置条件计算框架实现了此协同分析方法的原型工具,并在Linux应用程序的演化错误上展开分析,其实验结果表明该方法既能提供有效信息帮助开发人员理解错误原因,也能准确定位导致错误发生的程序代码修改块。  5.基于最弱前置条件计算的软件测试与错误定位实例。  为了系统说明本论文中提出的符号执行加速方法与错误定位方法的可用性以及有效性,本论文在一个实际含有错误的程序上相继展开软件测试与错误定位分析。实例分析结果表明,本论文提出的符号执行加速方法能快速生成覆盖非冗余路径的测试用例集,而错误定位方法能有效的分析错误发生原因,且能快速而准确的标识演化版本中引起错误的程序修改块集合。
其他文献
如今,软件系统的复杂度越来越大,而对软件系统的可靠性、时效性的要求也越来越高。如何在保证软件产品质量的前提下有效控制产品的开发和维护成本,是企业提升市场竞争力的关键。
如今,随着计算机和互联网的蓬勃发展,给人类的生活带来了革命性的变化。而不论是计算机基础应用还是互联网,表示和查找已经成为大多数计算机应用的核心。BloomFilter是一种空间
近年来,随着传感器网络和RFID技术的发展,基于数据流的应用已经无所不在。数据流上的应用大多是监控型的,并且这些监控任务一般是简单事件的组合,但简单的数据流管理系统(DSMS)一
随着定位技术的普及和无线传输技术的发展,大量轨迹数据正以各种方式快速产生和收集起来,并被广泛用于基于位置的服务(LBS)、无人驾驶、动物行为研究、气象预测和城市规划等领
特征的表达和融合是计算机视觉算法中的两个重要部分。例如,在基于骨架的人体行为识别中,如何表达三维骨架的几何关系对于行为识别效果有至关重要的影响。然而很多现有的研究都
文本倾向性分析是自然语言处理一个十分重要的问题,在信息过滤,电子商务,观点搜索,自动问答等领域具有广泛的应用场景。 本文主要考察句子一级的观点自动抽取和倾向性自动识别
博客是一种基于RSS技术的信息交互平台,目前发展极为迅速。博客作者常常就感兴趣的话题发表文章、做出评论,对感兴趣的其他作者添加为好友,这些特征行为构成了潜在的博客社区。
稀疏数据是指包含大量空值的数据,具有维度高、稀疏、模式易变等特点。稀疏数据在实际应用中的大量出现给现代的RDBMS带来了巨大的挑战。在各类海量数据管理系统中,如何设计稀
强化学习是与传统的监督学习完全不同的学习框架。在强化学习中,agent感知环境的状态并采取相应的动作,同时得到环境的奖赏反馈。agent无需假设任何有关环境的先验知识,而是通过
软件体系结构作为高层的设计蓝图,在软件系统开发的过程中,其主要角色包括:支持开发人员之间的交流、直接支持系统开发、支持软件复用等。目前存在的问题是软件体系结构设计不断