蜕变测试的测试用例生成技术的研究

来源 :吉林大学 | 被引量 : 0次 | 上传用户:zyb1026
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
编译器在软件的发展中扮演着非常重要的角色,同时也有越来越多的研究人员研究如何提高编译器的可靠性。如果编译器出现错误,那么这会影响所有使用该编译器编译的程序。但是,编译器的错误是难以识别的。因此,当编译器发生错误的时候,可能会导致编程人员无意识的错误,这产生的后果是非常严重的。测试编译器最重要的一个部分就是如何建立测试用例集合。但是测试用例集合的构造代价是巨大的。针对这个问题,目前有两个方法:基于参考的方法,和基于断言的方法。由于这两种方法都有一些弊端,这几年提出了一种新的方法—蜕变测试。蜕变测试是具有蜕变关系的两个或者几个测试用例作为待测程序的输入,观察输出是否具有期望的蜕变关系。现有的蜕变测试的测试用例生成方法主要有删除无效代码,不执行语句块替换,和等价模块替换等。基于此,本文提出一种新的蜕变方法。我们采用的蜕变关系也是等价关系,但本文是通过变量的值替换的方法和在变量替换后的程序基础上进行未执行代码删除的的方法构造等价蜕变关系,从而生成等价的程序组。本文首先简要介绍了编译器测试,蜕变测试的基础知识,并且介绍了本文工具的源程序生成工具—Csmith的工作原理。其次主要介绍了DeCsmith的工作流程,即Csmith生成的程序作为源程序,经过程序变异生成等价程序,输入到待测编译器,产生可执行文件,执行文件生成结果并做结果分析。再次主要对程序变异部分的原理和具体的实现进行介绍。本文通过对已知值的变量在其作用域内用其具体的值进行替换,并对变量替换后的程序进行未执行代码删除操作的方法构造等价蜕变关系,生成等价程序。变量替换主要利用clang工具提供的接口,进行程序至语法树的转换和语法树的访问,通过一个变量表记录变量的信息,依据语法树和变量表替换变量。未执行代码删除是利用gcov工具对变量替换后的程序进行执行次数统计,从而达到删除未执行代码的目的。最后,本文通过实验举例分析了利用DeCsmith测试编译器的结果,说明工具的有效性。本文的研究主要为蜕变测试的测试用例生成提供了一种新的方法,并且设计实现了基于Csmith的编译器测试用例的自动生成工具,为编译器测试提供了一定的帮助。
其他文献
老年人群是下呼吸道感染的主要人群,发病率和死亡率都较高.随着年龄的增长,基础疾病增多,口腔、上呼吸道的定植菌增加,吞咽功能障碍发生率增高,导致吸入性肺炎发生率增高,从
传统村落承载着中华五千年的历史文明,凝结了无数先民智慧的结晶。它们反映着不同的历史时期、地域条件以及社会发展阶段的演变,真实的记载着传统的物质空间形态和非物质文化遗产。然而,随着我国工业化、现代化、城镇化的发展,无数传统村落及其所承载的优秀文化都受到不同程度的冲击,部分传统村落面临着“千村一面”的特色危机,甚至陷入衰败消亡的困境。因此,处理好传统村落保护与发展的关系是目前亟待的关键问题。本文以渭南
本文基于陕西文化旅游名镇的保护及特色小镇的构建等重大战略背景,以地方感理论为切入点,以大荔县朝邑文化旅游名镇为实证案例,系统分析文化旅游名镇总体现状问题,挖掘影响朝邑文化旅游名镇地方感生成的关键地域基因,测度朝邑文化旅游名镇使用者(本地居民、外来游客)的地方感,探索基于使用者地方感的朝邑文化旅游名镇规划设计策略。首先,论述朝邑文化旅游名镇总体现状问题。系统梳理朝邑文化旅游名镇发展概况,对地理区位、
自从弗兰西斯.培根建立归纳逻辑以来,由于人们对于归纳逻辑的效用持有种种褒贬不一的观点,古典归纳逻辑经历了一个曲折的发展过程。从亚里士多德开始直到约翰.斯图亚特.穆勒,
随着网络计算机的普及运用,微博的诞生,不仅打破了传统的以报纸为媒介来传递信息的模式,同时还在一定程度上弥补了报纸上的不足。报纸微博的开通应用,在捕捉新闻要点、前移读者的
长期以来,我国学校道德教育的实效性还不尽善尽美,在一些方面呈现出低效、无效的情况。透过现象看本质,其本质原因是学校德育目标定得过于高,学校德育的要求超过学生的生活实际和认知水平。大多数情况是在虚拟道德教育情境下进行德育教育,这样导致在学校德育工作中出现名义上加强,实际上淡化,名义上落实,实际上落虚、甚至落空的现象。实践表明,只有让学生在体验中接受德育感染,在活动中提升品行情操,在交流中促进品行形成