一种基于Go语言的区块链集成测试方法及系统技术方案

技术编号:37239403 阅读:9 留言:0更新日期:2023-04-20 23:20
本申请公开了一种基于Go语言的区块链集成测试方法,具体包括:用指定GoSDK依赖,初始化配置文件;根据配置文件确定待测区块链集群,使用GoSDK发出部署指令,部署待测区块链集群的各个节点,生成待测区块链集群;根据配置文件生成测试用例,使用GoSDK发出测试指令,以测试用例对待测区块链集群执行测试;收集测试日志及统计结果。本发明专利技术的方法基于Go语言设置,能够利用GoSDK无需调用直接对区块链系统的节点、网络、共识、合约、存储、密码学进行测试,减少了测试过程中远程调用命令中转至其他语言对效率的损耗,同时减少了系统维护所消耗的人工成本。的人工成本。的人工成本。

【技术实现步骤摘要】
一种基于Go语言的区块链集成测试方法及系统


[0001]本申请属于区块链测试
,具体涉及一种基于Go语言的区块链集成测试方法及系统。

技术介绍

[0002]现有区块链系统的集成测试在测试时,一般使用Python或Java作为执行的远程调用命令语言,但是服务端的SDK均使用GoSDK或者JavaSDK。对于JavaSDK的服务端来说,由于远程调用命令同样使用Java,可以直接通过Java进行测试。但是对于GoSDK的服务端来说,中间还需要做一层中转,将GoSDK发出的远程调用命令传递给Python语言,然后通过Python语言再次真正对区块链系统进行调用。这样的实现方式在运行效率上大打折扣,并且增加了测试系统的维护成本。
[0003]另外,区块链上的一些功能(如合约、存储、密码学),由于语言特性或缺少相应的一些依赖库等原因,通过Python进行实现会很复杂,甚至无法实现,这也增加了通过Python语言对区块链系统进行测试的实现及开发难度。
[0004]因此需要一种基于Go语言的区块链集成测试方法及系统,能够使用直接对区块链系统进行集成测试,减少调用中转的效率损耗。

技术实现思路

