CN114416522A - 区块链系统测试方法、装置、设备及存储介质 - Google Patents
区块链系统测试方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114416522A CN114416522A CN202111522708.XA CN202111522708A CN114416522A CN 114416522 A CN114416522 A CN 114416522A CN 202111522708 A CN202111522708 A CN 202111522708A CN 114416522 A CN114416522 A CN 114416522A
- Authority
- CN
- China
- Prior art keywords
- test
- block chain
- chain system
- blockchain system
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000010998 test method Methods 0.000 title abstract description 4
- 238000012360 testing method Methods 0.000 claims abstract description 372
- 238000000034 method Methods 0.000 claims abstract description 50
- 238000012544 monitoring process Methods 0.000 claims abstract description 15
- 230000002159 abnormal effect Effects 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006399 behavior Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 8
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 13
- 230000005856 abnormality Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 5
- 238000002347 injection Methods 0.000 description 4
- 239000007924 injection Substances 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000013100 final test Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请涉及一种区块链系统测试方法、装置、设备及存储介质,涉及区块链技术领域。该区块链系统测试方法包括:获取针对区块链系统的测试请求;根据测试请求,生成测试用例,其中,测试用例中包括目标节点的标识和目标故障类型;触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态;根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果。本申请用以解决区块链系统的测试过程中,需要人为多次调整测试参数,进行测试的问题。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链系统测试方法、装置、设备及存储介质。
背景技术
在常见的分布式系统混沌测试中,都是基于单一的服务架构,选取某一维度对整个系统进行故障的注入,然后对系统的行为进行观察记录,然后人为的进行测试项、目标以及参数的调整。而在现有的一些区块链系统的混沌测试中,也是部署一个基础网络模式的集群,通过网络延迟、丢包等方式去对整个系统的网络进行故障的注入,然后对系统的行为进行观察记录,然后人为的进行测试项、目标以及参数的调整。
发明内容
本申请提供了一种区块链系统测试方法、装置、设备及存储介质,用以解决区块链系统的测试过程中,需要人为多次调整测试参数,进行测试的问题。
第一方面,本申请实施例提供了一种区块链系统测试方法,包括:
获取针对区块链系统的测试请求,其中,所述测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,所述目标节点为所述区块链系统中的至少一个节点;
根据所述测试请求,生成测试用例,其中,所述测试用例中包括所述目标节点的标识和所述目标故障类型;
触发所述区块链系统执行所述测试用例,并在所述测试用例执行完成后,监测所述区块链系统的状态;
根据所述区块链系统的状态,调整所述测试用例中的测试参数后,返回执行所述触发所述区块链系统执行所述测试用例的步骤,直至满足测试结束条件时,结束测试,并获取所述区块链系统执行所述测试用例的测试结果。
可选地,所述监测所述区块链系统的状态之前,所述方法还包括:
获取测试类型,其中,所述测试类型包括容错性测试和鲁棒性测试中的至少一个;
在所述测试类型为鲁棒性测试时,控制所述目标节点所在的服务器回收所述目标故障类型对应的目标故障,使所述区块链系统的环境恢复正常。
可选地,所述根据所述区块链系统的状态,调整所述测试用例中的测试参数,包括:
获取测试参数范围的上限值和下限值;
在所述测试类型为容错性测试时,判断所述区块链系统的状态是否存在异常,其中,所述区块链系统的状态包括所述区块链系统对外部交易的处理情况、所述区块链系统中各个节点所在服务器的资源使用情况中的至少一个;
若所述区块链系统的状态存在异常,则将所述测试参数作为所述测试参数范围的所述上限值;
若所述区块链系统的状态不存在异常,则将所述测试参数作为所述测试参数范围的所述下限值;
计算所述测试参数范围的所述上限值和所述下限值的差值;
在所述差值大于或等于预设范围指数时,计算所述上限值和所述下限值的平均值,并将所述平均值作为调整后的测试参数。
可选地,所述根据所述区块链系统的状态,调整所述测试用例中的测试参数,包括:
在所述测试类型为鲁棒性测试时,判断所述区块链系统的状态是否存在异常,其中,所述区块链系统的状态包括所述区块链系统中各个节点的状态、所述区块链系统中各个节点所在服务器的资源使用情况中的至少一个;
若所述区块链系统的状态不存在异常,则将所述测试参数增加预设值,获得调整后的测试参数。
可选地,所述目标故障类型包括网络故障、资源故障和节点拜占庭行为中的至少两个。
可选地,所述获取针对区块链系统的测试请求之前,所述方法还包括:
获取区块链系统搭建请求,其中,所述区块链系统搭建请求中包括所述区块链系统中各个节点的标识、所述区块链系统中各个节点之间的连接关系和连接方式、以及所述区块链系统的网络拓扑类型,所述连接方式包括正向代理、反向代理和无代理中的至少一个;
根据所述区块链系统搭建请求,搭建所述区块链系统。
可选地,所述根据所述区块链系统搭建请求,搭建所述区块链系统,包括:
在所述连接方式为正向代理或反向代理时,根据所述连接方式,部署代理服务器;
根据所述区块链系统中各个节点的标识、所述区块链系统中各个节点之间的连接关系和连接方式、以及所述区块链系统的网络拓扑类型,生成所述区块链系统中各个节点的配置文件;
触发所述区块链系统中的区块链服务,完成搭建所述区块链系统。
第二方面,本申请实施例提供了一种区块链系统测试装置,包括:
获取模块,用于获取针对区块链系统的测试请求,其中,所述测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,所述目标节点为所述区块链系统中的至少一个节点;
生成模块,用于根据所述测试请求,生成测试用例,其中,所述测试用例中包括所述目标节点的标识和所述目标故障类型;
监测模块,用于触发所述区块链系统执行所述测试用例,并在所述测试用例执行完成后,监测所述区块链系统的状态;
处理模块,用于根据所述区块链系统的状态,调整所述测试用例中的测试参数后,返回执行所述触发所述区块链系统执行所述测试用例的步骤,直至满足测试结束条件时,结束测试,并获取所述区块链系统执行所述测试用例的测试结果。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现第一方面所述的区块链系统测试方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的区块链系统测试方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:本申请实施例提供的该方法,获取针对区块链系统的测试请求,其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点,根据测试请求,生成测试用例,其中,测试用例中包括目标节点的标识和目标故障类型,触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态,根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果。
相对于现有技术中,区块链系统的测试过程中,需要人为多次调整测试参数,进行测试的情况,本申请通过在测试用例执行完成后,监测区块链系统的状态,根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果,能够根据区块链系统的状态,自动调整测试用例中的测试参数,并在调整测试用例中的测试参数后,自动执行触发区块链系统执行测试用例的步骤,能够根据区块链系统的状态自动调整测试用例,进行多轮测试,最终获取测试结果,避免人为多次调整测试参数,提高了区块链系统测试的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中区块链系统测试的方法流程示意图;
图2为本申请一个具体实施例中搭建区块链系统的方法流程示意图;
图3为本申请一个具体实施例中区块链系统的网络拓扑示意图;
图4为本申请一个具体实施例中容错性测试中调整测试参数的方法流程示意图;
图5为本申请一个具体实施例中容错性测试的区块链系统测试的方法流程示意图;
图6为本申请一个具体实施例中鲁棒性测试中调整测试参数的方法流程示意图;
图7为本申请一个具体实施例中鲁棒性测试的区块链系统测试的方法流程示意图;
图8为本申请实施例中区块链系统测试装置的结构示意图;
图9为本申请实施例中电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例中,提供了一种区块链系统测试方法,该方法可以应用于服务器,当然,也可以应用于其他电子设备,例如终端(手机、平板电脑等)。本申请实施例中,以将该方法应用于服务器为例进行说明。
本申请实施例中,如图1所示,区块链系统测试的方法流程主要包括:
步骤101,获取针对区块链系统的测试请求,其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点。
一个具体实施例中,目标故障类型包括网络故障、资源故障和节点拜占庭行为中的至少两个。
网络故障是指网络延迟、丢包等网络中出现的故障。资源故障是指CPU被抢占、内存被抢占、磁盘写故障、磁盘读故障等资源使用中出现的故障。节点拜占庭行为是指节点不能正常进行共识消息的参与。
相对于现有技术中,选取单一故障类型对区块链系统进行故障的注入,本申请中,目标故障类型包括网络故障、资源故障和节点拜占庭行为中的至少两个,从多个维度对区块链系统同时进行故障注入测试,更符合实际应用场景,实际应用场景中对区块链系统造成影响的条件并不是唯一单向的。
一个具体实施例中,获取针对区块链系统的测试请求之前,区块链系统测试方法还包括:获取区块链系统搭建请求,其中,区块链系统搭建请求中包括区块链系统中各个节点的标识、区块链系统中各个节点之间的连接关系和连接方式、以及区块链系统的网络拓扑类型,连接方式包括正向代理、反向代理和无代理中的至少一个;根据区块链系统搭建请求,搭建区块链系统。
区块链系统中各个节点之间的连接关系,例如,节点A和节点B相连接,节点A是连接方,节点B是被连接方,即节点A主动连接节点B。
区块链系统的网络拓扑类型,可以是星型网络拓扑、环型网络拓扑、树型网络拓扑和随机模式生成底层网络拓扑中的一个。根据传入参数,确定区块链系统的网络拓扑类型。传入参数为“random”,表示采取随机模式生成底层网络拓扑,“star”表示生成星型网络拓扑,“ring”表示生成环型网络拓扑,“tree”表示生成树型网络拓扑。
连接方式包括正向代理、反向代理和无代理中的至少一个,例如,节点A和节点B之间的连接方式为正向代理,是指节点A和节点B之间有个正向代理服务器,通过正向代理服务器连接节点A和节点B。节点A和节点B之间的连接方式为反向代理,是指节点A和节点B之间有个反向代理服务器,通过反向代理服务器连接节点A和节点B。节点A和节点B之间的连接方式为无代理,是指节点A和节点B直接连接。
一个具体实施例中,如图2所示,根据区块链系统搭建请求,搭建区块链系统,包括:
步骤201,在连接方式为正向代理或反向代理时,根据连接方式,部署代理服务器。
部署代理服务器,主要是在服务器上部署代理服务,其中,代理服务可以是nginx服务,也可以是其他代理服务,本申请中以代理服务为nginx服务进行解释说明。
获取到连接方式为正向代理或反向代理的节点,根据连接方式,修改nginx服务的配置,来完成节点服务器之间的流量转发。例如,连接方式为正向代理,配置一个端口进行流量转发,对外看不到真正的端口。
步骤202,根据区块链系统中各个节点的标识、区块链系统中各个节点之间的连接关系和连接方式、以及区块链系统的网络拓扑类型,生成区块链系统中各个节点的配置文件。
一个具体实施例中,如图3所示,为区块链系统的网络拓扑示意图。由node1、node2、node3、node4、node5五个节点构成区块链系统,传入参数为“star”,表示区块链系统的网络拓扑类型为星型网络拓扑。在五个节点中选择任意一个节点,图3中选择node1,作为星型网络的中心节点。遍历五个节点,对每一个节点随机选择是作为连接方还是被连接方;若是连接方,再从正向代理、反向代理和无代理这三种连接方式中随机选择一种,然后将连接方作为key(关键字),中心节点和连接方式作为value(值)存储在map中,map是一种存储键值对(key-value)的对象;若是被连接方,也是先随机选择一种连接方式,然后将中心节点作为key,被连接方和连接方式作为value存储在map中。
最终生成map,map中包括key(关键字)和value(值),key用于存储连接方的标识,value用于存储被连接方的标识和连接方式。图3中箭头的起始端是连接方,终点端是被连接方,由连接方指向被连接方,连接方通过配置被连接方的信息,主动连接被连接方。例如,node2指向node1,node2是连接方,node1是被连接方,node1和node2的连接方式为正向代理,node2通过正向代理服务器主动连接node1。node1指向node3,node1是连接方,node3是被连接方,node1和node3的连接方式为反向代理,node1通过反向代理服务器主动连接node3。
步骤203,触发区块链系统中的区块链服务,完成搭建区块链系统。
相对于现有技术中,网络拓扑单一,没有覆盖代理和反向代理等复杂场景,本申请通过自动或者根据配置生成可通的网络拓扑结构,并依照该网络拓扑修改节点的配置文件,进行区块链系统的搭建。能够基于不同的网络模型进行测试,覆盖代理和反向代理,更符合实际应用场景。
步骤102,根据测试请求,生成测试用例,其中,测试用例中包括目标节点的标识和目标故障类型。
步骤103,触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态。
触发区块链系统执行测试用例,是指根据目标节点的标识和目标故障类型,在目标节点所在服务器上调用目标故障类型对应的故障注入服务,完成测试用例的执行。
一个具体实施例中,监测区块链系统的状态之前,区块链系统测试方法还包括:获取测试类型,其中,测试类型包括容错性测试和鲁棒性测试中的至少一个;在测试类型为鲁棒性测试时,控制目标节点所在的服务器回收目标故障类型对应的目标故障,使区块链系统的环境恢复正常。
容错性测试,目的是分析区块链系统对于某一项测试条件的容忍性,可以在故障注入的同时监测区块链系统的状态,不需要回收故障。
鲁棒性测试,目的是为了测试区块链系统的可恢复性。鲁棒性测试,测试的一般是注入极端的故障条件后,节点的行为不正常,要保证故障回收后,区块链系统能正常恢复,测试的是可恢复性,所以需要回收故障。
步骤104,根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果。
一个具体实施例中,如图4所示,根据区块链系统的状态,调整测试用例中的测试参数,包括:
步骤401,获取测试参数范围的上限值和下限值。
测试参数范围的上限值用P1表示,P1是测试参数范围中的最大可用参数。测试参数范围的下限值用P0表示,P0是测试参数范围中的最小可用参数。获取当前测试用例中的P1和P0。
步骤402,在测试类型为容错性测试时,判断区块链系统的状态是否存在异常,其中,区块链系统的状态包括区块链系统对外部交易的处理情况、区块链系统中各个节点所在服务器的资源使用情况中的至少一个。
区块链系统对外部交易的处理情况,即整个区块链系统能否正常处理外部交易。区块链系统中各个节点所在服务器的资源使用情况,即测试用例执行过程中是否出现内存、CPU和磁盘等资源使用异常的情况。
容错性测试,目的是分析区块链系统对于某一项测试条件的容忍性,主要考虑区块链系统的状态包括区块链系统对外部交易的处理情况、以及区块链系统中各个节点所在服务器的资源使用情况。
步骤403,若区块链系统的状态存在异常,则将测试参数作为测试参数范围的上限值。
区块链系统的状态存在异常,是指区块链系统对外部交易的处理情况存在异常、区块链系统中各个节点所在服务器的资源使用情况存在异常中的至少一个。
当前测试用例的测试参数用P表示。若区块链系统的状态存在异常,则将测试参数P作为测试参数范围的上限值P1。
步骤404,若区块链系统的状态不存在异常,则将测试参数作为测试参数范围的下限值。
区块链系统的状态不存在异常是指区块链系统对外部交易的处理情况不存在异常、且区块链系统中各个节点所在服务器的资源使用情况不存在异常。
当前测试用例的测试参数用P表示。若区块链系统的状态不存在异常,则将测试参数P作为测试参数范围的下限值P0。
步骤405,计算测试参数范围的上限值和下限值的差值。
计算测试参数范围的上限值和下限值的差值,即计算P1-P0的差值。
步骤406,在差值大于或等于预设范围指数时,计算上限值和下限值的平均值,并将平均值作为调整后的测试参数。
预设范围指数用delta1表示,预设范围指数可以是经验值,也可以是多次试验得到的数值。当P1-P0的差值大于或等于delta1时,调整后的测试参数P=(P1+P0)/2。进一步缩小测试参数范围。
一个具体实施例中,在测试类型为容错性测试时,测试结束条件为差值小于预设范围指数。
当P1-P0的差值小于预设范围指数delta1时,说明P1和P0已经非常接近,将上限值P1作为最终的测试结果。
一个具体实施例中,在测试类型为容错性测试时,如图5所示,区块链系统测试的方法流程主要包括:
步骤501,获取针对区块链系统的测试请求。
其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点。
步骤502,根据测试请求,生成测试用例。
其中,测试用例中包括目标节点的标识和目标故障类型。
步骤503,触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态。
步骤504,获取测试参数范围的上限值P1和下限值P0。
步骤505,判断区块链系统的状态是否存在异常,若是,执行步骤506,否则执行步骤507。
其中,区块链系统的状态包括区块链系统对外部交易的处理情况、以及区块链系统中各个节点所在服务器的资源使用情况。
步骤506,调整测试参数范围的上限值P1为当前测试用例的测试参数P。
步骤507,调整测试参数范围的下限值P0为当前测试用例的测试参数P。
步骤508,判断P1-P0的差值是否小于预设范围指数delta1,若是,结束流程,否则,执行步骤509。
步骤509,调整测试用例的测试参数P为(P1+P0)/2。
一个具体实施例中,如图6所示,根据区块链系统的状态,调整测试用例中的测试参数,包括:
步骤601,在测试类型为鲁棒性测试时,判断区块链系统的状态是否存在异常,其中,区块链系统的状态包括区块链系统中各个节点的状态、区块链系统中各个节点所在服务器的资源使用情况中的至少一个。
区块链系统中各个节点的状态,即整个区块链系统中是否出现超过共识算法容错范围的节点状态异常。区块链系统中各个节点所在服务器的资源使用情况,即测试用例执行过程中是否出现内存、CPU和磁盘等资源使用异常的情况。
鲁棒性测试,目的是为了测试区块链系统的可恢复性,主要考虑区块链系统中各个节点的状态、以及区块链系统中各个节点所在服务器的资源使用情况。
步骤602,若区块链系统的状态不存在异常,则将测试参数增加预设值,获得调整后的测试参数。
区块链系统的状态不存在异常,是指没有出现超过共识算法容错范围的节点状态异常、且区块链系统中各个节点所在服务器的资源使用情况不存在异常。
当前测试用例的测试参数用P表示。预设值用delta2表示,预设范围指数可以是经验值,也可以是多次试验得到的数值。
若区块链系统的状态不存在异常,则调整后的测试参数P=P+delta2。进一步增大测试参数,进行鲁棒性测试。
一个具体实施例中,在测试类型为鲁棒性测试时,测试结束条件为区块链系统的状态存在异常,且区块链系统的状态从异常恢复为正常的系统恢复时长大于预设超时时长。
区块链系统的状态存在异常,是指超过共识算法容错范围的节点状态异常、以及区块链系统中各个节点所在服务器的资源使用情况不存在异常中的至少一个。
超过共识算法容错范围的节点状态异常,是指控制目标节点所在的服务器回收目标故障类型对应的目标故障,使区块链系统的环境恢复正常后,超过f个节点的状态异常。f个节点是共识算法中的一个容错数量,f不是人为设置的,是根据共识算法的规则以及区块链系统中的节点总数量确定的。
区块链系统的状态从异常恢复为正常的系统恢复时长大于预设超时时长,则认为该测试参数下,区块链系统不能回复,将最后一次测试的测试参数P作为最终的测试结果。
一个具体实施例中,在测试类型为鲁棒性测试时,如图7所示,区块链系统测试的方法流程主要包括:
步骤701,获取针对区块链系统的测试请求。
其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点。
步骤702,根据测试请求,生成测试用例。
其中,测试用例中包括目标节点的标识和目标故障类型。
步骤703,触发区块链系统执行测试用例,并在测试用例执行完成后,控制目标节点所在的服务器回收目标故障类型对应的目标故障,使区块链系统的环境恢复正常,监测区块链系统的状态。
步骤704,判断区块链系统的状态是否存在异常,若是,执行步骤705,否则执行步骤706。
步骤705,判断区块链系统的系统恢复时长是否大于预设超时时长,若是,结束流程,否则,执行步骤703。
步骤706,调整测试用例的测试参数P为P+delta2。
综上,本申请实施例提供的该方法,获取针对区块链系统的测试请求,其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点,根据测试请求,生成测试用例,其中,测试用例中包括目标节点的标识和目标故障类型,触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态,根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果。
相对于现有技术中,区块链系统的测试过程中,需要人为多次调整测试参数,进行测试的情况,本申请通过在测试用例执行完成后,监测区块链系统的状态,根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果,能够根据区块链系统的状态,自动调整测试用例中的测试参数,并在调整测试用例中的测试参数后,自动执行触发区块链系统执行测试用例的步骤,能够根据区块链系统的状态自动调整测试用例,进行多轮测试,最终获取测试结果,避免人为多次调整测试参数,提高了区块链系统测试的效率。
基于同一构思,本申请实施例中提供了一种区块链系统测试装置,该装置的具体实施可参见方法实施例部分的描述,重复之处不再赘述,如图8所示,该装置主要包括:
获取模块801,用于获取针对区块链系统的测试请求,其中,所述测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,所述目标节点为所述区块链系统中的至少一个节点;
生成模块802,用于根据所述测试请求,生成测试用例,其中,所述测试用例中包括所述目标节点的标识和所述目标故障类型;
监测模块803,用于触发所述区块链系统执行所述测试用例,并在所述测试用例执行完成后,监测所述区块链系统的状态;
处理模块804,用于根据所述区块链系统的状态,调整所述测试用例中的测试参数后,返回执行所述触发所述区块链系统执行所述测试用例的步骤,直至满足测试结束条件时,结束测试,并获取所述区块链系统执行所述测试用例的测试结果。
基于同一构思,本申请实施例中还提供了一种电子设备,如图9所示,该电子设备主要包括:处理器901、存储器902和通信总线903,其中,处理器901和存储器902通过通信总线903完成相互间的通信。其中,存储器902中存储有可被处理器901执行的程序,处理器901执行存储器902中存储的程序,实现如下步骤:
获取针对区块链系统的测试请求,其中,测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,目标节点为区块链系统中的至少一个节点;根据测试请求,生成测试用例,其中,测试用例中包括目标节点的标识和目标故障类型;触发区块链系统执行测试用例,并在测试用例执行完成后,监测区块链系统的状态;根据区块链系统的状态,调整测试用例中的测试参数后,返回执行触发区块链系统执行测试用例的步骤,直至满足测试结束条件时,结束测试,并获取区块链系统执行测试用例的测试结果。
上述电子设备中提到的通信总线903可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线903可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器902可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选地,存储器还可以是至少一个位于远离前述处理器901的存储装置。
上述的处理器901可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等,还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述实施例中所描述的区块链系统测试方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、微波等)方式向另外一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带等)、光介质(例如DVD)或者半导体介质(例如固态硬盘)等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种区块链系统测试方法,其特征在于,包括:
获取针对区块链系统的测试请求,其中,所述测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,所述目标节点为所述区块链系统中的至少一个节点;
根据所述测试请求,生成测试用例,其中,所述测试用例中包括所述目标节点的标识和所述目标故障类型;
触发所述区块链系统执行所述测试用例,并在所述测试用例执行完成后,监测所述区块链系统的状态;
根据所述区块链系统的状态,调整所述测试用例中的测试参数后,返回执行所述触发所述区块链系统执行所述测试用例的步骤,直至满足测试结束条件时,结束测试,并获取所述区块链系统执行所述测试用例的测试结果。
2.根据权利要求1所述的区块链系统测试方法,其特征在于,所述监测所述区块链系统的状态之前,所述方法还包括:
获取测试类型,其中,所述测试类型包括容错性测试和鲁棒性测试中的至少一个;
在所述测试类型为鲁棒性测试时,控制所述目标节点所在的服务器回收所述目标故障类型对应的目标故障,使所述区块链系统的环境恢复正常。
3.根据权利要求2所述的区块链系统测试方法,其特征在于,所述根据所述区块链系统的状态,调整所述测试用例中的测试参数,包括:
获取测试参数范围的上限值和下限值;
在所述测试类型为容错性测试时,判断所述区块链系统的状态是否存在异常,其中,所述区块链系统的状态包括所述区块链系统对外部交易的处理情况、所述区块链系统中各个节点所在服务器的资源使用情况中的至少一个;
若所述区块链系统的状态存在异常,则将所述测试参数作为所述测试参数范围的所述上限值;
若所述区块链系统的状态不存在异常,则将所述测试参数作为所述测试参数范围的所述下限值;
计算所述测试参数范围的所述上限值和所述下限值的差值;
在所述差值大于或等于预设范围指数时,计算所述上限值和所述下限值的平均值,并将所述平均值作为调整后的测试参数。
4.根据权利要求2所述的区块链系统测试方法,其特征在于,所述根据所述区块链系统的状态,调整所述测试用例中的测试参数,包括:
在所述测试类型为鲁棒性测试时,判断所述区块链系统的状态是否存在异常,其中,所述区块链系统的状态包括所述区块链系统中各个节点的状态、所述区块链系统中各个节点所在服务器的资源使用情况中的至少一个;
若所述区块链系统的状态不存在异常,则将所述测试参数增加预设值,获得调整后的测试参数。
5.根据权利要求1所述的区块链系统测试方法,其特征在于,所述目标故障类型包括网络故障、资源故障和节点拜占庭行为中的至少两个。
6.根据权利要求1所述的区块链系统测试方法,其特征在于,所述获取针对区块链系统的测试请求之前,所述方法还包括:
获取区块链系统搭建请求,其中,所述区块链系统搭建请求中包括所述区块链系统中各个节点的标识、所述区块链系统中各个节点之间的连接关系和连接方式、以及所述区块链系统的网络拓扑类型,所述连接方式包括正向代理、反向代理和无代理中的至少一个;
根据所述区块链系统搭建请求,搭建所述区块链系统。
7.根据权利要求6所述的区块链系统测试方法,其特征在于,所述根据所述区块链系统搭建请求,搭建所述区块链系统,包括:
在所述连接方式为正向代理或反向代理时,根据所述连接方式,部署代理服务器;
根据所述区块链系统中各个节点的标识、所述区块链系统中各个节点之间的连接关系和连接方式、以及所述区块链系统的网络拓扑类型,生成所述区块链系统中各个节点的配置文件;
触发所述区块链系统中的区块链服务,完成搭建所述区块链系统。
8.一种区块链系统测试装置,其特征在于,包括:
获取模块,用于获取针对区块链系统的测试请求,其中,所述测试请求中包括注入故障的目标节点的标识,和注入的目标故障类型,所述目标节点为所述区块链系统中的至少一个节点;
生成模块,用于根据所述测试请求,生成测试用例,其中,所述测试用例中包括所述目标节点的标识和所述目标故障类型;
监测模块,用于触发所述区块链系统执行所述测试用例,并在所述测试用例执行完成后,监测所述区块链系统的状态;
处理模块,用于根据所述区块链系统的状态,调整所述测试用例中的测试参数后,返回执行所述触发所述区块链系统执行所述测试用例的步骤,直至满足测试结束条件时,结束测试,并获取所述区块链系统执行所述测试用例的测试结果。
9.一种电子设备,其特征在于,包括:处理器、存储器和通信总线,其中,处理器和存储器通过通信总线完成相互间的通信;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中所存储的程序,实现权利要求1至7任一项所述的区块链系统测试方法。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7任一项所述的区块链系统测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111522708.XA CN114416522A (zh) | 2021-12-13 | 2021-12-13 | 区块链系统测试方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111522708.XA CN114416522A (zh) | 2021-12-13 | 2021-12-13 | 区块链系统测试方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114416522A true CN114416522A (zh) | 2022-04-29 |
Family
ID=81265729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111522708.XA Pending CN114416522A (zh) | 2021-12-13 | 2021-12-13 | 区块链系统测试方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114416522A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741324A (zh) * | 2022-06-10 | 2022-07-12 | 中国信息通信研究院 | 区块链稳定性的测试方法和装置、电子设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329881A (zh) * | 2017-06-02 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 应用系统性能测试方法及装置、计算机设备及存储介质 |
CN109508295A (zh) * | 2018-11-14 | 2019-03-22 | 联动优势科技有限公司 | 区块链共识算法测试方法、装置、计算装置和存储介质 |
CN109783364A (zh) * | 2018-12-14 | 2019-05-21 | 深圳先进技术研究院 | 一种区块链性能测试系统及方法 |
CN112073269A (zh) * | 2020-09-14 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 区块链网络测试方法、装置、服务器及存储介质 |
CN112134762A (zh) * | 2020-09-24 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
CN113760722A (zh) * | 2021-01-13 | 2021-12-07 | 北京京东振世信息技术有限公司 | 测试系统和测试方法 |
-
2021
- 2021-12-13 CN CN202111522708.XA patent/CN114416522A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107329881A (zh) * | 2017-06-02 | 2017-11-07 | 腾讯科技(深圳)有限公司 | 应用系统性能测试方法及装置、计算机设备及存储介质 |
CN109508295A (zh) * | 2018-11-14 | 2019-03-22 | 联动优势科技有限公司 | 区块链共识算法测试方法、装置、计算装置和存储介质 |
CN109783364A (zh) * | 2018-12-14 | 2019-05-21 | 深圳先进技术研究院 | 一种区块链性能测试系统及方法 |
CN112073269A (zh) * | 2020-09-14 | 2020-12-11 | 腾讯科技(深圳)有限公司 | 区块链网络测试方法、装置、服务器及存储介质 |
CN112134762A (zh) * | 2020-09-24 | 2020-12-25 | 腾讯科技(深圳)有限公司 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
CN113760722A (zh) * | 2021-01-13 | 2021-12-07 | 北京京东振世信息技术有限公司 | 测试系统和测试方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741324A (zh) * | 2022-06-10 | 2022-07-12 | 中国信息通信研究院 | 区块链稳定性的测试方法和装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108390856B (zh) | 一种DDoS攻击检测方法、装置及电子设备 | |
CN112800129B (zh) | 区块状态更新方法、装置、系统和电子设备 | |
CN109739527A (zh) | 一种客户端灰度发布的方法、装置、服务器和存储介质 | |
CN113904847B (zh) | 物联网卡的云平台绑定方法、系统、设备及介质 | |
CN111930719B (zh) | 一种数据库访问方法、装置及系统 | |
CN112068935B (zh) | kubernetes程序部署监控方法、装置以及设备 | |
CN114416522A (zh) | 区块链系统测试方法、装置、设备及存储介质 | |
CN107222497B (zh) | 网络流量异常监测方法及电子设备 | |
CN113794677B (zh) | 一种高交互蜜罐的控制方法、装置及系统 | |
WO2024078015A1 (zh) | 基于镜像对的故障注入方法、装置、设备和存储介质 | |
CN112436962B (zh) | 区块链共识网络动态扩展方法、电子设备、系统及介质 | |
CN108256311B (zh) | 一种授权认证方法、装置及电子设备 | |
CN115037653B (zh) | 业务流量监控方法、装置、电子设备和存储介质 | |
CN108512698B (zh) | 一种网络容灾方法、装置及电子设备 | |
CN111935251B (zh) | 区块链网络管理方法、网络、装置、设备及存储介质 | |
CN115033927A (zh) | 一种检测数据完整性的方法、装置、设备及介质 | |
CN106937350B (zh) | 基于移动终端的路由方法及系统 | |
CN114037539A (zh) | 一种保险出单链路异常检测方法及装置 | |
CN113656215A (zh) | 一种基于集中配置的自动化容灾方法、系统、介质和设备 | |
CN111884932A (zh) | 一种链路确定方法、装置、设备和计算机可读存储介质 | |
CN115878450A (zh) | 执行测试任务的方法及装置 | |
CN113835621B (zh) | Ip仲裁进程数量管控方法、系统、终端及存储介质 | |
CN107819739B (zh) | 一种确定终端是否存在长链路连接的方法及服务器 | |
CN110837431A (zh) | 服务控制方法、装置、计算机设备及计算机可读存储介质 | |
CN117478299B (zh) | 区块链共识算法切换方法、装置和计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |