编译器测试方法、用例生成方法及装置、指令存储结构制造方法及图纸

技术编号:34332286 阅读:18 留言:0更新日期:2022-07-31 02:18
本公开实施例提供一种编译器的测试方法、装置、设备及存储介质、测试指令的存储结构。所述方法包括:基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令;利用待测试的编译器编译所述测试用例,得到目标编译指令;基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器是否存在异常。本公开实施例可以实现编译器的自动化测试,提高测试效率和测试结果的准确性。高测试效率和测试结果的准确性。高测试效率和测试结果的准确性。

Compiler test method, case generation method and device, instruction storage structure

【技术实现步骤摘要】
编译器测试方法、用例生成方法及装置、指令存储结构


[0001]本公开涉及计算机
,尤其涉及一种编译器的测试方法、用例生成方法方、装置、设备及存储介质、测试指令的存储结构。

技术介绍

[0002]编译器通常用于将程序由一种语言编译成另外一种语言,编译器编译结果的准确性是保证程序正常运行的前提。如果编译器的功能出现异常,不仅会使得程序得不到原本想要的运行结果,甚至还会对后续程序的debug产生误导。因而,在研发一种编译器后,有必要提供一种可以对该编译器进行测试的方案,以及时发现编译器存在的异常。

技术实现思路

[0003]本公开提供一种编译器的测试方法、用例生成方法、装置、设备及存储介质、测试指令的存储结构。
[0004]根据本公开实施例的第一方面,提供一种编译器的测试方法,所述方法包括:
[0005]基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令;
[0006]利用待测试的编译器编译所述测试用例,得到目标编译指令;
[0007]基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器是否存在异常。
[0008]在一些实施例中,所述测试用例包括功能性测试用例和/或稳定性测试用例,每个所述功能性测试用例包括单条测试指令,用于测试所述编译器的功能;每个所述稳定性测试用例由多条测试指令拼接得到,用于测试所述编译器的稳定性。
[0009]在一些实施例中,所述稳定性测试用例符合以下一种或多种条件:
[0010]所述编译器编译所述稳定性测试用例的时长大于预设时长;
[0011]所述稳定性测试用例中包括的测试指令数量大于预设数量;
[0012]所述稳定性测试用例的数据量大于预设数据量。
[0013]在一些实施例中,所述测试用例包括功能性测试用例以及稳定性测试用例,基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器是否存在异常,包括:
[0014]基于每个功能性测试用例对应的参考编译指令,与每个功能性测试用例对应的目标编译指令的比对结果,判定所述编译器的功能是否存在异常;
[0015]在所述编译器的功能不存在异常的情况,基于所述稳定性测试用例对应的参考编译指令,与所述稳定性测试用例对应的目标编译指令的比对结果,判定所述编译器的稳定性是否存在异常。
[0016]在一些实施例中,所述测试指令包括多个组成部分,所述与测试指令相关的数据包括任一组成部分对应的多条特征数据以及任一条特征数据对应的参考编译数据,任一个
组成部分对应的特征数据与所述多个组成部分中除该任一个组成部分之外的其余组成部分对应的特征数据关联存储。
[0017]在一些实施例中,所述组成部分包括以下一种或多种:指令类型、控制域、指令地址,其中,所述控制域用于表示所述测试指令包括的控制操作。
[0018]在一些实施例中,所述测试用例包括用于测试所述编译器功能的多个功能性测试用例,基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令,包括:
[0019]遍历所述多个组成部分对应的每条特征数据,针对任一所述组成部分对应的任一条目标特征数据,分别从所述多个组成部分中除该任一组成部分以外的其余组成部分中确定与所述目标特征数据关联存储的关联特征数据;
[0020]基于所述目标特征数据和所述关联特征数据生成测试指令,基于所述目标特征数据对应的参考编译数据,以及所述关联特征数据对应的参考编译数据得到所述测试指令对应的参考编译指令;
[0021]分别将生成的每个测试指令作为一个功能性测试用例,将每个测试指令对应的参考编译指令作为该功能性测试用例对应的参考编译指令。
[0022]在一些实施例中,所述测试用例包括用于测试所述编译器稳定性的稳定性测试用例,基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令,包括:
[0023]针对任一所述组成部分中的任一条目标特征数据,分别从所述多个组成部分中除该任一组成部分以外的其余组成部分中确定与所述目标特征数据关联存储的关联特征数据;
[0024]基于所述目标特征数据和所述关联特征数据生成测试指令,基于所述目标特征数据对应的参考编译数据,以及所述关联特征数据对应的参考编译数据得到所述测试指令对应的参考编译指令;
[0025]利用生成的多个测试指令拼接得到所述稳定性测试用例,利用所述多个测试指令对应的参考编译指令拼接得到所述稳定性测试用例对应的参考编译指令。
[0026]在一些实施例中,所述测试指令相关的数据通过树型结构存储,任一树型结构的根节点用于存储所述指令类型中的一条目标特征数据以及该目标特征数据对应的参考编译数据,所述树型结构的子节点至所述树型结构的叶子节点用于顺次存储所述控制域中与所述目标特征数据关联的第一关联特征数据、该第一关联特征数据对应的参考编译数据,以及所述指令地址中与所述目标特征数据及所述第一关联特征数据关联的第二关联特征数据。
[0027]在一些实施例中,所述基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令,包括:
[0028]获取所述树型结构中从根节点到叶子节点的任一路径中的各节点存储的特征数据,以及所述特征数据对应的参考编译数据;
[0029]将各节点存储的特征数据拼接得到一条测试指令,将各节点存储的特征数据对应的参考编译数据拼接得到该测试指令对应的参考编译指令;
[0030]基于得到的测试指令构建测试用例,以及基于所述测试指令对应的参考编译指令
构建所述测试用例对应的参考编译指令。
[0031]在一些实施例中,在基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器存在异常之后,所述方法还包括:
[0032]输出测试报告,所述测试报告包括以下一种或多种信息:异常的类型、出现异常的测试指令、所述测试指令中出现异常的组成部分;
[0033]其中,所述异常的类型包括功能异常或稳定性异常,所述组成部分包括指令类型、控制域、指令地址。
[0034]根据本公开实施例的第二方面,提供一种测试指令的存储结构,所述存储结构包括:树型结构存储结构;
[0035]所述树型结构用于存储与测试指令相关的数据;所述与测试指令相关的数据包括测试指令的多个组成部分中各组成部分对应的多条特征数据,以及每条特征数据对应的参考编译数据;所述多个组成部分包括指令类型、控制域以及指令地址,所述控制域表示所述测试指令包括的控制操作;
[0036]其中,所述树型结构的根节点用于存储所述指令类型中的一条目标特征数据以及该目标特征数据对应的参考编译数据,所述树型结构的子节点至所述树型结构的叶子节点用于顺次存储所述控制域中与所述目标特征数据关联的第一关联特征数据、该第一关联特征数据对应的参考本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种编译器的测试方法,其特征在于,所述方法包括:基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令;利用待测试的编译器编译所述测试用例,得到目标编译指令;基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器是否存在异常。2.根据权利要求1所述的方法,其特征在于,所述测试用例包括功能性测试用例和/或稳定性测试用例,每个所述功能性测试用例包括单条测试指令,用于测试所述编译器的功能;每个所述稳定性测试用例由多条测试指令拼接得到,用于测试所述编译器的稳定性。3.根据权利要求2所述的方法,其特征在于,所述稳定性测试用例符合以下一种或多种条件:所述编译器编译所述稳定性测试用例的时长大于预设时长;所述稳定性测试用例中包括的测试指令数量大于预设数量;所述稳定性测试用例的数据量大于预设数据量。4.根据权利要求2或3所述的方法,其特征在于,所述测试用例包括功能性测试用例以及稳定性测试用例,基于所述测试用例对应的参考编译指令与所述目标编译指令的比对结果,判定所述编译器是否存在异常,包括:基于每个功能性测试用例对应的参考编译指令,与每个功能性测试用例对应的目标编译指令的比对结果,判定所述编译器的功能是否存在异常;在所述编译器的功能不存在异常的情况,基于所述稳定性测试用例对应的参考编译指令,与所述稳定性测试用例对应的目标编译指令的比对结果,判定所述编译器的稳定性是否存在异常。5.根据权利要求1

