本申请公开了一种智能合约的测试方法、装置、电子设备及存储介质,属于区块链技术领域。本申请实施例通过根据待测试的智能合约,生成对应的调用接口,从而可以通过生成的该调用接口查询得到智能合约中的账户,进而生成测试用例进行测试,该过程中能够根据待测试的智能合约,自动生成对应的调用接口,实现了对智能合约的调用和测试,无需开发人员参与,无需开发人员预先编写RPC接口,也无需人工获取智能合约中的账户,降低了人工成本,全过程自动进行,自动化程度高,该方式能够被重复利用,因而,对智能合约的测试的效率高。
【技术实现步骤摘要】
智能合约的测试方法、装置、电子设备及存储介质
本申请涉及区块链
,特别涉及一种智能合约的测试方法、装置、电子设备及存储介质。
技术介绍
随着区块链技术的发展,区块链应用越来越广泛。在区块链系统中,通常可以编写智能合约,通过运行智能合约来实现相应的功能。因而,需要对智能合约进行测试,以保证智能合约的正常运行和业务准确性。由于智能合约具有不可改变性,目前,智能合约的测试方法通常是由开发人员根据智能合约,来编写相应的远程调用RPC接口,通过该RPC(RemoteProcedureCall,远程过程调用)接口来调用智能合约,进行测试步骤。还有一些测试方法是需要开发人员部署remix在线编译器的集成开发环境(IntegratedDevelopmentEnvironment,IDE),通过该remix实现接口函数测试,人工获取智能合约中的账户,进而在IDE中调试智能合约的接口。上述方法中均需要开发人员编写RPC接口或人工获取智能合约中的账户依赖在线编译器实现测试,人工成本高,自动化程度低,无法重复利用,测试用例编写耗时,因而,测试效率差。
技术实现思路
本申请实施例提供了一种智能合约的测试方法、装置、电子设备及存储介质,能够提升定位过程的定位精度。该技术方案如下:一方面,提供了一种智能合约的测试方法,该方法包括:根据待测试的智能合约,生成所述智能合约对应的调用接口;通过所述调用接口,查询所述智能合约中的至少一个账户;根据所述至少一个账户,生成所述智能合约的测试用例;根据所述测试用例,对所述智能合约进行测试。在一种可能实现方式中,所述目标编程语言为全球广域网3.java脚本(WorldWideWeb3.javascript,Web3.js)。一方面,提供了一种智能合约的测试装置,该装置包括:生成模块,用于根据待测试的智能合约,生成所述智能合约对应的调用接口;查询模块,用于通过所述调用接口,查询所述智能合约中的至少一个账户;所述生成模块,还用于根据所述至少一个账户,生成所述智能合约的测试用例;测试模块,用于根据所述测试用例,对所述智能合约进行测试。在一种可能实现方式中,所述查询模块用于:通过所述调用接口,调用所述智能合约中的账户信息;从所述账户信息中查询,得到所述智能合约的至少一个账户。在一种可能实现方式中,所述至少一个账户的数量为多个,多个账户包括用户账户和平台账户;所述查询模块用于查询所述账户信息中账户的账户类型,得到所述智能合约中的用户账户和平台账户。在一种可能实现方式中,所述测试用例包括正常转让的测试用例和异常转让的测试用例;所述正常转让的测试用例用于指示将所述平台账户的资产转移至所述用户账户;所述异常转让的测试用例用于指示将所述用户账户的资产转移至所述平台账户;所述生成模块用于:根据所述用户账户和所述平台账户,生成所述智能合约的异常转让的测试用例,所述异常转让的测试用例包括的资产转移的期望结果为转移失败;或,根据所述用户账户和所述平台账户,生成所述智能合约的正常转让的测试用例,所述正常转让的测试用例包括的资产转移的期望结果为转移成功。在一种可能实现方式中,所述测试模块用于:根据所述正常转让的测试用例和异常转让的测试用例,通过所述智能合约的调用接口,触发所述智能合约执行所述异常转让的测试用例所指示的资产转移步骤,得到对所述正常转让的测试用例和异常转让的测试用例的测试结果;所述装置还包括:确定模块,用于响应于所述对任一测试用例的测试结果与所述测试用例包括的期望结果不相同,确定所述测试结果异常。在一种可能实现方式中,所述生成模块用于根据所述待测试的智能合约的调用参数,通过目标编程语言,生成所述智能合约对应的调用接口,所述目标编程语言的调用接口能够与区块链系统中的节点设备上的目标RPC接口通信。在一种可能实现方式中,所述生成模块还用于根据对所述智能合约进行测试的测试结果,生成测试报告;所述装置还包括:发送模块,用于监听测试过程中的事件,根据监听到的事件,发送通知消息。一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的智能合约的测试方法所执行的操作。一方面,提供了一种存储介质,该存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现如上述任一种可能实现方式的智能合约的测试方法所执行的操作。本申请实施例提供的技术方案带来的有益效果至少包括:本申请实施例通过根据待测试的智能合约,生成对应的调用接口,从而可以通过生成的该调用接口查询得到智能合约中的账户,进而生成测试用例进行测试,该过程中能够根据待测试的智能合约,自动生成对应的调用接口,实现了对智能合约的调用和测试,无需开发人员参与,无需开发人员预先编写RPC接口,也无需人工获取智能合约中的账户,降低了人工成本,全过程自动进行,自动化程度高,该方式能够被重复利用,因而,对智能合约的测试的效率高。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本申请实施例提供的一种区块链系统的结构示意图;图2是本申请实施例提供的一种区块链的结构示意图;图3是本申请实施例提供的一种新区块生成过程的流程图;图4是本申请实施例提供的分布式系统400应用于区块链系统的一个可选的结构示意图;图5是本申请实施例提供的区块结构(BlockStructure)一个可选的示意图;图6是本申请实施例提供的一种智能合约的生命周期的示意图;图7是本申请实施例提供的一种智能合约的测试方法的流程图;图8是本申请实施例提供的一种创世区块的配置示意界面图;图9是本申请实施例提供的一种账户信息的界面图;图10是本申请实施例提供的一种账户信息的界面图;图11是本申请实施例提供的一种测试用例的界面图;图12是本申请实施例提供的一种冷热互转用例模板文件的界面图;图13是本申请实施例提供的一种测试报告的界面图;图14是本申请实施例提供的一种实例化合约的界面图;图15是本申请实施例提供的一种订阅合约事件的界面图;图16是本申请实施例提供的一种监听到事件邮件输出的界面图;图17是本申请实施例提供的一种监听到事件邮件输出的界面图;图18是本申请实施例提供的一种智能合约的测试方法的流程图;图19是本申请实施例提供的一种智能合约的测试装置的结构示意图;...
【技术保护点】
1.一种智能合约的测试方法,其特征在于,所述方法包括:/n根据待测试的智能合约,生成所述智能合约对应的调用接口;/n通过所述调用接口,查询所述智能合约中的至少一个账户;/n根据所述至少一个账户,生成所述智能合约的测试用例;/n根据所述测试用例,对所述智能合约进行测试。/n
【技术特征摘要】
1.一种智能合约的测试方法,其特征在于,所述方法包括:
根据待测试的智能合约,生成所述智能合约对应的调用接口;
通过所述调用接口,查询所述智能合约中的至少一个账户;
根据所述至少一个账户,生成所述智能合约的测试用例;
根据所述测试用例,对所述智能合约进行测试。
2.根据权利要求1所述的方法,其特征在于,所述通过所述调用接口,查询所述智能合约中的至少一个账户,包括:
通过所述调用接口,调用所述智能合约中的账户信息;
从所述账户信息中查询,得到所述智能合约的至少一个账户。
3.根据权利要求2所述的方法,其特征在于,所述至少一个账户的数量为多个,多个账户包括用户账户和平台账户;
所述从所述账户信息中查询,得到所述智能合约的至少一个账户,包括:
查询所述账户信息中账户的账户类型,得到所述智能合约中的用户账户和平台账户。
4.根据权利要求3所述的方法,其特征在于,所述测试用例包括正常转让的测试用例和异常转让的测试用例;所述正常转让的测试用例用于指示将所述平台账户的资产转移至所述用户账户;所述异常转让的测试用例用于指示将所述用户账户的资产转移至所述平台账户;
所述根据所述至少一个账户,生成所述智能合约的测试用例,包括:
根据所述用户账户和所述平台账户,生成所述智能合约的异常转让的测试用例,所述异常转让的测试用例包括的资产转移的期望结果为转移失败;
根据所述用户账户和所述平台账户,生成所述智能合约的正常转让的测试用例,所述正常转让的测试用例包括的资产转移的期望结果为转移成功。
5.根据权利要求4所述的方法,其特征在于,所述根据所述测试用例,对所述智能合约进行测试,包括:
根据所述正常转让的测试用例和异常转让的测试用例,通过所述智能合约的调用接口,触...
【专利技术属性】
技术研发人员:陈金龙,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。