- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译器优化测试方法研究
摘要:该文介绍了编译器优化技术、软件测试及编译器优化测试方法。对编译器优化测试方法进行了探究。
关键词:编译器;软件测试;编译器优化测试
中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)24-6065-02
1 编译器优化
编译器产生于20世纪60年代,是开发计算机应用系统不可缺少的重要工具,在计算机科学技术的发展历史中发挥着巨大的作用。通常所说的编译器是指,它能够把某种高级语言程序(源语言程序)转换为另一种低级语言程序(目标程序),而前者与后者在逻辑上是等价的。
优化的方法大多是缩减目标程序的代码规模或通过对程序的功能进行等价转换来提高目标程序的执行性能。编译器优化的目的是为了在时间和空间上使目标代码的效率低。优化可以在编译的不同阶段进行,可以在中间代码生成阶段,在进行语法分析和语义分析,在目标代码生成阶段进行优化。在同一阶段或在同一范围内,也可以进行多种优化。有在基本块内的局部优化,也有在全局范围内基于控制流程和数据流程分析的全局优化等。同时优化所完成的工作,既有与目标机器无关的对中间代码序列中一些代码进行移动、删除和修改,又有与目标机器有关的寄存器分配和对某些机器指的选择和使用等等。
从不同的角度来看,优化技术可分为多种类型。从源程序的角度,可分为局部优化和全局优化。局部优化是指在只有一个入口一个出口的本块内的优化。全局优化是指对程序整体范围内的优化。而从具体计算机的角度,可以分为与机器有关的优化和与机器无关的优化。与机器无关的优化指改进目标代码时不用考虑目标机器的任何特性。在编译优化的发展过程中出现了很多机器无关的优化算法,如:公共子表达式、复制传播、代码外提、无用代码删除等等。与机器有关的优化指的是依赖于目标机器的任何特性,如:寄存器分配、自动向量化、指令调度等等。
2 软件测试的概念
软件测试是通过有目的的运行软件程序来发现其缺陷的过程。软件测试的目的还在于发现错误;一个好的测试用例能发现从前未发现过的错误;一个成功的测试是指发现了从前未发现过的错误的测试。软件测试的本质是针对要测试的内容确定一组测试用例。所谓测试用例就是一个文挡,它是为特定的目标开发的测试输入、执行条件和预期结果的集合。测试用例按测试目的的不同可分为:需求测试用例,设计测试用例和代码测试用例。
3 编译器优化测试
3.1 编译器优化测试
一个编译器正确性应该包括以下内容:
1)词法、语法、语义检查的正确性
编译器在输入阶段能够正确识别源程序中的词法、语法或者语义错误,能接受词法、语法、语义正确的源程序。
2)目标程序合法性
经过编译器编译后生成的目标程序是正确合法的,能在目标机器上运行。
3)功能语义保持一致性
经过编译后的目标程序的功能语义和源程序应保持一致。
4)性能优化正确
编译优化测试指的是针对编译过程中的优化功能及效果进行测试。检测的内容包括:编译优化算法对代码的变换是否保持了程序的功能语义以及编译优化算法对代码的变换是否达到性能改进的目标。
3.2 编译器优化的测试方法
一般意义上的编译测试所指的是编译器的系统测试,也就是说,要对整个编译器的功能与性能进行测试。从测试方法上看,白盒测试方法基于测试部分源码实现的具体信息,所以一般用于针对编译器内部模块实现来进行测试。编译器系统测试一般使用黑盒测试方法,不考虑编译器内部具体的实现细节,仅基于功能性描述和编译器自身的规格说明。
在本文中研究的则是编译器优化测试,是对编译器系统功能的一种测试,此种测试不考虑单元测试和集成测试。编译器优化测试通常使用动态测试方法,有别于不利用计算机运行待测程序的静态方法,需要对具体的源程序进行动态的编译运行来分析编译系统的正确性以及目标程序的优化性能,即通过运行被测试软件来达到目的。编译优化测试的输入信息是用源语言(如高级语言)编写的程序,在经过编译器的编译之后得到目标代码,再经过汇编和链接转换成可执行文件,并在模拟机器上运行,测试的输出是源程序的运行信息,包括输出结果,运行时间和空间消耗,出错信息等。
3.3 编译优化测试主要内容
编译优化测试的主要活动和其它软件的测试活动一样,利用测试用例按照测试方案和流程进行功能和性能测试,包括测试用例的生成、测试用例选取以及测试结果判定等多个方面。
1) 生成测试用例
测试用例生成是测试活动中非常关键的一个内容。测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档,简单地说,就是指程序运行的输入及相
文档评论(0)