[发明专利]一种代码的测试方法和装置在审
| 申请号: | 202010328137.5 | 申请日: | 2020-04-23 |
| 公开(公告)号: | CN113553250A | 公开(公告)日: | 2021-10-26 |
| 发明(设计)人: | 陈永富;龙团;陈超;黄泳霖;谢宗兴;屈阳;巫富强;林凡 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京派特恩知识产权代理有限公司 11270 | 代理人: | 赵翠萍;张颖玲 |
| 地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 代码 测试 方法 装置 | ||
1.一种代码的测试方法,其特征在于,所述方法包括:
解析代码,确定所述代码的语法树中需要进行切面配置的节点;
生成代理函数,其中,所述代理函数包括所述代码的切面配置逻辑;
将位于所述需要进行切面配置的节点处的原函数替换为所述代理函数;
执行所述代理函数包括的所述切面配置逻辑以模拟运行所述代码,接收所述代理函数输出的模拟执行结果;
将所述模拟执行结果与期望执行结果进行匹配,生成所述代码的测试结果。
2.根据权利要求1所述的方法,其特征在于,所述解析代码,确定所述代码的语法树中需要进行切面配置的节点,包括:
解析所述代码中的切面配置以确定所述代码中的扩展函数,并获取所述扩展函数的返回值;
根据所述扩展函数的返回值中的正则表达式,遍历所述代码的语法树,以在所述代码的语法树中确定需要进行切面配置的节点。
3.根据权利要求1所述的方法,其特征在于,所述生成代理函数,包括:
确定位于所述需要进行切面配置的节点处的原函数的名称和参数;
构建与所述原函数的名称和参数一致的函数体;
在所述函数体中添加用于模拟运行所述代码的切面配置逻辑,以获得所述代理函数。
4.根据权利要求1所述的方法,其特征在于,所述将位于所述需要进行切面配置的节点处的原函数替换为所述代理函数,包括:
确定位于所述需要进行切面配置的节点处的原函数的变量类型;
根据所述原函数的变量类型,确定所述原函数的存放地址;
通过调用代理工具,确定所述代理函数的存放地址;
将所述原函数的存放地址所存放的原函数,替换为所述代理函数的存放地址所存放的代理函数。
5.根据权利要求1所述的方法,其特征在于,所述执行所述代理函数包括的所述切面配置逻辑以模拟运行所述代码,接收所述代理函数输出的模拟执行结果,包括:
创建用于执行所述代码的主线程,并创建对应于所述主线程的主上下文信息;
创建用于执行所述代理函数包括的所述切面配置逻辑的子线程;
根据所述主线程的主上下文信息,确定子上下文信息,并将所述子上下文信息与所述子线程进行绑定;
根据所述子线程所绑定的子上下文信息,获得所述切面配置逻辑被执行时所生成的模拟执行结果。
6.根据权利要求5所述的方法,其特征在于,所述根据所述子线程所绑定的子上下文信息,获得所述切面配置逻辑被执行时所生成的模拟执行结果,包括:
在所述子线程所绑定的子上下文信息中,提取所述子线程的序号;
调用模拟执行结果存取器,以在所述模拟执行结果存取器中读取对应于所述子线程的序号的模拟执行结果。
7.根据权利要求1所述的方法,其特征在于,所述将所述模拟执行结果与期望执行结果进行匹配,生成所述代码的测试结果,包括:
将所述模拟执行结果与所述期望执行结果进行匹配;
当所述模拟执行结果与所述期望执行结果之间匹配一致时,生成表征所述代码无漏洞的测试结果;
当所述模拟执行结果与所述期望执行结果之间未匹配一致时,生成表征所述代码有漏洞的测试结果。
8.根据权利要求1所述的方法,其特征在于,在所述解析代码,确定所述代码的语法树中需要进行切面配置的节点之后,所述方法还包括:
在位于所述需要进行切面配置的节点处的原函数中,注入用于模拟运行所述代码的切面配置逻辑;
执行所述原函数包括的切面配置逻辑以模拟运行所述代码,接收所述原函数在所述切面配置逻辑被执行时输出的模拟执行结果。
9.根据权利要求1所述的方法,其特征在于,在所述生成所述代码的测试结果之后,所述方法还包括:
将所述代码的测试结果存储到区块链网络中,以使
所述区块链网络根据存储的所述代码的测试结果,响应针对所述代码的测试数据请求。
10.一种代码的测试装置,其特征在于,所述装置包括:
解析模块,用于解析代码,确定所述代码的语法树中需要进行切面配置的节点;
生成模块,用于生成代理函数,其中,所述代理函数包括所述代码的切面配置逻辑;
替换模块,用于将位于所述需要进行切面配置的节点处的原函数替换为所述代理函数;
执行模块,用于执行所述代理函数包括的所述切面配置逻辑以模拟运行所述代码,接收所述代理函数输出的模拟执行结果;
匹配模块,用于将所述模拟执行结果与期望执行结果进行匹配,生成所述代码的测试结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010328137.5/1.html,转载请声明来源钻瓜专利网。