[0005]基于现有技术中存在的上述缺点和不足,本专利技术的目的之一是至少解决现有技术中存在的上述问题之一或多个,换言之,本专利技术的目的之一是提供满足前述需求之一或多个的一种基于Go语言的区块链集成测试方法及系统。
[0006]为了达到上述专利技术目的,本专利技术采用以下技术方案:第一方面,本专利技术提供了一种基于Go语言的区块链集成测试方法,应用于区块链集群,具体包括步骤:指定GoSDK依赖,初始化配置文件;根据配置文件确定待测区块链集群,使用GoSDK发出部署指令,部署待测区块链集群的各个节点,生成待测区块链集群;根据配置文件生成测试用例,使用GoSDK发出测试指令,以测试用例对待测区块链集群执行测试;收集测试日志及统计结果。
[0007]上述方法基于Go语言实现的测试方法,能够完成对区块链系统的节点、网络、共识、合约、存储、密码学进行测试的任务,并利用Go语言与区块链集群的适配性,以较高性能完成区块链集群的测试任务,且调用过程无需中转,减少了测试系统的维护成本。
[0008]作为一种进一步改进的方案,方法还包括:配置文件包括模糊测试规则,模糊测试规则指定了某一或多项测试的输入参数个数、种类及值范围;
当根据配置文件生成测试用例时,还包括使用GoSDK发出测试指令,根据模糊测试规则以测试用例对待测区块链集群执行模糊测试;模糊测试具体包括,根据模糊测试规则生成模糊测试参数,以模糊测试参数生成若干分裂测试用例;使用GoSDK发出测试指令,以若干分裂测试用例分别对待测区块链集群进行测试。
[0009]上述改进方法为本专利技术的方法增加了模糊测试过程,以一定的分裂模式生成指定字段总长度、区间规则等规格的测试输入参数,解决了传统区块链测试方法中仅能人工设定测试输入参数的缺陷。以模糊生成的符合规格的测试输入参数进行大批量测试,能够有效测试区块链系统的载荷及测定功能的数据参数边界,提供了区块链系统测试的自动化程度和可扩展性。
[0010]作为一种进一步改进的方案,方法还包括:根据配置文件生成测试用例,同时为每个测试用例设置用例等级;以测试用例对待测区块链集群执行测试,根据用例等级优先以高用例等级或低用例等级的测试用例对待测区块链集群执行测试,或选取某一用例等级范围,仅以处于该用例等级范围的测试用例对待测区块链集群执行测试。
[0011]上述改进方法为测试用例分别设置了用例等级,在执行测试时可以根据用例等级的高低以一定优先度执行测试用例、或指定某个用例等级范围执行测试用例,从而减少测试产品开发及修改的等待验证时间,提高测试效率。
[0012]作为一种优选的方案,初始化配置文件具体包括:预生成配置结构体;读取输入的配置指令,将配置指令的内容序列化至配置结构体。
[0013]作为一种进一步改进的方案,方法还包括:在根据配置文件确定待测区块链集群之后,对现有区块链集群进行检索比对,确定待测区块链集群是否已经部署完成;若是,则使用GoSDK发出检测指令,检测该待测区块链集群状态,若检测失败,收集测试日志及统计结果;若否,则使用GoSDK发出部署指令,部署待测区块链集群的各个节点,生成待测区块链集群。
[0014]作为一种进一步改进的方案,方法还包括:在根据配置文件生成测试用例时,在测试用例中插入测试探针;在以测试用例对待测区块链集群执行测试时,根据测试探针检测区块链状态是否异常;若区块链状态持续异常时间超过预设时间阈值,则判定为环境异常,终止测试。
[0015]第二方面,本专利技术还提供一种基于Go语言的区块链集成测试系统,用于对区块链集群进行集成测试,系统包括:初始化模块,用于指定GoSDK依赖,并获取配置文件的输入参数,根据输入参数初始化配置文件;节点部署模块,用于根据配置文件确定待测区块链集群,使用GoSDK发出部署指令,部署待测区块链集群的各个节点,生成待测区块链集群;
测试计划模块,根据配置文件生成测试用例;脚本执行模块,用于使用GoSDK发出测试指令,以测试用例对待测区块链集群执行测试;日志模块,用于收集测试日志及统计结果。
[0016]本专利技术的基于Go语言实现的测试系统,能够应用上述方法完成对区块链系统的节点、网络、共识、合约、存储、密码学的测试。利用Go语言与区块链集群的适配性,以较高性能完成区块链集群的测试任务,且调用过程无需中转,减少了测试系统的维护成本。
[0017]作为一种进一步改进的方案,脚本执行模块包括规则解析模块、用例生成模块和模糊测试模块;规则解析模块用于解析配置文件,生成模糊测试规则,模糊测试规则指定了某一或多项测试的输入参数个数、种类及值范围;用例生成模块用于根据模糊测试规则生成模糊测试参数,以模糊测试参数生成若干分裂测试用例;模糊测试模块用于使用GoSDK发出测试指令,以若干分裂测试用例分别对待测区块链集群进行测试。
[0018]与上述方法中的模糊测试改进相似,在脚本执行模块中设置规则解析模块、用例生成模块和模糊测试模块为本测试系统增加了模糊测试的能力,以一定的分裂模式生成指定字段总长度、区间规则等规格的测试输入参数,解决了传统区块链测试系统仅能人工设定测试输入参数的缺陷。以模糊生成的符合规格的测试输入参数进行大批量测试,能够有效测试区块链系统的载荷及测定功能的数据参数边界,提供了区块链系统的自动化程度和可扩展性。
[0019]第三方面,本专利技术还提供一种计算机设备,计算机设备包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上述任一项的方法。
[0020]第四方面,本专利技术还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的方法。
[0021]本专利技术与现有技术相比,有益效果是:本专利技术的方法及系统基于Go设本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Go语言的区块链集成测试方法,应用于区块链集群,其特征在于,具体包括步骤:指定GoSDK依赖,初始化配置文件;根据所述配置文件确定待测区块链集群,使用GoSDK发出部署指令,部署待测区块链集群的各个节点,生成所述待测区块链集群;根据所述配置文件生成测试用例,使用GoSDK发出测试指令,以所述测试用例对所述待测区块链集群执行测试;收集测试日志及统计结果。2.如权利要求1所述的一种基于Go语言的区块链集成测试方法,其特征在于,所述方法还包括:所述配置文件包括模糊测试规则,所述模糊测试规则指定了某一或多项测试的输入参数个数、种类及值范围;当根据所述配置文件生成测试用例时,还包括使用GoSDK发出测试指令,根据所述模糊测试规则以所述测试用例对所述待测区块链集群执行模糊测试;所述模糊测试具体包括,根据所述模糊测试规则生成模糊测试参数,以所述模糊测试参数生成若干分裂测试用例;使用所述GoSDK发出测试指令,以所述若干分裂测试用例分别对所述待测区块链集群进行测试。3.如权利要求1所述的一种基于Go语言的区块链集成测试方法,其特征在于,所述方法还包括:所述根据所述配置文件生成测试用例,同时为每个所述测试用例设置用例等级;所述以所述测试用例对所述待测区块链集群执行测试,根据所述用例等级优先以高用例等级或低用例等级的测试用例对所述待测区块链集群执行测试,或选取某一用例等级范围,仅以处于该用例等级范围的测试用例对所述待测区块链集群执行测试。4.如权利要求1

3任一项所述的一种基于Go语言的区块链集成测试方法,其特征在于,所述初始化配置文件具体包括:预生成配置结构体;读取输入的配置指令,将所述配置指令的内容序列化至所述配置结构体。5.如权利要求1所述的一种基于Go语言的区块链集成测试方法,其特征在于,所述方法还包括:在根据所述配置文件确定待测区块链集群之后,对现有区块链集群进行检索比对,确定所述待测区块链集群是否已经部署完成;若是,则使用GoSDK发出检测指令,检测该待测区块链集群状态,若检测失败,收集测...

【专利技术属性】
技术研发人员:黄方蕾张珂杰金天伟尚璇邱炜伟
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:

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

1