4任一项所述的方法,其特征在于,所述测试指令包括多个组成部分,所述与测试指令相关的数据包括任一组成部分对应的多条特征数据以及任一条特征数据对应的参考编译数据,任一个组成部分对应的特征数据与所述多个组成部分中除该任一个组成部分之外的其余组成部分对应的特征数据关联存储。6.根据权利要求5所述的方法,其特征在于,所述组成部分包括以下一种或多种:指令类型、控制域、指令地址,其中,所述控制域用于表示所述测试指令包括的控制操作。7.根据权利要求5或6所述的方法,其特征在于,所述测试用例包括用于测试所述编译器功能的多个功能性测试用例,基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令,包括:遍历所述多个组成部分对应的每条特征数据,针对任一所述组成部分对应的任一条目标特征数据,分别从所述多个组成部分中除该任一组成部分以外的其余组成部分中确定与所述目标特征数据关联存储的关联特征数据;基于所述目标特征数据和所述关联特征数据生成测试指令,基于所述目标特征数据对应的参考编译数据,以及所述关联特征数据对应的参考编译数据得到所述测试指令对应的参考编译指令;分别将生成的每个测试指令作为一个功能性测试用例,将每个测试指令对应的参考编译指令作为该功能性测试用例对应的参考编译指令。
8.根据权利要求5或6所述的方法,其特征在于,所述测试用例包括用于测试所述编译器稳定性的稳定性测试用例,基于指令数据库中存储的与测试指令相关的数据构建测试用例,以及所述测试用例对应的参考编译指令,包括:针对任一所述组成部分中的任一条目标特征数据,分别从所述多个组成部分中除该任一组成部分以外的其余组成部分中确定与所述目标特征数据关联存储的关联特征数据;基于所述目标特征数据和所述关联特征数据生成测试指令,基于所述目标特征数据对应的参考编译数据,以及所述关联特征数据对应的参考编译数据得到所述测试指令对应的参考编译指令;利用生成的多个测试指令拼接得到所述稳定性测试用例,利用所述多个测试指令对应的参考编译指令拼接得到所述稳定性测试用例对应的参考编译指令。9.根据权利要求6

8任一项所述的方法,其特征在于,所述测...

【专利技术属性】
技术研发人员:苗瑞秋侯化成王野徐宁仪
申请(专利权)人:上海阵量智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1