基于强化学习的代码测试方法、装置以及设备制造方法及图纸

技术编号:38486086 阅读:14 留言:0更新日期:2023-08-15 17:01
本公开的实施例提供了一种基于强化学习的代码测试方法、装置以及设备,应用于网络安全技术领域。所述方法包括获取待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径;将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果,所述测试结果包括所述待测代码中可能出错的代码段,以及所述代码段对应的错误类型、函数名称和代码行号。以此方式,可以在代码测试过程中基于预先训练好的代码测试模型适应动态变化的数据和复杂的逻辑关系,进而提高代码测试的效率和正确率。高代码测试的效率和正确率。高代码测试的效率和正确率。

【技术实现步骤摘要】
基于强化学习的代码测试方法、装置以及设备


[0001]本公开涉及计算机
,尤其涉及网络安全
,具体涉及一种基于强化学习的代码测试方法、装置以及设备。

技术介绍

[0002]代码质量问题是漏洞产生的主要根源。为了避免漏洞的产生,常用的代码测试方法包括手工测试和自动化测试,但是,基于人工处理的手工测试代码的方式,存在效率和正确率较低的问题;基于固定规则的自动化测试代码的方式,存在处理类型比较有限,且仅限处理静态数据,无法适应动态变化的数据,尤其是复杂的逻辑关系的问题。

技术实现思路

