一种基于测试信息的交互式错误定位方法

来源 :北京大学 | 被引量 : 0次 | 上传用户:pyane
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
程序员很难保证首次书写的代码是正确的。因此,排错是软件开发过程中必不可少且有相当难度的工作。此外,在软件维护阶段,程序员常常需要对别人书写的代码进行排错。这种情况下,程序员的排错工作就更加困难。所以,排错是软件开发维护过程中必不可少的重要组成部分,且耗时耗力。 一般而言,排错包括两个阶段的任务:确定程序中错误语句的位置(即:错误定位)以及修改错误语句(即:纠错)。在程序排错的这两阶段任务中,错误定位活动的工作量更大。如果能够在错误定位方面的研究取得一定的进展,那么就可以有效地减少整个排错活动的工作量。因此,错误定位是当前排错领域研究的重点,也是本文关注的焦点。 为了帮助程序员确定程序中错误语句的位置,研究人员曾提出过各种各样的错误定位方法。由于基于测试信息的错误局部化方法,可以充分利用测试阶段获得的测试用例相关信息,有效地缩小程序中可疑语句(可能是错误的语句)的范围,因此,这类方法得到了人们更多的关注,并被认为是最有前途的方法之一。但是,这类方法本身还存在着一些尚待解决的问题。首先,这类方法需要大量高质量的测试用例及其执行信息,包括测试用例的执行结果判断信息。但是,实际软件开发过程很难保证提供这些信息。其次,这类方法只能帮助程序员缩小程序中可疑语句的范围,却不能够有效支持整个错误定位过程。为了解决这些现有研究中尚待解决的问题,本文提出了一种帮助程序员省力快捷地定位错误的解决方案。具体工作包括: 1.提出了一种基于测试信息的交互式错误定位框架。这个框架在对测试信息进行统计分析的基础上,结合程序员在错误定位过程中提供的反馈信息。这个框架的输入包括大量的测试输入和一条执行结果错误的测试用例。本文提出基于测试信息的交互式错误定位框架,旨在减少错误定位过程中程序员的工作量--包括检查测试输入对应的执行结果以及设置程序断点。基于这个目的,该框架的实施过程可以分成三个阶段:测试信息筛选、基于测试信息的语句可疑度计算、结合程序员反馈信息的错误定位过程。此外,本论文还提供了分别支持这三个阶段的具体技术。 2.提出了一种面向错误定位的测试输入选择技术。基于测试信息的交互式错误定位过程需要大量测试用例的信息,包括这些测试用例的语句覆盖以及这些测试用例的执行结果是否正确。然而,依据测试预言问题,测试用例的执行结果是否与预期一致,通常需要由程序员自己确定。显然,检查大量测试输入对应的执行结果是否与预期一致,对于程序员而言,既繁琐,又困难。于是,本文提出一种面向错误定位的测试输入选择技术,它利用测试输入对应的语句覆盖信息,选择少量的测试输入,并且保证这些被选出的测试输入在语句上的区分能力更强。于是,程序员只需检查这少量测试输入对应的执行结果,就可以为错误定位过程提供足够的测试信息。 3.提出了一种考虑测试用例相似性的语句可疑度计算方法(SAFL),这种方法主要用来度量程序中每条语句可能是错误的可疑程度。这里的相似性指的是,不同测试用例执行了一些相同语句。尽管研究人员曾提出过其它计算语句可疑度的算法,但是这些算法都忽略了测试用例相似性的影响。与这些已有的语句可疑度计算方法不同,SAFL使用模糊集合论和条件概率来计算语句的可疑度。 4.提出了一种结合程序员反馈信息于错误定位过程的具体策略。这种策略首先仅根据测试信息为程序员推荐第一个程序检查点,然后,程序员评估这个检查点,并提供这个检查点附近的检查反馈信息。接着,依据测试信息和程序员在以往程序检查点曾给出的反馈信息,这种策略不断为程序员推荐新的检查点,直至程序员发现错误语句为止。 5.给出了实验分别验证支持基于测试信息的交互式错误定位框架的三项核心技术。这几组实验分别把面向错误定位的测试输入选择技术、考虑测试用例相似性的语句可疑度计算方法、结合程序员反馈信息于错误定位过程的具体策略这三项技术与现有的相关研究做比较,实验结果验证了这三种技术的有效性,进而保证了基于测试信息的交互式错误定位方法的有效性。进一步地,本文还分析了基于测试信息的交互式错误定位工具TIFL的需求,并给出它的系统设计。
其他文献
本文以未来指挥自动化系统为背景,针对其分布式多域系统结构的特点以及对高效数据采集系统的需求,并在分析常用数据采集相关技术的基础上,构建了一种高效的适用于分布式多域系统
在当前智能办公领域的应用研究中,“以人为中心”的服务理念已经得到了广泛的共识。通过将上下文感知技术和数据挖掘技术融合于一体,本文设计并实现了一个面向会议情景的个人
系统芯片SOC(System On a Chip)的出现使得整个系统在一个芯片上实现成为可能,但设计的复杂性和TTM(Time to Market)也给设计方法和设计流程提出了更高要求。高级综合HLS(High
2002年,OMG(国际对象管理组织)提出了MDA(模型驱动构架)。MDA的目标是把业务和应用逻辑与底层的平台技术分离。基于MDA及相关标准的平台独立应用能够在一些开放或者专有平台上
学位
叙事自动生成是一个重要的研究方向。目前,我们正在研究一种基于知识和用户需求的叙事自动生成方法和系统。骗局是一种特殊的过程,它既可以独立地作为一个完整的叙事,又可以成为
随着本体作为一种信息的组织形式被广泛的应用到水利[1]、词的组织[2]、交通[3]、艺术[4]等相关的领域中,本体的数目和数量增长的越来越快。由于在初期构建本体的时候,专家不
随着通信技术的快速发展和人们对通信技术智能性要求的提高,各种新型网络技术开始广泛使用,自组织网络正是在这种背景下被提出的。移动自组织网络(Ad Hoc)由一系列可以在缺少
随着信息处理技术在通信、金融、工业生产等领域的广泛应用,数据已经不仅仅拘泥于文件、数据表等传统形式。大量连续、变化的流式数据在越来越多的现代应用中出现,例如军事指挥
随着CDN-P2P融合技术研究的深入,CDN-P2P网络在内容分发方面资源定位效率低下的问题越来越突出。为了提高网络的可扩展性与请求内容的响应速度,CDN-P2P中的P2P网络采取无结构
学位