[发明专利]一种区块链智能合约的测试方法和系统有效
申请号: | 202011552436.3 | 申请日: | 2020-12-24 |
公开(公告)号: | CN112286828B | 公开(公告)日: | 2021-07-06 |
发明(设计)人: | 王海军;邬萌;傅滢 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 成都七星天知识产权代理有限公司 51253 | 代理人: | 袁春晓 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 区块 智能 合约 测试 方法 系统 | ||
本说明书实施例提供了一种区块链智能合约的测试方法和系统,所述方法包括:确定智能合约中的待测试代码段;对待测试代码段进行异常注入,以使得当该待测试代码段被执行时能够出现预设的异常场景;基于预先确定的代码段与变量对应关系,确定能够触发待测试代码段的测试变量及其取值;向智能合约中的测试变量输入所述取值,以触发待测试代码段并获得待测试代码段在异常场景下的测试结果。实现测试智能合约在异常环境的处理能力,以及可以有针对性地对智能合约中的某些代码段(例如目标场景的脆弱点)进行精细测试,实现对智能合约的完善和全面测试,有助于改进区块链智能合约以增强其健壮性。
技术领域
本申请涉及计算机技术领域,特别涉及智能合约测试方法和系统。
背景技术
计算机程序测试过程中,可以基于各种不同的输入触发计算机程序的执行来测试计算机程序的执行逻辑,例如模糊测试技术。得到的程序执行或处理情况反应的是程序在受到输入触发时,程序能否正常执行或者能否合理处理这些输入触发的各种场景(甚至是异常场景)。而实际上程序运行的环境复杂,存在各种异常场景,例如服务器系统异常(系统资源CPU、内存不足等)、依赖服务异常(运行过程中数据库、第三方依赖服务无响应,请求其他接口返回异常信息等)、程序本身异常(进程重启、挂掉、假死、响应时间变慢等)等。如何对计算机程序进行尽可能多角度的测试,获取计算机程序在尽可能多的异常场景下的处理情况,对于检测并提升计算机程序,尤其是应用于稳定性要求更高的应用场景的计算机程序(如区块链智能合约)的健壮性有着重要意义。
发明内容
本说明书一个方面提供一种区块链智能合约的测试方法,所述方法包括:确定智能合约中的待测试代码段;对所述待测试代码段进行异常注入,以使得当该待测试代码段被执行时能够出现预设的异常场景;基于预先确定的代码段与变量对应关系,确定能够触发所述待测试代码段的测试变量及其取值;向所述智能合约中的所述测试变量输入所述取值,以触发所述待测试代码段并获得所述待测试代码段在所述异常场景下的测试结果。
本说明书另一个方面提供一种用于区块链智能合约测试的代码段与变量对应关系的获取方法,所述方法包括:获取单元测试案例集,所述单元测试案例集至少包括一个或多个历史测试的计算机程序及其一个或多个测试变量及其取值;对于一个或多个历史测试的计算机程序的每一个:逐一向该计算机程序的各测试变量输入其对应的取值,获得各测试变量能够触发的该计算机程序的代码段;基于触发结果,建立各测试变量与该计算机程序各代码段的对应关系。
本说明书另一个方面提供一种区块链智能合约测试系统,所述系统包括:代码段确定模块:用于确定智能合约中的待测试代码段;异常注入模块:用于对所述待测试代码段进行异常注入,以使得当该待测试代码段被执行时能够出现预设的异常执行场景;测试变量值确定模块:用于基于预先确定的代码段与变量对应关系,确定能够触发所述待测试代码段的测试变量及其取值;测试模块:用于向所述智能合约中的所述测试变量输入所述取值,以触发所述待测试代码段并获得所述待测试代码段在所述异常场景下的测试结果。
本说明书另一个方面提供一种区块链智能合约的测试装置,包括至少一个存储介质和至少一个处理器,所述至少一个存储介质用于存储计算机指令;所述至少一个处理器用于执行所述计算机指令以实现所述的区块链智能合约的测试方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的一种区块链智能合约的测试系统的框图;
图2是根据本说明书一些实施例所示的一种区块链智能合约的方法的示例性流程图;
图3是根据本说明书一些实施例所示的一种用于智能合约测试的代码段与变量对应关系的获取方法的示例性流程图;
图4是根据本说明书一些实施例所示的一种代码段与变量对应关系的示例性示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011552436.3/2.html,转载请声明来源钻瓜专利网。