论文部分内容阅读
编译器是软件开发的基础支撑工具。它的正确性直接影响着应用软件的质量。因此编译器的质量是至关重要的。正如其他软件一样,软件测试对于编译器的开发来说是质量保证和错误检测最为重要的方法。编译器是对程序语言标准关于语法与语义规定的实现,具有复杂的输入空间与软件行为。确保对编译器进行全面的测试覆盖是不可能的,如何生成有效的测试用例集合成为编译器测试的关键问题。编译器测试的测试用例是源语言程序,结构复杂。手工生成方式不仅工作量大,而且难以保证充分的测试覆盖度。自动化的测试用例生成方法可以在一定程度上解决这一问题。所生成的测试用例集应对源语言的语法结构特征、语义属性具有良好的覆盖性。已有的编译器测试用例生成方法大多是基于文法覆盖的生成方法。由于文法覆盖规则对于语言语法结构的描述能力有限,所生成的测试用例集不能足够地揭示语言的语法结构。对此,本文对语言的文法定义进行分析,采用二叉树结构对语言的语法结构进行描述,并按照语法单元相互组合的方式生成测试数据;同时引入语法单元的计算路径长度对所生成的测试用例空间以及生成过程进行控制,给出一种基于计算路径长度的测试用例生成方法。通过调整计算路径长度的取值,这种方法所生成的测试用例集可以包含基于文法覆盖所生成的测试用例集,具有更强地对语言的语法结构覆盖能力。