[0003]本公开提供了一种基于强化学习的代码测试方法、装置以及设备。
[0004]根据本公开的第一方面,提供了一种基于强化学习的代码测试方法。该方法包括:获取待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径;将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果,所述测试结果包括所述待测代码中可能出错的代码段,以及所述代码段对应的错误类型、函数名称和代码行号。
[0005]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,获取待测代码中各关键字及其对应的代码行号、编号包括:提取待测代码中的各关键字和各关键字对应的代码行号;按照预设编号规则对各关键字进行编号,得到各关键字对应的编号。
[0006]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,获取待测代码中各关键字所在函数的函数名称和嵌套深度包括:按照预设构建规则,构建所述待测代码中的各代码块,并得到各关键字所在函数的函数名称和嵌套深度,其中,各关键字在不同的嵌套层次。
[0007]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,获取待测代码中各关键字对应的路径包括:根据各关键字对所述待测代码进行拆分,得到多个单词块;将各代码块按照各关键词的嵌套深度进行组织,建立树形关系;将所述树形关系进行全路径遍历,生成各单词块的全路径索引;根据各单词块的全路径索引,生成各关键字的路径。
[0008]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,在所述将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果之前,所述方法还包括:提取历史待测代码中的各关键字,并获取所述历史待测代码中各关键字对应的代
码行号;根据所述历史待测代码中各关键字对所述历史待测代码进行拆分,得到多个单词块;按照预设编号规则对所述历史待测代码中各关键字进行编号,得到所述历史待测代码中各关键字对应的编号;按照预设构建规则,构建所述历史待测代码中的各代码块,并得到所述历史待测代码中各关键字所在函数的函数名称和嵌套深度;将所述历史待测代码中各代码块按照嵌套深度进行组织,建立树形关系;将所述树形关系进行全路径遍历,生成各单词块的全路径索引;根据各单词块的全路径索引,生成所述历史待测代码中各关键字的路径;获取所述历史待测代码对应的测试结果,所述历史待测代码对应的测试结果包括所述历史待测代码中的出错代码段,以及所述出错代码段对应的错误类型、函数名称和代码行号;将所述历史待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径作为样本,所述历史待测代码对应的测试结果作为标注得到的训练集,对预设强化学习模型进行训练;迭代计算测试后的预设强化学习模型输出的测试结果与标注的分类准确度,直至所述分类准确度大于分类准确度阈值,得到训练好的代码测试模型。
[0009]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述方法还包括:每当所述预设强化学习模型输出一个测试结果时,所述预设强化学习模型的激励函数将根据出错代码段对应的错误类型和代码行号,对出错代码段包括的关键字进行评价,得到关键字所在代码行对应的评分;根据所述评分,按照从高至低的顺序对所述历史待测代码中各关键字所在代码行进行优先级排序,以使所述预设强化学习模型输出下一个测试结果时,优先访问优先级高的代码行。
[0010]如上所述的方面和任一可能的实现方式,进一步提供一种实现方式,所述预设强化学习模型为支持向量机、决策树或者邻近算法。
[0011]根据本公开的第二方面,提供了一种基于强化学习的代码测试装置。该装置包括:获取模块,用于获取待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径;输出模块,用于将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果,所述测试结果包括所述待测代码中可能出错的代码段,以及所述代码段对应的错误类型、函数名称和代码行号。
[0012]根据本公开的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
[0013]根据本公开的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如以上所述的方法。
[0014]本申请实施例提供的一种基于强化学习的代码测试方法、装置以及设备,能够通过获取并将待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出待测代码的测试结果,其中,测试结果包括待测代码中可能出错的代码段,以及代码段对应的错误类型、函数名称和代码行号,从而在代码测试过程中基于预先训练好的代码测试模型适应动态变化的数据和复杂的逻辑关系,进而提高代码测试的效率和正确率。
[0015]应当理解,
技术实现思路
部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。
附图说明
[0016]结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。附图用于更好地理解本方案,不构成对本公开的限定在附图中,相同或相似的附图标记表示相同或相似的元素,其中:图1示出了根据本公开的实施例的基于强化学习的代码测试方法的流程图;图2示出了根据本公开的实施例的待测代码的示意图;图3示出了根据本公开的实施例的基于强化学习的代码测试装置的框图;图4示出了能够实施本公开的实施例的示例性电子设备的方框图。
具体实施方式
[0017]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
[0018]另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于强化学习的代码测试方法,其特征在于,包括:获取待测代码中各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径;将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果,所述测试结果包括所述待测代码中可能出错的代码段,以及所述代码段对应的错误类型、函数名称和代码行号。2.根据权利要求1所述的方法,其特征在于,获取待测代码中各关键字及其对应的代码行号、编号包括:提取待测代码中的各关键字和各关键字对应的代码行号;按照预设编号规则对各关键字进行编号,得到各关键字对应的编号。3.根据权利要求2所述的方法,其特征在于,获取待测代码中各关键字对应的函数名称和嵌套深度包括:按照预设构建规则,构建所述待测代码中的各代码块,并得到各关键字所在函数的函数名称和嵌套深度,其中,各关键字在不同的嵌套层次。4.根据权利要求3所述的方法,其特征在于,获取待测代码中各关键字对应的路径包括:根据各关键字对所述待测代码进行拆分,得到多个单词块;将各代码块按照各关键词的嵌套深度进行组织,建立树形关系;将所述树形关系进行全路径遍历,生成各单词块的全路径索引;根据各单词块的全路径索引,生成各关键字的路径。5.根据权利要求1所述的方法,其特征在于,在所述将各关键字及其对应的代码行号、编号、函数名称、嵌套深度以及路径,输入至预先训练好的代码测试模型,输出所述待测代码的测试结果之前,所述方法还包括:提取历史待测代码中的各关键字,并获取所述历史待测代码中各关键字对应的代码行号;根据所述历史待测代码中各关键字对所述历史待测代码进行拆分,得到多个单词块;按照预设编号规则对所述历史待测代码中各关键字进行编号,得到所述历史待测代码中各关键字对应的编号;按照预设构建规则,构建所述历史待测代码中的各代码块,并得到所述历史待测代码中各关键字所在函数的函数名称和嵌套深度;将所述历史待测代码中各代码块按照嵌套深度进行组织,建立树形关系;将所述树形关系进行全路径遍历,生成各单词块的全路径索引;根据各单词块的全路径索引,生成所述历史待测代码中各关键字的路径;获...

【专利技术属性】
技术研发人员:郝伟沈传宝刘加瑞
申请(专利权)人:安徽华云安科技有限公司
类型:发明
国别省市:

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

1