CN112699049B - 区块链网络测试方法、装置、介质及电子设备 - Google Patents
区块链网络测试方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN112699049B CN112699049B CN202110041054.2A CN202110041054A CN112699049B CN 112699049 B CN112699049 B CN 112699049B CN 202110041054 A CN202110041054 A CN 202110041054A CN 112699049 B CN112699049 B CN 112699049B
- Authority
- CN
- China
- Prior art keywords
- test
- scene
- code
- blockchain network
- 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.)
- Active
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 474
- 230000002159 abnormal effect Effects 0.000 claims abstract description 139
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000012544 monitoring process Methods 0.000 claims abstract description 7
- 230000008859 change Effects 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 238000013142 basic testing Methods 0.000 claims description 10
- 238000009826 distribution Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 31
- 239000000243 solution Substances 0.000 description 27
- 238000004422 calculation algorithm Methods 0.000 description 26
- 230000002068 genetic effect Effects 0.000 description 25
- 238000010586 diagram Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000000739 chaotic effect Effects 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 10
- 230000035772 mutation Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013468 resource allocation Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 241000282693 Cercopithecidae Species 0.000 description 1
- 238000012356 Product development Methods 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 210000000349 chromosome Anatomy 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000008303 genetic mechanism Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请属于区块链技术领域,具体涉及一种区块链网络测试方法、区块链网络测试装置、计算机可读介质以及电子设备。该方法包括:获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;根据所述测试覆盖参数更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。该方法可以提高区块链网络的测试完备性、测试效率和测试结果可靠性。
Description
技术领域
本申请属于区块链技术领域,具体涉及一种区块链网络测试方法、区块链网络测试装置、计算机可读介质以及电子设备。
背景技术
区块链网络是一种基于P2P网络的分布式系统,区块链网络中的节点角色既可以是客户端,也可以是服务器。即该网络中的每一台计算机既可以充当网络服务的请求者,同时又可以对其它计算机的请求做出响应,提供资源、服务和内容。
开发人员在完成区块链网络的产品开发或者产品更新后,一般会由测试人员对相应的网络系统进行测试评审,以便尽早发现系统存在的问题,进而提高系统上线后的运行稳定性和可靠性。传统的测试方法往往采用随机策略,即在系统运行时随机施加异常条件,以监测系统在异常测试场景中的运行状态。然而,基于随机策略的测试方法由于测试过程的不可控,发现问题的效率较低,测试结果具有极大的偶然性。
发明内容
本申请的目的在于提供一种区块链网络测试方法、区块链网络测试装置、计算机可读介质以及电子设备,至少在一定程度上克服相关技术中存在的测试效率低、测试结果可靠性差等技术问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种区块链网络测试方法,所述方法包括:获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;根据所述测试覆盖参数更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。
根据本申请实施例的一个方面,提供一种区块链网络测试装置,所述装置包括:集合获取模块,被配置为获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;异常测试模块,被配置为根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;集合更新模块,被配置为根据所述测试覆盖参数更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。
在本申请的一些实施例中,基于以上技术方案,所述集合更新模块包括:稳态变化确定单元,被配置为根据所述测试覆盖参数确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息,所述覆盖参数变化信息用于表示所述区块链网络的测试覆盖状态的变化程度;目标编码选取单元,被配置为根据所述覆盖参数变化信息从所述编码集合中选取一个或者多个目标场景编码;编码数值调整单元,被配置为基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,以根据调整数值后的目标场景编码更新所述编码集合。
在本申请的一些实施例中,基于以上技术方案,所述稳态变化确定单元包括:测试覆盖参数获取子单元,被配置为获取所述区块链网络在进行异常测试前的测试前覆盖参数以及所述区块链网络在所述异常测试场景中进行异常测试后的测试后覆盖参数;向量距离确定子单元,被配置为获取所述测试前覆盖参数和所述测试后覆盖参数的向量距离以确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息。
在本申请的一些实施例中,基于以上技术方案,所述目标编码选取单元包括:选取概率分配子单元,被配置为根据所述覆盖参数变化信息为所述编码集合中的各个场景编码分配选取概率;目标编码选取子单元,被配置为按照所述选取概率在所述编码集合中选取一个或者多个目标场景编码。
在本申请的一些实施例中,基于以上技术方案,所述编码数值调整单元包括:编码位置选取子单元,被配置为在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;编码数值交换子单元,被配置为随机选取两个目标场景编码,按照预设的数值更新概率交换所述两个目标场景编码在所述目标编码位置上的编码数值。
在本申请的一些实施例中,基于以上技术方案,所述编码数值调整单元包括:编码位置选取子单元,被配置为在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;编码数值获取子单元,被配置为获取与所述目标编码位置上的当前编码数值相对应的更新编码数值;编码数值替换子单元,被配置为基于预设的数值更新概率将所述目标编码位置上的当前编码数值替换为所述更新编码数值。
在本申请的一些实施例中,基于以上技术方案,所述集合获取模块包括:资源参数获取单元,被配置为获取多种类型的测试资源以及分别与每种测试资源相对应的多个候选资源参数;参数初始化单元,被配置为对每种测试资源对应的候选资源参数进行随机初始化,得到多个具有不同候选资源参数的资源组合;编码处理单元,被配置为按照预设的编码规则对所述候选资源参数进行编码处理以得到所述资源组合的场景编码;编码组合单元,被配置为将各个资源组合的场景编码组成编码集合。
在本申请的一些实施例中,基于以上技术方案,所述编码处理单元包括:测试模式获取子单元,被配置为获取区块链网络中的待测试的区块链节点的节点数量以及所述区块链网络的测试模式,所述测试模式包括向单个区块链节点施加异常测试场景的单节点测试模式以及向多个区块链节点施加异常测试场景的多节点测试模式;编码模板选取子单元,被配置为根据所述节点数量和所述测试模式,选取包括多个编码位置的编码模板;资源参数填充子单元,被配置为按照预设的编码规则将所述资源组合中的候选资源参数填充至所述编码模板中,以得到所述资源组合的场景编码。
在本申请的一些实施例中,基于以上技术方案,所述候选资源参数包括网络延迟、磁盘填充、内存负载和CPU负载中的至少一种;所述资源参数填充子单元包括:参数编号获取子单元,被配置为获取所述资源组合中的各个候选资源参数的参数编号;编号转换子单元,被配置为将所述参数编号转换为二进制编码;关系获取子单元,被配置为获取所述编码模板中的各个编码位置与不同类型的测试资源的位置对应关系;编码填充子单元,被配置为根据所述位置对应关系将所述二进制编码填充至所述编码模板的编码位置上。
在本申请的一些实施例中,基于以上技术方案,所述异常测试模块包括:节点信息获取单元,被配置为获取区块链网络中的待测试的区块链节点的节点信息,所述节点信息包括所述区块链节点的节点标识以及所述区块链节点在所述区块链网络中的通信地址;测试请求发送单元,被配置为根据所述节点信息向所述区块链网络发送与所述场景编码相对应的异常测试请求;异常测试单元,被配置为根据所述异常测试请求对所述待测试的区块链节点进行异常测试。
在本申请的一些实施例中,基于以上技术方案,所述测试请求发送单元包括:节点分类子单元,被配置为根据所述节点信息中的节点标识对所述区块链节点进行分类处理以确定与所述场景编码相匹配的异常测试节点以及除所述异常测试节点以外的正常测试节点;请求发送子单元,被配置为根据所述节点信息中的通信地址向所述异常测试节点发送与所述场景编码相对应的异常测试请求。
在本申请的一些实施例中,基于以上技术方案,所述异常测试单元包括:基础场景创建子单元,被配置为在所述区块链网络中创建用于加载测试用例的基础测试场景;资源调整子单元,被配置为根据所述异常测试请求调整所述基础测试场景的测试资源以创建与所述异常测试请求相对应的异常测试场景;测试用例执行子单元,被配置为控制所述正常测试节点在所述基础测试场景中执行所述测试用例,并控制所述异常测试节点在所述异常测试场景中执行所述测试用例。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的区块链网络测试方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的区块链网络测试方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的区块链网络测试方法。
在本申请实施例提供的技术方案中,基于包括多个场景编码的编码集合可以向区块链网络施加对应于不同测试资源组合的异常测试场景,从而在不同的异常测试场景下监测区块链网络的测试覆盖状态,并进一步更新编码集合以便有针对性地调整区块链网络的测试覆盖状态。基于测试覆盖状态的控制可以使区块链网络在提高测试完备性的前提下尽快地暴露出网络系统的问题和缺陷,尽可能地降低了测试结果的随机性和偶然性,因而可以提高区块链网络测试的测试效率和测试可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了应用本申请技术方案的区块链系统的系统架构框图。
图2示出了本申请实施例中针对遗传算法辅助混沌测试区块链的整体流程框架。
图3示出了本申请一个实施例中的区块链网络测试方法的步骤流程图。
图4示出了本申请一个实施例中基于参数初始化获取编码集合的步骤流程图。
图5示出了本申请一个实施例中对候选资源参数进行编码处理的原理示意图。
图6示出了本申请一个实施例中基于场景编码进行异常测试的步骤流程图。
图7示出了本申请一个实施例中基于遗传算法更新编码集合的步骤流程图。
图8示出了本申请实施例在一应用场景中基于遗传算法辅助进行混沌测试的过程示意图。
图9示意性地示出了本申请实施例提供的区块链网络测试装置的结构框图。
图10示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了应用本申请技术方案的区块链系统的系统架构框图。
如图1所示,区块链系统100可以包括至少一个客户端110和区块链网络120,区块链网络120包括至少一个节点设备121。客户端110可以是智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。区块链网络120可以具有多种不同类型,例如可以是由存在业务关系的业务主体共同搭建的公有链、私有链或者联盟链。节点设备121可以是终端设备或者服务器等任意形式的电子设备,例如节点设备121可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
用户可以利用客户端110与区块链网络120进行数据通信,从而查询或者更新由区块链网络120中的节点设备121共同维护的共享数据。在区块链网络120中,每个节点设备121在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护区块链网络内的共享数据。为了保证信息互通,各个节点设备121之间可以存在数据通信链路,各个节点设备121相互可以通过数据通信链路进行数据传输。例如,当区块链网络120中的任意节点设备121接收到输入信息,并将输入信息在区块链网络120中进行广播时,区块链网络120中的其他节点设备可以根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储。
区块链网络120中的各个节点设备121上可以存储一条相同的区块链(BlockChain)。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合而成的一种链式数据结构,并以密码学方式保证数据不可篡改和不可伪造的分布式数据库。区块链由多个顺次连接的区块组成,每当有新的数据需要写入区块链时,这些数据会汇总到一个新生成的区块中,新生成的区块将被链接至区块链的末端,通过共识算法可以保证每个节点设备121上新增的区块是完全相同的。在每个区块的区块体中记录了当前区块的数据,同时在其区块头中保存与之相连的前一区块的哈希值(Hash),若前一区块中的交易数据发生变化,那么当前区块的哈希值也将随之改变。因此,上传至区块链网络中的数据难以被篡改,可以提高共享数据的可靠性。
为了达到多中心、不可篡改的目的,典型的区块链网络中的多节点满足一定的容错机制,例如可以采用拜占庭容错机制(Byzantine Fault Tolerance,BFT)作为共识算法。在多节点构成的共识网络中,若存在某节点宕机、内存溢出或者作恶,整个区块链网络也是可以正常运行的,当然这些异常导致对区块链运行状态的影响必须得到可靠验证。在典型的混沌测试异常场景中,分为资源类异常和业务类异常,相关的异常问题在真实的生产环境或者测试环境中都会发生,在分布式区块链验证异常场景的情况下,需要考虑多种异常问题的交叉,涉及到组合异常、条件异常和时序异常等等。
传统的针对区块链分布式系统的混沌测试一般是基于各种开源异常注入工具,如ChaosBlade、ChaosMesh、Monkey等等。具体采用随机策略,即随机选择若干区块链节点在某个时间点进行某个异常实施,这种随机策略发现问题的效率低,复现问题难,测试结束时间不可控。
针对相关技术中存在的上述问题,本申请提出一种基于区块链测试覆盖参数的遗传算法辅助混沌测试的实现方案,即预先定义符合区块链运行的测试覆盖参数作为遗传算法的基准,然后给异常场景进行编码,定义好遗传的变异率、交叉率和遗传代数后,实施混沌测试,在遗传算法的迭代下,可以快速有收敛地提高区块链项目的测试覆盖率,高效且精准地发现系统问题。其中,混沌测试是一种提高技术架构弹性能力的复杂技术手段,在分布式系统上进行实验的学科,目的是建立对系统承受生产环境中湍流条件能力的信心。混沌工程的设计原则包括:建立稳定状态的假设、多样化现实世界事件、在生产环境运行实验、持续自动化运行实验以及最小化“爆炸半径”等。遗传算法(Genetic Algorithm,GA)最早是由美国的John holland于20世纪70年代提出,该算法是根据大自然中生物体进化规律而设计提出的。是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法通过数学的方式,利用计算机仿真运算,将问题的求解过程转换成类似生物进化中的染色体基因的交叉、变异等过程。在求解较为复杂的组合优化问题时,相对一些常规的优化算法,遗传算法通常能够较快地获得较好的优化结果。遗传算法已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。
图2示出了本申请实施例中针对遗传算法辅助混沌测试区块链的整体流程框架。如图2所示,一个开发完成的区块链产品在上线之前需要经历产品提测阶段210、混沌测试阶段220以及产品发布阶段230等三个流程阶段。
在产品提测阶段210中,涉及的产品提测流程主要可以包括如下的步骤S211至步骤S214。
步骤S211:由开发人员研究开发区块链产品。
步骤S212:将开发得到的区块链产品提交至软件研发提测流程管理平台。该平台用于管理软件版本的开发、提测、缺陷提交、回归测试以及发布的整个生命周期。
步骤S213:软件研发提测流程管理平台对接收到的区块链产品进行分发处理。
步骤S214:对完成分发的区块链产品进行审核,并在审核通过后进入测试流程。
在混沌测试阶段220中,涉及的产品测试方法主要包括如下的步骤S221至步骤S224。
步骤S221:针对自动化平台提交的被测区块链产品启动混沌测试。
步骤S222:收集测试覆盖参数,并基于测试覆盖参数运行遗传算法。
步骤S223:基于遗传算法触发执行自动化测试用例。
步骤S224:监控测试过程中的产品运行状态,对系统问题进行告警提示,并进行问题定位。
在产品发布阶段230中,涉及的产品发布方法主要包括如下的步骤S231至步骤S233。
步骤S231:对区块链产品的发布需求进行评审。
步骤S232:根据混沌测试的执行结果生成测试报告。
步骤S233:对测试合格的区块链产品进行发布上线。
本申请实施例提供的区块链网络测试方法等技术方案主要涉及上述各流程阶段中的混沌测试阶段,混沌测试的方案细节将在下方的具体实施方式中做出详细说明。
图3示出了本申请一个实施例中的区块链网络测试方法的步骤流程图。如图3所示,该区块链网络测试方法主要可以包括如下的步骤S310至步骤S330。
步骤S310:获取包括多个场景编码的编码集合,场景编码用于表示异常测试场景中的测试资源的组合信息。
步骤S320:根据场景编码对区块链网络进行异常测试,并监测区块链网络在异常测试场景下的测试覆盖参数,测试覆盖参数用于表示异常测试对于区块链网络的程序代码的代码覆盖程度。
步骤S330:根据测试覆盖参数更新编码集合,并根据更新后的编码集合对区块链网络进行异常测试。
在本申请实施例提供的区块链网络测试方法中,基于包括多个场景编码的编码集合可以向区块链网络施加对应于不同测试资源组合的异常测试场景,从而在不同的异常测试场景下监测区块链网络的测试覆盖状态,并进一步更新编码集合以便有针对性地调整区块链网络的测试覆盖状态。基于测试覆盖状态的控制可以使区块链网络在提高测试完备性的前提下尽快地暴露出网络系统的问题和缺陷,尽可能地降低了测试结果的随机性和偶然性,因而可以提高区块链网络测试的测试效率和测试可靠性。
下面结合具体的应用场景对本申请实施例中的区块链网络测试方法的各个步骤做详细说明。
在步骤S310中,获取包括多个场景编码的编码集合,场景编码用于表示异常测试场景中的测试资源的组合信息。
异常测试场景是通过对不同的测试资源进行组合形成的可控测试环境,在异常测试场景中可以通过资源调控为区块链网络的运行过程设置障碍,以监控区块链网络在异常环境中的运行状态。测试资源是在测试环境中需要使用的各种类型的硬件资源或者软件资源,例如可以包括CPU、内存、磁盘、网络、进程等等。在一个编码集合中包括有多个场景编码,每个场景编码对应于一个异常测试场景。通过向区块链网络施加不同的异常测试场景,可以对各种异常测试场景下的测试结果进行比较,从而有针对性地对编码集合做更新调整。
在开启对区块链网络的异常测试流程时,可以通过参数初始化的方式获取包括多个场景编码的编码集合,并在后续的测试过程中根据测试结果对编码集合进行更新。
图4示出了本申请一个实施例中基于参数初始化获取编码集合的步骤流程图。如图4所示,步骤S310中的获取包括多个场景编码的编码集合,可以包括如下的步骤S410至步骤S430。
在步骤S410中,获取多种类型的测试资源以及分别与每种测试资源相对应的多个候选资源参数。
测试资源可以包括CPU、内存、磁盘、网络、进程等多种类型,本申请实施例中可以根据测试需求任意选取两种或者两种以上的资源类型作为对区块链网络进行异常测试的测试资源。其中,每种测试资源可以对应多个可供选择的候选资源参数,候选资源参数用于表示测试资源的控制参数的取值。举例而言,CPU资源对应的候选资源参数为CPU负载,CPU负载反映的是当前CPU的繁忙程度,可以用不同数值大小的CPU使用率来进行表征,例如作为候选资源参数的CPU负载可以包括15%、35%、50%、75%、85%、100%等多个预先设置的离散数值。内存资源对应的候选资源参数为内存负载,内存负载反映的是当前内存的占用比例,可以用不同数值大小的内存占用率来进行表征,例如作为候选资源参数的内存负载可以包括15%、35%、50%、75%、85%、100%等多个预先设置的离散数值。磁盘资源对应的候选资源参数为磁盘填充,磁盘填充反映的是当前磁盘的占用比例,可以用不同数值大小的磁盘占用率来进行表征,例如作为候选资源参数的磁盘填充可以包括15%、35%、50%、75%、85%、100%等多个预先设置的离散数值。网络资源对应的候选资源参数为网络延迟,网络延迟反映的是数据在网络介质中进行传输所用的时间大小,例如可以包括短、中、长等多个预先设置的延迟等级,每个延迟等级可以对应于一个预先设置的时间阈值区间。进程资源对应的候选资源参数为进程控制参数,可以用是否杀死(kill)进程来进行表征,例如可以包括是和否两种控制选项。
在步骤S420中,对每种测试资源对应的候选资源参数进行随机初始化,得到多个具有不同候选资源参数的资源组合。
每种测试资源均对应有多种不同的候选资源参数可供选择,采用随机初始化的方式将各种不同参数取值的候选资源参数进行组合可以形成不同的资源组合。举例而言,某个资源组合为CPU负载75%、内存负载50%、磁盘填充75%、网络延迟“长”、杀死进程;另一资源组合为CPU负载100%、内存负载85%、磁盘填充50%、网络延迟“中”、不杀死进程。根据实际的测试需求,可以初始化得到不同数量的资源组合。另外,本申请实施例也可以根据预设规则自动化地生成资源组合或者人工配置参数生成资源组合。
在步骤S430中,按照预设的编码规则对候选资源参数进行编码处理以得到资源组合的场景编码,并将各个资源组合的场景编码组成编码集合。
在获取到各种具有不同候选资源参数的资源组合后,可以按照预设的编码规则对资源组合中的各个候选资源参数进行编码处理,形成包括多个编码数值的场景编码,各个资源组合对应的场景编码可以组成相应的编码集合。例如在步骤S420中对候选资源参数进行随机初始化后得到数量为N的资源组合,本步骤对这些资源组合进行编码处理后可以组成包括N个场景编码的编码集合。
在本申请的一个实施例中,对候选资源参数进行编码处理的方法可以是根据测试对象和测试模式选取对应的编码模板,再根据候选资源参数的参数取值对编码模板进行数值填充。具体而言,按照预设的编码规则对候选资源参数进行编码处理以得到资源组合的场景编码的方法包括:获取区块链网络中的待测试的区块链节点的节点数量以及区块链网络的测试模式,测试模式包括向单个区块链节点施加异常测试场景的单节点测试模式以及向多个区块链节点施加异常测试场景的多节点测试模式;根据节点数量和测试模式,选取包括多个编码位置的编码模板;按照预设的编码规则将资源组合中的候选资源参数填充至编码模板中,以得到资源组合的场景编码。
图5示出了本申请一个实施例中对候选资源参数进行编码处理的原理示意图。结合图5所示的应用场景,按照预设的编码规则将资源组合中的候选资源参数填充至编码模板中的方法,可以包括如下的步骤S510至步骤S540。
步骤S510:获取资源组合中的各个候选资源参数的参数编号。
针对每种测试资源对应的候选资源参数,可以按照不同的参数取值为其配置相应的参数编号。举例而言,网络延迟对应的候选资源参数为“短”、“中”、“长”,与之对应的参数编号为0~2;磁盘填充对应的候选资源参数为15%、35%、50%、75%、85%、100%,与之对应的参数编号为0~5;内存负载对应的候选资源参数为15%、35%、50%、75%、85%、100%,与之对应的参数编号为0~5;CPU负载对应的候选资源参数为15%、35%、50%、75%、85%、100%,与之对应的参数编号为0~5;进程控制参数对应的候选资源参数为“是”(表示杀死进程)、“否”(表示不杀死进程),与之对应的参数编号为0~1。另外,在不同的测试模式下,可以根据待测试的区块链节点的数量确定施加异常测试场景的区块链节点的节点参数编号,节点参数编号表示与当前场景编码对应的异常测试场景被施加到哪一个或者哪几个区块链节点上。当待测试的区块链节点的节点数量为m时,在单节点测试模式下的节点参数编号为0~(m-1),而在多节点测试模式下的节点参数编号为0~(2m-1)。例如,待测试的区块链节点的节点数量为4,则单节点测试模式下的节点参数编号为0~3,而多节点测试模式下的节点参数编号为0~15。
在图5所示的应用场景中,资源组合为:网络延迟“长”、磁盘填充75%、内存负载50%、CPU负载75%、杀死进程,对应获取到的参数编号依次为2、3、2、3、0。在该应用场景中,待测试的区块链节点包括节点A、节点B、节点C和节点D,节点数量为4。在单节点测试模式下向节点D施加异常测试场景,与之对应的节点参数编号为3。
步骤S520:将参数编号转换为二进制编码。
各个候选资源参数对应的参数编号为十进制数值,本申请实施例对其进行格式转换得到对应的二进制编码。在图5所示的应用场景中,分别对各个候选资源参数的参数编号以及待测试的区块链节点的节点参数编号3、2、3、2、0、3进行格式转换后可以得到对应的二进制编码10、011、010、011、1、11。
步骤S530:获取编码模板中的各个编码位置与不同类型的测试资源的位置对应关系。
在本申请实施例中,按照网络、磁盘、内存、CPU和进程的顺序将测试资源与编码模板中从前向后的各个编码位置建立一一对应的位置对应关系。在其他可选的实施方式中,各个不同类型的测试资源在编码模板中的对应编码位置也可以采用其他可选的排序方式,本申请对此不做特殊限定。
步骤S540:根据位置对应关系将二进制编码填充至编码模板的编码位置上。
在图5所示的应用场景中,将各个二进制编码填充至编码模板的各个编码位置后,得到的场景编码为10011010011111。对于不同的场景编码,在对区块链网络进行异常测试时,可以对场景编码进行解码处理得到各种测试资源的配置参数,从而向指定的区块链节点施加异常测试场景。
在其他一些可选的实施方式中,本申请实施例也可以采用浮点数或者无数值含义的符号集进行编码处理以得到相应的场景编码。
在步骤S320中,根据场景编码对区块链网络进行异常测试,并监测区块链网络在异常测试场景下的测试覆盖参数,测试覆盖参数用于表示异常测试对于区块链网络的程序代码的代码覆盖程度。
每个场景编码对应于一个异常测试场景,该异常测试场景表示在区块链网络的运行过程中控制网络中的若干数量的区块链节点的资源配置参数,用以模拟在部分区块链节点出现资源异常的情形下区块链网络整体的程序代码的代码覆盖程度。该程序代码的代码覆盖程度可以由预先设置的测试覆盖参数进行表征,测试覆盖参数例如可以包括基于不同标准的代码覆盖率,如语句覆盖率、函数覆盖率、指令覆盖率、判断覆盖率、条件覆盖率、条件判断组合覆盖率等等。语句覆盖率(又称为行覆盖率)用于度量程序代码中的每一个可执行语句是否都已纳入测试,函数覆盖率用于度量程序代码中的每一个函数是否都已纳入测试,指令覆盖率用于度量程序代码中的每个代码指令是否被执行,判断覆盖率(又称为分支覆盖率)用于度量程序代码中的每一个判定分支是否都已纳入测试,条件覆盖率用于度量判定中每个子表达式结果true和false是否已纳入测试,条件判断组合覆盖率用于度量每个判定中的条件的各种可能组合都已纳入测试。。
图6示出了本申请一个实施例中基于场景编码进行异常测试的步骤流程图。如图6所示,在以上各实施例的基础上,步骤S320中的根据场景编码对区块链网络进行异常测试,可以包括如下的步骤S610至步骤S630。
步骤S610:获取区块链网络中的待测试的区块链节点的节点信息,节点信息包括区块链节点的节点标识以及区块链节点在区块链网络中的通信地址。
区块链节点的节点标识是用于区分区块链网络中各个节点的唯一性标识,基于一个节点标识可以唯一地在区块链网络中确定一个对应的区块链节点。节点标识可以是区块链节点的节点名称或者节点编号,例如可以是节点A、节点B、节点C、节点D……。区块链节点在区块链网络的通信地址是能够实现区块链节点进行数据收发的网络配置信息,例如可以包括IP地址和网络端口。
步骤S620:根据节点信息向区块链网络发送与场景编码相对应的异常测试请求。
在本申请的一个实施例中,根据节点信息中的节点标识对区块链节点进行分类处理以确定与场景编码相匹配的异常测试节点和正常测试节点;根据节点信息中的通信地址向异常测试节点发送与场景编码相对应的异常测试请求。
将节点信息中的节点标识与场景编码中的节点参数编号进行匹配检测,可以确定每个区块链节点为需要施加异常测试场景的异常测试节点或者不需要施加异常测试场景的正常测试节点。根据节点信息中的通信地址,可以与异常测试节点进行数据通信,从而可以将与场景编码相对应的异常测试请求发送至对应的异常测试节点。
本申请实施例可以对场景编码进行解码处理以确定每个场景编码对应的测试资源的资源配置信息以及每个场景编码对应的异常测试节点,根据解码得到的信息可以生成相应的异常测试请求,从而可以将异常测试请求发送至对应的异常测试节点。以混沌测试为例,异常测试请求主要可以用于确定工作流workflows、异常模拟资源resource、策略strategy和工具集utils。其中,工作流保存每次异常执行的时序信息,例如可以包括目标IP地址、端口、异常场景、具体实施参数、实施时间、实施时长等等;异常模拟资源表示CPU、磁盘、内存、网络、进程等测试资源的配置信息;策略表示测试模式为针对单个节点进行异常资源配置的单节点测试模式或者针对多个节点进行异常资源配置的多节点测试模式;工具集表示定时脚本、监控工具等测试过程中需要使用的测试工具。
步骤S630:根据异常测试请求对待测试的区块链节点进行异常测试。
本申请实施例可以在区块链网络中创建用于加载测试用例的基础测试场景;根据异常测试请求调整基础测试场景的测试资源以创建与异常测试请求相对应的异常测试场景;控制正常测试节点在基础测试场景中执行测试用例,并控制异常测试节点在异常测试场景中执行测试用例。
通过向异常测试节点施加异常测试场景,可以快速精准地破坏区块链网络的系统稳态,提高区块链网络的测试效率。
在步骤S330中,根据测试覆盖参数更新编码集合,并根据更新后的编码集合对区块链网络进行异常测试。
在对区块链网络进行异常测试的过程中,可以实时地监测区块链网络在异常测试场景下的测试覆盖参数,根据监测获得的测试覆盖参数可以对编码集合进行更新,以便尽可能地提高异常测试中对于区块链程序代码的覆盖程度。
图7示出了本申请一个实施例中基于遗传算法更新编码集合的步骤流程图。在开始对区块链网络进行测试时,首先通过参数初始化获得包括多个场景编码的编码集合,在异常测试过程中监测区块链网络的测试覆盖参数,并基于测试覆盖参数对编码集合进行迭代更新。如图7所示,在以上实施例的基础上,步骤S330中的根据测试覆盖参数更新编码集合,可以包括如下的步骤S710至步骤S730。
步骤S710:根据测试覆盖参数确定区块链网络在异常测试场景中进行异常测试后的覆盖参数变化信息,覆盖参数变化信息用于表示区块链网络的测试覆盖状态的变化程度。
覆盖参数变化信息可以是区块链网络在开始测试前以及完整执行一个或者多个测试用例后的测试覆盖参数的变化信息。本申请实施例可以先获取区块链网络在进行异常测试前的测试前覆盖参数以及区块链网络在异常测试场景中进行异常测试后的测试后覆盖参数,然后获取测试前覆盖参数和测试后覆盖参数的向量距离以确定区块链网络在异常测试场景中进行异常测试后的覆盖参数变化信息。举例而言,本申请实施例在一个应用场景中可以采集行覆盖率、分支覆盖率和函数覆盖率三项测试覆盖参数,根据实时监测到的测试覆盖参数可以组成一个三维参数向量。通过计算向量距离来确定测试前后的覆盖参数变化信息,该向量距离例如可以是欧式距离。
步骤S720:根据覆盖参数变化信息从编码集合中选取一个或者多个目标场景编码。
针对编码集合中的每一个场景编码,均可以通过异常测试和稳态监测确定一个与之对应的覆盖参数变化信息,基于覆盖参数变化信息可以确定各个异常测试场景的测试覆盖状态的变化程度,变化程度越大表示异常测试场景对于区块链网络的系统测试完备性的提高程度越大。
本申请实施例可以采用随机采样的方式从编码集合中选取一定数量的目标场景编码。具体而言,本申请实施例可以根据覆盖参数变化信息为编码集合中的各个场景编码分配选取概率;按照选取概率在编码集合中选取一个或者多个目标场景编码。每个场景编码被分配的选取概率与其覆盖参数变化信息呈正相关关系,即测试覆盖状态的变化程度越大的场景编码,被选作目标场景编码的概率也越大。
在其他一些可选的实施方式中,本申请实施例也可以采用均匀排序的方式,根据覆盖参数变化信息按照测试覆盖状态的变化程度从大到小的顺序对各个场景编码进行排序,然后选择排序靠前的若干数量的场景编码作为目标场景编码。
步骤S730:基于预设的数值更新概率对目标场景编码中的部分编码数值进行数值调整,以根据调整数值后的目标场景编码更新编码集合。
对目标场景编码中的编码数值进行数值调整的方法可以包括交叉更新和变异更新两种运算方式。
交叉更新的方法可以包括:在目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;随机选取两个目标场景编码,按照预设的数值更新概率交换两个目标场景编码在目标编码位置上的编码数值。本申请实施例可以预先设定一交叉率作为数值更新概率,交叉率的取值范围可以是0.5~0.9,例如取值为0.7。当需要进行数值调整时,可以在0~1的数值范围内生成一个随机数,比较该随机数和交叉率的数值大小以确定是否采用交叉更新的方式进行数值调整。如果随机数小于交叉率,则对随机选取的两个目标场景编码在其目标编码位置上进行数值交换。
变异更新的方法可以包括:在目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;获取与目标编码位置上的当前编码数值相对应的更新编码数值;基于预设的数值更新概率将目标编码位置上的当前编码数值替换为更新编码数值。本申请实施例可以预先设定一变异率作为数值更新概率,变异率的取值范围可以是0.01~0.1,例如可以取值为1/Lind,其中Lind为场景编码的编码长度。当需要进行数值调整时,可以在0~1的取值范围内生成一个随机数,比较该随机数与变异率的数值大小以确定是否采用变异更新的方式进行数值调整。如果随机数小于变异率,则在随机选取的目标编码位置上将当前编码数值替换为更新编码数值。当场景编码为二进制编码时,可以将目标编码位置上的0替换为1或者将目标编码位置上的1替换为0。
图8示出了本申请实施例在一应用场景中基于遗传算法辅助进行混沌测试的过程示意图。
在该应用场景中首先可以进行异常场景编码,在单节点测试模式下,每个异常测试场景的编码规则如下。
网络延迟:短、中、长,编号0-2;
磁盘填充:15%、35%、50%、75%、85%、100%,编号0-5;
内存负载:15%、35%、50%、75%、85%、100%,编号0-5;
CPU负载:15%、35%、50%、75%、85%、100%,编号0-5;
进程kill:是、否,编号0-1;
控制节点:4个节点,编号0-3。
举例而言,场景编码10011010011111中的各个编码数值的含义如下。
10:网络延迟长;
011:磁盘填充75%;
010:内存负载50%;
011:CPU负载75%;
1:不杀死进程;
11:控制4号节点作为异常测试节点。
如图8所示,在该应用场景中进行区块链网络测试的过程可以包括如下步骤。
步骤S801:初始化一批异常测试场景,并对每个异常测试场景进行场景编码得到编码集合。例如,编码集合P(t)中包括有三个场景编码10011010011111、01011010011101和00010110011101。
步骤S802:进入遗传算法选择阶段,在编码集合中选取部分场景编码作为待更新的目标场景编码。例如,本申请实施例可以选择排序在前的两个场景编码10011010011111和01011010011101作为目标场景编码。
步骤S803:进入遗传算法交叉运算阶段,将步骤S802中选出的目标场景编码进行交叉运算,即将目标场景编码中随机选取的部分编码位置交换编码数值。例如,图8中交换了目标场景编码的后四位编码数值1101和1111。
步骤S804:进入遗传算法变异运算阶段,针对步骤S803中交叉运算后的目标场景编码,进行某些编码位置的变异操作,即将0替换为1并将1替换为0。
步骤S805:按照更新得到的编码集合P(t+1),对区块链网络施加混沌测试。
步骤S806:经过一段时间的混沌测试后,收集区块链网络的测试覆盖参数,如行覆盖率、分支覆盖率和函数覆盖率等等。
步骤S807:以测试覆盖参数的向量距离作为评价函数,计算每个异常测试场景对应的覆盖参数变化信息。
步骤S808:返回步骤S802,采用优胜劣汰的方式,根据覆盖参数变化信息从更新后的编码集合中重新选取目标场景编码,并继续进行遗传进化直至满足预设的进化代数。例如预设的最大进化代数为16,则对编码集合进行16次进化更新。
在所有进化代数完成后,可以基于系统可观测性的告警信息,定位相关问题,并进行区块链网络的调整优化。
基于本申请实施例提供的基于区块链稳态指标的遗传算法辅助混沌测试实现方案,可以预先定义真实反映区块链运行状态的测试覆盖参数,这些参数作为遗传算法评价函数的执行参数,然后给异常测试场景进行编码,定义好遗传的变异率、交叉率和遗传代数后,实施混沌测试,在遗传算法的迭代下,可以快速提高区块链网络的测试完整度,精准有目的地发现系统问题,大大提高发现系统问题的效率。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的区块链网络测试方法。图9示意性地示出了本申请实施例提供的区块链网络测试装置的结构框图。如图9所示,区块链网络测试装置900主要可以包括:集合获取模块910,被配置为获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;异常测试模块920,被配置为根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;集合更新模块930,被配置为根据所述测试覆盖参数更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。
在本申请的一些实施例中,基于以上技术方案,所述集合更新模块930包括:稳态变化确定单元,被配置为根据所述测试覆盖参数确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息,所述覆盖参数变化信息用于表示所述区块链网络的测试覆盖状态的变化程度;目标编码选取单元,被配置为根据所述覆盖参数变化信息从所述编码集合中选取一个或者多个目标场景编码;编码数值调整单元,被配置为基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,以根据调整数值后的目标场景编码更新所述编码集合。
在本申请的一些实施例中,基于以上技术方案,所述稳态变化确定单元包括:测试覆盖参数获取子单元,被配置为获取所述区块链网络在进行异常测试前的测试前覆盖参数以及所述区块链网络在所述异常测试场景中进行异常测试后的测试后覆盖参数;向量距离确定子单元,被配置为获取所述测试前覆盖参数和所述测试后覆盖参数的向量距离以确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息。
在本申请的一些实施例中,基于以上技术方案,所述目标编码选取单元包括:选取概率分配子单元,被配置为根据所述覆盖参数变化信息为所述编码集合中的各个场景编码分配选取概率;目标编码选取子单元,被配置为按照所述选取概率在所述编码集合中选取一个或者多个目标场景编码。
在本申请的一些实施例中,基于以上技术方案,所述编码数值调整单元包括:编码位置选取子单元,被配置为在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;编码数值交换子单元,被配置为随机选取两个目标场景编码,按照预设的数值更新概率交换所述两个目标场景编码在所述目标编码位置上的编码数值。
在本申请的一些实施例中,基于以上技术方案,所述编码数值调整单元包括:编码位置选取子单元,被配置为在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;编码数值获取子单元,被配置为获取与所述目标编码位置上的当前编码数值相对应的更新编码数值;编码数值替换子单元,被配置为基于预设的数值更新概率将所述目标编码位置上的当前编码数值替换为所述更新编码数值。
在本申请的一些实施例中,基于以上技术方案,所述集合获取模块910包括:资源参数获取单元,被配置为获取多种类型的测试资源以及分别与每种测试资源相对应的多个候选资源参数;参数初始化单元,被配置为对每种测试资源对应的候选资源参数进行随机初始化,得到多个具有不同候选资源参数的资源组合;编码处理单元,被配置为按照预设的编码规则对所述候选资源参数进行编码处理以得到所述资源组合的场景编码;编码组合单元,被配置为将各个资源组合的场景编码组成编码集合。
在本申请的一些实施例中,基于以上技术方案,所述编码处理单元包括:测试模式获取子单元,被配置为获取区块链网络中的待测试的区块链节点的节点数量以及所述区块链网络的测试模式,所述测试模式包括向单个区块链节点施加异常测试场景的单节点测试模式以及向多个区块链节点施加异常测试场景的多节点测试模式;编码模板选取子单元,被配置为根据所述节点数量和所述测试模式,选取包括多个编码位置的编码模板;资源参数填充子单元,被配置为按照预设的编码规则将所述资源组合中的候选资源参数填充至所述编码模板中,以得到所述资源组合的场景编码。
在本申请的一些实施例中,基于以上技术方案,所述候选资源参数包括网络延迟、磁盘填充、内存负载和CPU负载中的至少一种;所述资源参数填充子单元包括:参数编号获取子单元,被配置为获取所述资源组合中的各个候选资源参数的参数编号;编号转换子单元,被配置为将所述参数编号转换为二进制编码;关系获取子单元,被配置为获取所述编码模板中的各个编码位置与不同类型的测试资源的位置对应关系;编码填充子单元,被配置为根据所述位置对应关系将所述二进制编码填充至所述编码模板的编码位置上。
在本申请的一些实施例中,基于以上技术方案,所述异常测试模块920包括:节点信息获取单元,被配置为获取区块链网络中的待测试的区块链节点的节点信息,所述节点信息包括所述区块链节点的节点标识以及所述区块链节点在所述区块链网络中的通信地址;测试请求发送单元,被配置为根据所述节点信息向所述区块链网络发送与所述场景编码相对应的异常测试请求;异常测试单元,被配置为根据所述异常测试请求对所述待测试的区块链节点进行异常测试。
在本申请的一些实施例中,基于以上技术方案,所述测试请求发送单元包括:节点分类子单元,被配置为根据所述节点信息中的节点标识对所述区块链节点进行分类处理以确定与所述场景编码相匹配的异常测试节点以及除所述异常测试节点以外的正常测试节点;请求发送子单元,被配置为根据所述节点信息中的通信地址向所述异常测试节点发送与所述场景编码相对应的异常测试请求。
在本申请的一些实施例中,基于以上技术方案,所述异常测试单元包括:基础场景创建子单元,被配置为在所述区块链网络中创建用于加载测试用例的基础测试场景;资源调整子单元,被配置为根据所述异常测试请求调整所述基础测试场景的测试资源以创建与所述异常测试请求相对应的异常测试场景;测试用例执行子单元,被配置为控制所述正常测试节点在所述基础测试场景中执行所述测试用例,并控制所述异常测试节点在所述异常测试场景中执行所述测试用例。
本申请各实施例中提供的区块链网络测试装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图10示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图10示出的电子设备的计算机系统1000仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图10所示,计算机系统1000包括中央处理器1001(Central Processing Unit,CPU),其可以根据存储在只读存储器1002(Read-Only Memory,ROM)中的程序或者从存储部分1008加载到随机访问存储器1003(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1003中,还存储有系统操作所需的各种程序和数据。中央处理器1001、在只读存储器1002以及随机访问存储器1003通过总线1004彼此相连。输入/输出接口1005(Input/Output接口,即I/O接口)也连接至总线1004。
以下部件连接至输入/输出接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至输入/输出接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理器1001执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (14)
1.一种区块链网络测试方法,其特征在于,所述方法包括:
获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;
根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;
根据所述测试覆盖参数确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息,所述覆盖参数变化信息用于表示所述区块链网络的测试覆盖状态的变化程度;
根据所述覆盖参数变化信息从所述编码集合中选取一个或者多个目标场景编码;
基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,以根据调整数值后的目标场景编码更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。
2.根据权利要求1所述的区块链网络测试方法,其特征在于,所述根据所述测试覆盖参数确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息,包括:
获取所述区块链网络在进行异常测试前的测试前覆盖参数以及所述区块链网络在所述异常测试场景中进行异常测试后的测试后覆盖参数;
获取所述测试前覆盖参数和所述测试后覆盖参数的向量距离以确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息。
3.根据权利要求1所述的区块链网络测试方法,其特征在于,所述根据所述覆盖参数变化信息从所述编码集合中选取一个或者多个目标场景编码,包括:
根据所述覆盖参数变化信息为所述编码集合中的各个场景编码分配选取概率;
按照所述选取概率在所述编码集合中选取一个或者多个目标场景编码。
4.根据权利要求1所述的区块链网络测试方法,其特征在于,所述基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,包括:
在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;
随机选取两个目标场景编码,按照预设的数值更新概率交换所述两个目标场景编码在所述目标编码位置上的编码数值。
5.根据权利要求1所述的区块链网络测试方法,其特征在于,基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,包括:
在所述目标场景编码中随机选取部分编码位置作为待调整数值的目标编码位置;
获取与所述目标编码位置上的当前编码数值相对应的更新编码数值;
基于预设的数值更新概率将所述目标编码位置上的当前编码数值替换为所述更新编码数值。
6.根据权利要求1所述的区块链网络测试方法,其特征在于,所述获取包括多个场景编码的编码集合,包括:
获取多种类型的测试资源以及分别与每种测试资源相对应的多个候选资源参数;
对每种测试资源对应的候选资源参数进行随机初始化,得到多个具有不同候选资源参数的资源组合;
按照预设的编码规则对所述候选资源参数进行编码处理以得到所述资源组合的场景编码;
将各个资源组合的场景编码组成编码集合。
7.根据权利要求6所述的区块链网络测试方法,其特征在于,所述按照预设的编码规则对所述候选资源参数进行编码处理以得到所述资源组合的场景编码,包括:
获取区块链网络中的待测试的区块链节点的节点数量以及所述区块链网络的测试模式,所述测试模式包括向单个区块链节点施加异常测试场景的单节点测试模式以及向多个区块链节点施加异常测试场景的多节点测试模式;
根据所述节点数量和所述测试模式,选取包括多个编码位置的编码模板;
按照预设的编码规则将所述资源组合中的候选资源参数填充至所述编码模板中,以得到所述资源组合的场景编码。
8.根据权利要求7所述的区块链网络测试方法,其特征在于,所述候选资源参数包括网络延迟、磁盘填充、内存负载和CPU负载中的至少一种;所述按照预设的编码规则将所述资源组合中的候选资源参数填充至所述编码模板中,包括:
获取所述资源组合中的各个候选资源参数的参数编号;
将所述参数编号转换为二进制编码;
获取所述编码模板中的各个编码位置与不同类型的测试资源的位置对应关系;
根据所述位置对应关系将所述二进制编码填充至所述编码模板的编码位置上。
9.根据权利要求1至8中任意一项所述的区块链网络测试方法,其特征在于,根据所述场景编码对区块链网络进行异常测试,包括:
获取区块链网络中的待测试的区块链节点的节点信息,所述节点信息包括所述区块链节点的节点标识以及所述区块链节点在所述区块链网络中的通信地址;
根据所述节点信息向所述区块链网络发送与所述场景编码相对应的异常测试请求;
根据所述异常测试请求对所述待测试的区块链节点进行异常测试。
10.根据权利要求9所述的区块链网络测试方法,其特征在于,所述根据所述节点信息向所述区块链网络发送与所述场景编码相对应的异常测试请求,包括:
根据所述节点信息中的节点标识对所述区块链节点进行分类处理以确定与所述场景编码相匹配的异常测试节点以及除所述异常测试节点以外的正常测试节点;
根据所述节点信息中的通信地址向所述异常测试节点发送与所述场景编码相对应的异常测试请求。
11.根据权利要求10所述的区块链网络测试方法,其特征在于,所述根据所述异常测试请求对所述待测试的区块链节点进行异常测试,包括:
在所述区块链网络中创建用于加载测试用例的基础测试场景;
根据所述异常测试请求调整所述基础测试场景的测试资源以创建与所述异常测试请求相对应的异常测试场景;
控制所述正常测试节点在所述基础测试场景中执行所述测试用例,并控制所述异常测试节点在所述异常测试场景中执行所述测试用例。
12.一种区块链网络测试装置,其特征在于,所述装置包括:
集合获取模块,被配置为获取包括多个场景编码的编码集合,所述场景编码用于表示异常测试场景中的测试资源的组合信息;
异常测试模块,被配置为根据所述场景编码对区块链网络进行异常测试,并监测所述区块链网络在所述异常测试场景下的测试覆盖参数,所述测试覆盖参数用于表示所述异常测试对于所述区块链网络的程序代码的代码覆盖程度;
集合更新模块,被配置为根据所述测试覆盖参数确定所述区块链网络在所述异常测试场景中进行异常测试后的覆盖参数变化信息,所述覆盖参数变化信息用于表示所述区块链网络的测试覆盖状态的变化程度;根据所述覆盖参数变化信息从所述编码集合中选取一个或者多个目标场景编码;基于预设的数值更新概率对所述目标场景编码中的部分编码数值进行数值调整,以根据调整数值后的目标场景编码更新所述编码集合,并根据更新后的编码集合对所述区块链网络进行异常测试。
13.一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至11中任意一项所述的区块链网络测试方法。
14.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至11中任意一项所述的区块链网络测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110041054.2A CN112699049B (zh) | 2021-01-13 | 2021-01-13 | 区块链网络测试方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110041054.2A CN112699049B (zh) | 2021-01-13 | 2021-01-13 | 区块链网络测试方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112699049A CN112699049A (zh) | 2021-04-23 |
CN112699049B true CN112699049B (zh) | 2023-10-24 |
Family
ID=75514310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110041054.2A Active CN112699049B (zh) | 2021-01-13 | 2021-01-13 | 区块链网络测试方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112699049B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113364650A (zh) * | 2021-06-17 | 2021-09-07 | 上海万向区块链股份公司 | 一种基于混沌工程的区块链测试方法及系统 |
CN113973064B (zh) * | 2021-12-24 | 2022-02-25 | 南京金宁汇科技有限公司 | 一种基于区块链的稳定性测试方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020529A (zh) * | 2012-10-31 | 2013-04-03 | 中国航天科工集团第二研究院七○六所 | 一种基于场景模型的软件漏洞分析方法 |
CN109933521A (zh) * | 2019-01-23 | 2019-06-25 | 平安科技(深圳)有限公司 | 基于bdd的自动化测试方法、装置、计算机设备及存储介质 |
-
2021
- 2021-01-13 CN CN202110041054.2A patent/CN112699049B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020529A (zh) * | 2012-10-31 | 2013-04-03 | 中国航天科工集团第二研究院七○六所 | 一种基于场景模型的软件漏洞分析方法 |
CN109933521A (zh) * | 2019-01-23 | 2019-06-25 | 平安科技(深圳)有限公司 | 基于bdd的自动化测试方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112699049A (zh) | 2021-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112291119B (zh) | 区块链网络测试方法、装置、介质及电子设备 | |
US20230289828A1 (en) | Data processing method, computer device, and readable storage medium | |
CN110705719B (zh) | 执行自动机器学习的方法和装置 | |
CN112699049B (zh) | 区块链网络测试方法、装置、介质及电子设备 | |
CN111768305A (zh) | 反洗钱识别方法及装置 | |
CN115631008B (zh) | 商品推荐方法、装置、设备及介质 | |
CN115049397A (zh) | 识别社交网络中的风险账户的方法及装置 | |
CN115759748A (zh) | 风险检测模型生成方法和装置、风险个体识别方法和装置 | |
CN115185804A (zh) | 服务器性能预测方法、系统、终端及存储介质 | |
CN114580546A (zh) | 基于联邦学习框架的工业机泵类故障预测方法及系统 | |
CN111310242B (zh) | 设备指纹生成的方法、装置、存储介质及电子设备 | |
CN116881898A (zh) | 权限变更方法、系统、装置及存储介质 | |
CN114580761B (zh) | 蒸汽量异常确定方法、装置、电子设备和可读存储介质 | |
CN112541548B (zh) | 关系网络的生成方法、装置、计算机设备及存储介质 | |
CN113630476B (zh) | 应用于计算机集群的通信方法及通信装置 | |
CN112099957B (zh) | 资源配置方法、系统、装置以及电子设备 | |
CN113285977B (zh) | 基于区块链和大数据的网络维护方法及系统 | |
CN113762972A (zh) | 数据存储控制方法及装置、电子设备、存储介质 | |
Mira et al. | Machine Learning (ML) as a Service (MLaas): Enhancing IoT with Intelligence, Adaptive Online Deep and Reinforcement Learning, Model Sharing, and Zero-knowledge Model Verification | |
CN116841505A (zh) | 指标生成方法、装置、计算机设备及存储介质 | |
CN114493850A (zh) | 基于人工智能的在线公证方法、系统及存储介质 | |
CN113064812A (zh) | 一种项目开发过程质量缺陷预测方法、装置及介质 | |
CN113052509A (zh) | 模型评估方法、模型评估装置、电子设备和存储介质 | |
CN113886780B (zh) | 客户信息校验方法、装置、介质及电子设备 | |
CN118469715B (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40042482 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |