CN114741324B - 区块链稳定性的测试方法和装置、电子设备和存储介质 - Google Patents

区块链稳定性的测试方法和装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114741324B
CN114741324B CN202210649252.1A CN202210649252A CN114741324B CN 114741324 B CN114741324 B CN 114741324B CN 202210649252 A CN202210649252 A CN 202210649252A CN 114741324 B CN114741324 B CN 114741324B
Authority
CN
China
Prior art keywords
test
tested
block chain
data
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
Application number
CN202210649252.1A
Other languages
English (en)
Other versions
CN114741324A (zh
Inventor
李志平
谢家贵
陈玉英
王佳慧
李悦
金峻宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Academy of Information and Communications Technology CAICT
Original Assignee
China Academy of Information and Communications Technology CAICT
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Academy of Information and Communications Technology CAICT filed Critical China Academy of Information and Communications Technology CAICT
Priority to CN202210649252.1A priority Critical patent/CN114741324B/zh
Publication of CN114741324A publication Critical patent/CN114741324A/zh
Application granted granted Critical
Publication of CN114741324B publication Critical patent/CN114741324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开实施例公开了一种区块链稳定性的测试方法和装置、电子设备和存储介质,其中,方法包括:生成第一测试数集和多个测试账户,确定待测试区块链的第一测试节点;在预设时长内,以各测试账户至少一次向待测试区块链的第一测试节点和第二测试节点发送正常测试请求和异常测试请求;得到测试结果数据;确定待测试区块链的稳态数据;确定待测试区块链的稳定性。由此,实现了在特定的预设测试环境信息下,对待测区块链的稳定性的测试,得到特定环境信息下的待测试区块链的稳定性,同时由于第一测试数集中包括多个正常测试数据和多个异常测试数据,可以有效的测试出待测试区块链的问题和缺陷,为后续对区块链的改进和研究提供了可靠的数据基础。

Description

区块链稳定性的测试方法和装置、电子设备和存储介质
技术领域
本公开涉及测试技术,尤其是一种区块链稳定性的测试方法和装置、电子设备和存储介质。
背景技术
“星火·链网”的底层为BIF-Core(Blockchain Infrastructure & FacilityCore,区块链基础设施和设备核心)区块链,该BIF-Core区块链的数据依赖于BID(Blockchain-based Identifier,以区块链为基础的标识符)分布式标识符。该区块链包括多个区块,该区块链具有多个共识节点和普通节点。
随着上链数据量的不断增加,这就对BIF-Core区块链的效率、容错与健壮性提出了更高的要求,目前市面上还没有针对BIF-core的稳定性测试的方法。因此,亟待一种针对BIF-core区块链稳定性的测试方法。
发明内容
本公开实施例提供一种区块链稳定性的测试方法和装置、电子设备和存储介质,以解决现有技术中没有针对BIF-core区块链稳定性的测试方法的问题。
本公开实施例的一个方面,提供了一种区块链稳定性的测试方法,包括:根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户;其中,所述第一测试数集包括多个正常测试请求和多个异常测试请求;根据预设测试环境信息,对所述待测试区块链的至少一个节点的网络环境信息配置,得到所述待测试区块链的至少一个第一测试节点,其中,所述网络环境信息包括网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种;在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;得到测试结果数据;根据所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述稳态数据表示所述待测试区块链的稳定状态;根据所述待测试区块链的稳态数据,确定所述待测试区块链的稳定性。
可选地,在本公开上述任一实施例的方法中,还包括:响应于所述待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将所述第二测试数集作为所述第一测试数集,执行所述在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;其中,所述第二测试数集包括多个正常测试请求和多个异常测试请求,所述第二测试数集中的异常测试请求的数量大于所述第一测试数集中异常测试请求的数量。
可选地,在本公开上述任一实施例的方法中,还包括:所述第二测试数集中的异常测试请求与正常测试请求的比值为所述第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
可选地,在本公开上述任一实施例的方法中,所述根据所述测试结果数据,确定所述待测试区块链的稳态数据,包括:获取所述待测试区块链测试前的特征数据;根据所述待测试区块链试前的特征数据和所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述待测试区块链的稳态数据包括平均出块时间和/或每秒事务处理量。
可选地,在本公开上述任一实施例的方法中,所述待测试区块链试前的特征数据包括:测试前区块高度、测试前处理完成任务的总量和测试前最后区块的生成时间中的一种或几种;所述测试结果数据包括:测试后区块高度、测试后处理完成任务的总量和测试中最新区块的生成时间中的一种或几种;
所述根据所述待测试区块链试前的特征数据和所述测试结果数据,确定所述待测试区块链的稳态数据,包括:根据所述测试中最新区块的生成时间、所述测试前最后区块的生成时间、所述测试前区块高度和所述测试后区块高度,确定所述平均出块时间;根据所述测试后处理完成任务的总量、所述测试前处理完成任务的总量、所述测试中最新区块的生成时间和所述测试前最后区块的生成时间,确定所述每秒事务处理量。
根据本公开实施例的另一个方面,提供了一种区块链稳定性的测试装置,包括:生成模块,用于根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户;其中,所述第一测试数集包括多个正常测试请求和多个异常测试请求;配制模块,用于根据预设测试环境信息,对所述待测试区块链的至少一个节点的网络环境信息配置,得到所述待测试区块链的至少一个第一测试节点,其中,所述网络环境信息包括网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种;测试模块,用于在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;结果获取模块,用于得到测试结果数据;第一确定模块,用于根据所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述稳态数据表示所述待测试区块链的稳定状态;第二确定模块,用于根据所述待测试区块链的稳态数据,确定所述待测试区块链的稳定性。
可选地,在本公开上述任一实施例的装置中,还包括:响应模块,用于响应于所述待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将所述第二测试数集作为所述第一测试数集,执行所述在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;其中,所述第二测试数集包括多个正常测试请求和多个异常测试请求,所述第二测试数集中的异常测试请求的数量大于所述第一测试数集中异常测试请求的数量。
可选地,在本公开上述任一实施例的装置中,还包括:所述第二测试数集中的异常测试请求与正常测试请求的比值为所述第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
根据本公开实施例的再一个方面,提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述任一所述的测试方法。
根据本公开实施例的又一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述任一所述的测试方法。
本公开实施例提供了一种区块链稳定性的测试方法和装置、电子设备和存储介质,其中,方法包括:根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户;第一测试数集包括多个正常测试请求和多个异常测试请求;根据预设测试环境信息,对待测试区块链的至少一个节点的网络环境信息配置,得到待测试区块链的至少一个第一测试节点;在预设时长内,以各测试账户至少一次向待测试区块链的各第一测试节点和各第二测试节点发送第一测试数集中的各正常测试请求和各异常测试请求;得到测试结果数据;根据测试结果数据,确定待测试区块链的稳态数据;根据待测试区块链的稳态数据,确定待测试区块链的稳定性。由此,本公开实施例中,实现了在特定的测试环境信息预设测试环境信息下,对待测区块链的稳定性的测试,得到特定预设测试环境信息下的待测试区块链的稳定性,同时由于第一测试数集中包括多个正常测试数据和多个异常测试数据,可以有效的测试出待测试区块链的问题和缺陷,为后续对区块链的改进和研究提供了可靠的数据基础。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1为本公开实施例的区块链稳定性的测试方法一个实施例的流程图;
图2为本公开实施例的区块链稳定性的测试方法另一个实施例的流程图;
图3为本公开实施例的步骤S500的流程图;
图4为本公开实施例的步骤S300的流程图;
图5为本公开实施例区块链稳定性的测试装置一个实施例的结构示意图;
图6为本公开电子设备一个应用实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
图1示出本公开实施例中区块链稳定性的测试方法的流程示意图。本实施例可应用在电子设备上,如图1所示,本实施例的区块链稳定性的测试方法包括如下步骤:
步骤100,根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户。
其中,该第一测试数集包括多个正常测试请求和多个异常测试请求。
待测试区块链包括多个区块,待测试区块链具有多个节点,多个节点包括:多个共识节点和多个普通节点,普通节点用于交易处理、交易查询、交易数据存储等,共识节点除了用于完成普通节点的交易处理、交易查询、交易数据存储等以外,还用于达成共识以完成待测试区块链的账本更新。
根据待测试区块链的数据生成规则生成多个正常测试请求和多个异常测试请求,由多个正常测试请求和多个异常测试请求组成第一测试数集。根据待测试区块链的数据生成规则生成的正常测试请求可以为交易请求、查询交易请求等;异常测试请求可以为缺少相关字段的错误的请求或是相关参数错误的请求,例如,异常测试请求可以为签名权限不够、交易类型错误、交易缺失操作、nonce错误、input参数、operation里缺少字段、多余字段、字段值错误、字段名错误等的请求。可以采用shell脚本、nodejs脚本或jmeter脚本同时创建多个正常测试请求和多个异常测试请求。
测试账户用于发送第一测试数集中的正常测试请求和异常测试请求。第一测试数集中的正常测请求的数量与异常测试请求的数量之和大于或等于测试账户的数量。每一测试账户可以随机选取一个正常测试请求或一个异常测试请求,并发送选取的正常测试请求或异常测试请求。
可以根据测试需要的并发量预先创建并发量对应数量的多个初始账户,对各初始账户进行初始化上链处理,以使待测试区块链可以接收和发送数据给多个初始账户,将经过初始化上链处理后的初始账户作为测试账户,每一测试账户可以包括:ID(Identity,身份)标识、公钥和私钥等。
示例性的,待测试区块链可以为BIF-core(Blockchain Infrastructure &Facility Core,区块链基础设施和设备核心)区块链, BIF-Core区块链的数据依赖于BID(Blockchain-based Identifier,区块链基础标识符)分布式标识符。
BIF-Core区块链按层次结构可以分为数据层、网络层、共识层、激励层、合约层和应用层。数据层、网络层和共识层三者构成了区块链层级的底层基础,也是区块链必不可少的三个元素,缺少任何一个都无法称之为真正的区块链技术。
数据层(Data Layer)为区块链四大核心技术中的数据结构,即“区块+链”的结构;从还没有记录交易信息的创世区块起,直到当前仍一直在新添加的区块,构成的链式结构中包含了哈希值、随机数、认证交易的时间戳、交易信息数据、公钥和私钥等,是整个区块链技术中最底层的数据结构。网络层(Network Layer)为区块链四大核心技术中的分布式存储,主要是点对点机制、数据传播机制和数据验证机制;分布式算法以及加密签名等都在网络层中实现,区块链上的各个节点通过这种方式来保持联系,共同维护整个区块链账本,例如闪电网络、雷电网络等第二层支付协议。共识层(Consensus Layer)为区块链四大核心技术中的共识机制,主要包括共识算法机制,目前支持PBFT(Practical Byzantine FaultTolerance,能够容忍拜占庭错误)算法、VBFT(Vrifiable Byzantine Fault Tolerant,可验证拜占庭容错)共识机制。激励层(Actuator Layer)包括激励机制和分配制度。合约层(Contract Layer)与智能合约有关;把代码写到合约里,就可以自定义约束条件,不需要第三方信任背书,到时间立即实时操作;当然除了智能合约,是区块链作为信任机器的重要层级,还有一些别的脚本代码、侧链应用等。应用层(Application Layer)为应用场景,类似于手机上的各种 APP,即区块链的各种应用场景,这个层面包括未来区块链应用落地的各个方面。
可以离线批量创建多个初始账户,例如,可以离线批量创建1000个初始账户,并保存成文件source_account_1000.txt,利用待测试区块链的创世账户对多个初始账户进行初始化上链处理,以使待测试区块链的节点可以接收和发送数据给该多个初始账户,将经创世账户进行初始化上链处理后的多个初始账户作为测试账户,各测试账户的ID标识为BID标识。其中,创世账户用于对初始账户初始化上链处理,创世账户的ID标识为BID标识,BID标识是基于W3C的DID(Decentralized Identifier,分布式标识)标准开发的分布式标识, BID标识支持39-57位变长编码方式,可以有效适应各种业务场景,兼容各类设备。例如,BID标识的结构形式可以为:
id:bid:byol:zf2LL97siENHaNYpTW1MA5RBbpPM;
其中,id:bid表示前缀,byol表示共识码(即AC号(accession number)),z表示加密类型,f表示编码类型,2LL97siENHaNYpTW1MA5RBbpPM表示后缀。共识码表示该BID标识所标识的账户所属区块链。
步骤200,根据预设测试环境信息,对待测试区块链的至少一个节点的网络环境信息配置,得到待测试区块链的至少一个第一测试节点。
其中,该网络环境信息包括:网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种。
预设测试环境信息包括:节点的网络环境信息、测试资源信息等。测试资源可以包括CPU、内存、磁盘等。可以根据预设测试环境信息,将待测试区块链测的至少一个节点的网络环境信息设置为该预设测试环境信息中的网络环境信息。将网络环境信息设置为预设测试环境信息中的网络环境信息的待测试区块链的节点称为待测试区块的第一测试节点。
示例性的,预设测试环境信息可以包括:11个节点的网络为弱网设置,具体为:3个节点的丢包率为10%,2个节点的延时为1s,2个节点的数据包损坏率为10%,2个节点的数据包乱序率为10%,2个节点的数据包重复率为10%;可以从待测试区块链中随机选取11节点,将该11个节点的网络环境信息分别配制为预设测试环境信息,其中,选择的待测试区块链上的节点可以为共识节点。
步骤300,在预设时长内,以多个测试账户中的各测试账户至少一次向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求。
其中,预设时长可以根据测试实际需求设置,例如,预设时长可以设置为7天。在待测试区块中选取至少一个节点用于测试,选取的用于测试的节点可以为共识节点。将选取的用于测试的,且未按照预设测试环境信息中的网络环境信息配制的待测试区块链的节点称为待测试区块链的第二测试节点。其中,待测试区块链的第一测试节点和第二测试节点为不同的节点。
各测试账户可以向各第一测试节点和各第二测试节点发送正常测试请求和异常测试请求。可以根据实际需求预先设置向各第一测试节点和各第二测试节点发送正常测试请求或异常测试请求的测试账户的个数,同时也可以预先设置各第一测试节点和各第二测试节点每次接收正常测试请求和异常测试请求的数量。
步骤400,得到测试结果数据。
其中,在预设时长后,即对待测试区块链完成测试后,获取待测试区块链的测试结果数据。测试结果数据可以包括:测试后区块高度、测试后处理完成任务的总量、测试中最新区块的生成时间等。
步骤500,根据测试结果数据,确定待测试区块链的稳态数据。
其中,稳态数据表示待测试区块链的稳定状态。
稳态数据可以包括待测试区块链的平均出块时间(Time,T),每秒事物处理量(Transaction Per Second,TPS)、每秒查询率(QueriesPer Second,QPS)等。可以根据待测试区块链的测试结果数据,计算待测试区块链的稳态数据。
稳态数据还可以包括待测试区块链对硬件资源的资源消耗数据,例如,资源消耗数据可以包括:程序占用CPU使用率、内存占用率,程序占用I/O率等。其中,可以top指令查看CPU的参数,如,us(用户态使用的CPU时间百分比)、sy(系统态使用的CPU时间百分比)、wa(CPU等待IO完成时间百分比)等,根据CPU的参数确定程序占用CPU使用率,可以通过iostat命令查看I/O(Input/Output,输入/输出)的参数,如每秒读取的扇区数(rsec/s)、每秒写入的扇区数(wsec/s)等,根据I/O的参数确定程序占用I/O率。可以通过top指令查看内存占用率。
步骤600,根据待测试区块链的稳态数据,确定待测试区块链的稳定性。
其中,可以通过待测试区块链的稳态数据,如平均出块时间、TPS、QPS等,确定待测试区块链的稳定性。示例性的,可以根据实际需求设置稳定性等级,每一稳定性等级对应的至少一个稳态数据,将待测试区块链的稳态数据与预设的各稳定性等级对应的稳态数据匹配,进而确定待测试区块链的稳定性。
本公开实施例中,实现了在特定的预设测试环境信息下,对待测区块链的稳定性的测试,得到特定预设测试环境信息下的待测试区块链的稳定性,同时由于第一测试数集中包括多个正常测试数据和多个异常测试数据,可以有效的测试出待测试区块链的问题和缺陷,为后续对区块链的改进和研究提供了可靠的数据基础。
示例性的,当对待测区块链完成测试时,还可以获取表一中所包括的稳态数据,根据表一中的稳态数据,确定待测试区块链的稳定性。
表一
Figure 706565DEST_PATH_IMAGE001
在一个可选实施例中,如图2所示,区块链稳定性的测试方法还包括:
步骤700,将待测试区块链的稳态数据与预设稳态数据比较。
其中,可以根据实际需求预先设置稳态数据作为预设稳态数据。
步骤800,响应于待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将第二测试数集作为第一测试数集,执行在预设时长内,以多个测试账户中的各测试账户至少一次向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作。
其中,可以根据待测区块链的数据生成规则预先创建多个第二测试数集,每一第二测试数集包括多个正常测试请求和多个异常测试请求。各第二测试数集中的异常测试请求的数量均大于第一测试数集中异常测试请求的数量。
各第二测试数集中正常测试请求和异常测试请求的总量可以与第一测试数集中正常测试请求和异常测试请求总量相等。第一测试数集中的正常测请求的数量与异常测试请求的数量之和可以等于测试账户的数量。多个第二测试数集中异常测试请求和正常测试请求的总量可以相等。多个第二测试数集中异常测试请求的数量可以按照依次增加的方式设置。可以按照各第二测试数集中异常测试请求的数量对各第二测试数集进行排序,当待测试区块链的稳态数据大于或等于预设稳态数据时,可以根据排序顺序获取第二测试数集,执行步骤300以及步骤300之后的步骤。
示例性的,根据待测区块链的数据生成规则创建3个第二测试数集,分别为第二测试数集a、第二测试数集b和第二测试数集c,第二测试数集a中包括5个异常测试请求和15个正常测试请求,第二测试数集b中包括10个异常测试请求和10个正常测试请求,第三测试数集c中包括15个异常测试请求和5个正常测试请求;按照各第二测试数集中异常测试请求的数量由小至大对各第二测试数集进行排序,则第二测试数集a排序第一,第二测试数集b排序第二,第二测试数集c排序第三。当待测试区块链的稳态数据大于或等于预设稳态数据时,选取第二测试数集a作为第一测试数集。
需要说明的,可以根据每一由第二测试数集作为第一测试数集得到的稳态数据,确定一待测试区块链的稳定性。
本公开实施例中,通过设置第二测试数集的异常测试请求的数量大于第一测试数集异常测试请求的数量,实现自动获取在不同数量的异常测试请求下,待测试区块链的稳定性,不仅获取了不同数量异常测试请求下待测试区块链丰富的稳定性数据,可以有效的暴露出待测试区块链的问题,同时为后续对区块链的改进和研究提供了可靠的数据基础,而且还可以得到待测试区块链处理异常测试请求的极限,进一步为后续对区块链的改进和研究提供了可靠的数据基础。
在一个可选实施例中,第二测试数集中的异常测试请求与正常测试请求的比值为第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
其中,预设倍数可以根据实际需求设置。多个第二测试数集中异常测试请求可以按照依次增加、以及异常测试请求与正常测试请求的比值的倍数增加的方式设置。
示例性的,第一测试请求数集中异常测试请求与正常测试请求的比值为1,预设倍数为2。根据待测区块链的数据生成规则创建3个第二测试数集,分别为第二测试数集e、第二测试数集f和第二测试数集g,第二测试数集e中异常测试请求和正常测试请求的比值为2,第二测试数集b中异常测试请求和正常测试请求的比值为4,第三测试数集g中异常测试请求和正常测试请求的比值为8,第二测试数集e、第二测试数集f和第二测试数集g中的正常测试请求和异常测试请求的总数量相等;按照各第二测试数集中异常测试请求与正常测试请求的比值由小至大对各第二测试数集进行排序,则第二测试数集e排序第一,第二测试数集f排序第二,第二测试数集g排序第三。当待测试区块链的稳态数据大于或等于预设稳态数据时,选取第二测试数集e作为第一测试数集。
在一个可选实施例中,如图3所示,步骤500还可以包括:
步骤S510,获取待测试区块链测试前的特征数据。
其中,在对待测试区块链测试前,获取待测试区块链测试前的特征数据。特征数据用于表征待测试区块链的性能,例如,区块高度、处理完成任务的总量、区块平均生成时间等。可以通过查询待测试区块链的性能参数得到待测试区块链测试前的特征数据;例如,待测试区块链试前的特征数据可以包括:测试前区块高度、测试前处理完成任务的总量、测试前最后区块的生成时间、测试开始时间等。
步骤S520,根据待测试区块链试前的特征数据和测试结果数据,确定待测试区块链的稳态数据。
其中,该待测试区块链的稳态数据包括平均出块时间和/或每秒事务处理量。
在一个可选实施例中,待测试区块链试前的特征数据包括:测试前区块高度、测试前处理完成任务的总量和测试前最后区块的生成时间中的一种或几种;其中,测试前区块高度可以为测试前待测试区块链的区块高度;测试前处理完成任务的总量可以为测试前待测试区块链处理完成任务的总量;测试前最后区块的生成时间可以为测试前待测试区块链的最后区块生成时的时间戳;
测试结果数据包括:测试后区块高度、测试后处理完成任务的总量和测试中最新区块的生成时间中的一种或几种;其中,测试后区块高度可以为测试后待测试区块链的区块高度;测试后处理完成任务的总量可以为测试结束后待测试区块链处理完成任务的总量;测试中最新区块的生成时间可以为测试过程中最后一个区块生成时的时间戳;
步骤S520还可以包括:
根据测试中最新区块的生成时间、测试前最后区块的生成时间、测试前区块高度和测试后区块高度,确定平均出块时间。
其中,可以根据公式(1)确定平均出块时间。
T= (et-st)/(eh-sh)…(1);
其中,T为平均出块时间,et为测试中最新区块的生成时间,st为测试前最后区块的生成时间,eh为测试后区块高度,sh为测试前区块高度。
根据测试后处理完成任务的总量、测试前处理完成任务的总量、测试中最新区块的生成时间和测试前最后区块的生成时间,确定每秒事务处理量。
其中,可以根据公式(2)确定每秒事务处理量。
TPS=(etc-stc)/(et-st)…(2);
其中,TPS为每秒事务处理量,etc为测试后处理完成任务的总量,stc为测试前处理完成任务的总量,et为测试中最新区块的生成时间,st为测试前最后区块的生成时间。
在一个可选实施例中,如图4所示,步骤300还可包括:
步骤S310,在预设时长内,以多个测试账户中的各测试账户向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;
步骤S320,响应于待测试区块链反馈的断言数据表征完成状态,执行向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;响应于待测试区块链反馈的断言数据表征缓存池满载状态,向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送预设数据;响应于待测试区块链反馈的断言数据表征异常状态,停止执行向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作。
其中,预设数据可以为空数据,例如,可以为空交易数据,即交易数额为0的交易数据。
在预设时长内,各测试账户将正常测试请求和异常测试请求发送给待测试区块链的至少一个第一测试节点和至少一个第二测试节点,待测试区块链反馈断言数据;当反馈的断言数据表征完成状态,表示待测试区块链以对正常测试请求或异常测试请求处理完成,此时各测试账户继续向至少一个第一测试节点和至少一个第二测试节点发送正常测试请求和异常测试请求;当反馈的断言数据表征缓存池满载状态,表示待测试区块链的缓存池已经满载,各测试账户向至少一个第一测试节点和至少一个第二测试节点发送预设数据,直至待测试区块链反馈的断言数据表征完成状态后,各测试账户向至少一个第一测试节点和至少一个第二测试节点发送正常测试请求和异常测试请求。缓存池用于缓存正常测试数据、异常测试数据和预设数据。
异常状态表征待测试区块为异常状态。当反馈的断言数据表征异常状态,即表征待测试区块链异常,例如,无法连接待测试区块链、待测试区块链中有区块处于工作异常状态等,此时,各测试账户停止向待测试区块链的第一测试节点和第二测试节点发送正常测试数据、异常测试数据和预设数据。同时,当待测试区块链反馈的断言数据为异常状态时还可以发出报警信息提示待测试区块链异常。示例性的,可以选择多个设置在第一测试节点和第二测试节点上的账户作为接收账户,接收账户用于接收测试账户发送的正常测试请求、异常测试请求和预设数据,其中,测试账户和接收账户为不同账户。可以通过待测区块链反馈的error code确定断言数据,例如,当反馈的error code为0时,此时断言数据表征完成状态,当反馈的error code为160时,此时断言数据表征缓存池满载状态,当反馈的error code为非0和160的其他数字时,确定断言数据表征异常状态。
本公开实施例中,根据上一次发送的正常测试请、异常测试请求或预设数据后,待测试区块链反馈的断言数据,确定该次发送的内容,实现了根据待测试区块链的状态,及时调整发送给待测试区块链的数据,提高了对待测试区块链的稳定性测试的准确性,避免了在待测试区块链的缓存池满载时,继续给待测试区块链发送数据,导致测试结果偏差较大的情况。
在一个可选实施例中,响应于待测试区块链反馈的断言数据表征完成状态,增加各测试账户的nonce值;响应于待测试区块链反馈的断言数据表征缓存池满载状态,不增加所述各测试账户的nonce值。
其中,nonce值用于表示测试账户的账户属性,主要用于表示和记录测试账户发送请求的总数量,每一测试账户具有一个nonce值,测试账户每向待测试区块链的第一测试节点或第二测试节点发送一个正常测试请求或异常测试请求且反馈的断言数据表征完成状态时,该测试账户的nonce值加一,每个测试账户的nonce值必需连续。在对待测区块链测试前,查询测试账户的nonce值,例如,可以通过各测试账户的地址查询各测试账户的nonce值,nonce值可以以key-value形式存储到全局变量中(key 是测试账户的地址,value是nonce值)。可以创建一个nonce计数器用于在测试过程中,对各测试账户的nonce值进行计数处理,例如,在测试过程中,当测试账户向待测试区块链的第一测试节点或第二测试节点发送正常测试请求或异常测试请求时,待测试区块链反馈的断言数据表征完成状态,此时nonce计数器给测试账户的nonce值加一。
当待测试区块链反馈的断言数据表征完成状态,此时表示待测试区块链处理完成测试账户发送的正常测试请求或异常测试请求,此时增加测试账户的nonce值,例如,可以每接收到一次反馈的断言数据表征完成状态后,各测试账户的nonce值加一;当待测试区块链反馈的断言数据表征缓存池满载状态,表示待测试区块链的缓存池已满,此时不增加测试账户的nonce值,例如,可以在接收到反馈的断言数据表征缓存池满载状态后,各测试账户的nonce值加零。
本公开实施例中,在反馈的断言数据表征完成状态时,增加测试账户的nonce值,有效的保证测试账户的nonce值的准确性,为后续通过nonce值统计待测试区块链处理完成的请求数量以及其他待测试区块链的其他性能数据提供了准确数据。
在一个可选实施例中,在对待测试区块链测试前,还可以预先配置待测试区块链的测试环境。
示例性的,可以从待测试区块链上选取21个节点作为第一测试节点和第二测试节点,其中,21个节点中包括16个共识节点和5个普通节点,第一测试节点的数量为11个,且第一测试节点均为共识节点。可以采用双物理机模式进行测试,在两个物理机上分别设置21台测试虚拟机和1个虚拟试压机,虚拟试压机用于向待测试区块链的第一测试节点和第二测试节点发送正常测试请求、异常测试请求和预设数据。每一虚拟机上设置一个第一测试节点或一个第二测试节点。将11个第一测试节点的网络环境信息配置成预设测试环境信息中的网络环境信息。设置试账户的循环次数,该循环次数为测试账户可以发送正常测试请求、异常测试请求和预设数据的总量。也可以对断言数据和/或哈希值的反馈时长进行超时设置,当待测试区块链的反馈断言数据和/或哈希值的反馈时长超过超时设置中的设置时长时,反馈报错。
图5示出本公开实施例中区块链稳定性的测试装置的框图。如图5所示,该实施例区块链稳定性的测试装置包括:
生成模块900,用于根据待测试区块链的数据生成规则,生成第一测试数集 和多个测试账户;其中,所述第一测试数集包括多个正常测试请求和多个异常测试请求;
配置模块910,用于根据预设测试环境信息,对所述待测试区块链的至少一个节点的网络环境信息配置,得到所述待测试区块链的至少一个第一测试节点,其中,所述网络环境信息包括网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种;
测试模块920,用于在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;
结果获取模块930,用于得到测试结果数据;
第一确定模块940,用于根据所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述稳态数据表示所述待测试区块链的稳定状态;
第二确定模块950,用于根据所述待测试区块链的稳态数据,确定所述待测试区块链的稳定性。
可选地,测试方装置还包括:
响应模块,用于响应于所述待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将所述第二测试数集作为所述第一测试数集,执行所述在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;
其中,所述第二测试数集包括多个正常测试请求和多个异常测试请求,所述第二测试数集中的异常测试请求的数量大于所述第一测试数集中异常测试请求的数量。
可选地,测试方装置还包括:所述第二测试数集中的异常测试请求与正常测试请求的比值为所述第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
可选地,第一确定模块940还包括:
获取子模块(图中未示出),用于获取所述待测试区块链测试前的特征数据;
确定子模块(图中未示出),用于根据所述待测试区块链试前的特征数据和所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述待测试区块链的稳态数据包括平均出块时间和/或每秒事务处理量。
可选地,所述的测试装置中,所述待测试区块链试前的特征数据包括:测试前区块高度 、测试前处理完成任务的总量 和测试前最后区块的生成时间 中的一种或几种;
所述测试结果数据包括:测试后区块高度 、测试后处理完成任务的总量和测试中最新区块的生成时间中的一种或几种;
所述确定子模块还用于:根据所述测试中最新区块的生成时间、所述测试前最后区块的生成时间、所述测试前区块高度和所述测试后区块高度,确定所述平均出块时间;
根据所述测试后处理完成任务的总量、所述测试前处理完成任务的总量、所述测试中最新区块的生成时间和所述测试前最后区块的生成时间,确定所述每秒事务处理量。
另外,本公开实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的区块链稳定性的测试方法。
如图6所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的区块链稳定性的测试方法以及/或者其他期望的功能。
在一个示例中,电子设备还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入设备还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图6中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的区块链稳定性的测试方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的区块链稳定性的测试方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种区块链稳定性的测试方法,其特征在于,包括:
根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户;其中,所述第一测试数集包括多个正常测试请求和多个异常测试请求,所述异常测试请求为缺少字段或参数的错误请求;
根据预设测试环境信息,对所述待测试区块链的至少一个节点的网络环境信息配置,得到所述待测试区块链的至少一个第一测试节点,其中,所述网络环境信息包括网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种;
在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;响应于待测试区块链反馈的断言数据表征完成状态,执行向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;响应于待测试区块链反馈的断言数据表征缓存池满载状态,向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送预设数据;其中,将网络环境信息设置为预设测试环境信息中的网络环境信息的待测试区块链的节点称为待测试区块的第一测试节点;将选取的用于测试的,且未按照预设测试环境信息中的网络环境信息配制的待测试区块链的节点称为待测试区块链的第二测试节点;
得到测试结果数据;
根据所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述稳态数据表示所述待测试区块链的稳定状态;
根据所述待测试区块链的稳态数据,确定所述待测试区块链的稳定性。
2.根据权利要求1所述的测试方法,其特征在于,还包括:
响应于所述待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将所述第二测试数集作为所述第一测试数集,执行所述在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;
其中,所述第二测试数集包括多个正常测试请求和多个异常测试请求,所述第二测试数集中的异常测试请求的数量大于所述第一测试数集中异常测试请求的数量。
3.根据权利要求2所述的测试方法,其特征在于,还包括:
所述第二测试数集中的异常测试请求与正常测试请求的比值为所述第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
4.根据权利要求1-3中任一项所述的测试方法,其特征在于,所述根据所述测试结果数据,确定所述待测试区块链的稳态数据,包括:
获取所述待测试区块链测试前的特征数据;
根据所述待测试区块链试前的特征数据和所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述待测试区块链的稳态数据包括平均出块时间和/或每秒事务处理量。
5.根据权利要求4所述的测试方法,其特征在于,所述待测试区块链试前的特征数据包括:测试前区块高度、测试前处理完成任务的总量和测试前最后区块的生成时间中的一种或几种;
所述测试结果数据包括:测试后区块高度、测试后处理完成任务的总量和测试中最新区块的生成时间中的一种或几种;
所述根据所述待测试区块链试前的特征数据和所述测试结果数据,确定所述待测试区块链的稳态数据,包括:
根据所述测试中最新区块的生成时间、所述测试前最后区块的生成时间、所述测试前区块高度和所述测试后区块高度,确定所述平均出块时间;
根据所述测试后处理完成任务的总量、所述测试前处理完成任务的总量、所述测试中最新区块的生成时间和所述测试前最后区块的生成时间,确定所述每秒事务处理量。
6.一种区块链稳定性的测试装置,其特征在于,包括:
生成模块,用于根据待测试区块链的数据生成规则,生成第一测试数集和多个测试账户;其中,所述第一测试数集包括多个正常测试请求和多个异常测试请求,所述异常测试请求为缺少字段或参数的错误请求;
配制模块,用于根据预设测试环境信息,对所述待测试区块链的至少一个节点的网络环境信息配置,得到所述待测试区块链的至少一个第一测试节点,其中,所述网络环境信息包括网络的丢包率、数据包重复率、数据包乱序率、数据包损坏率和延迟中的一种或几种;
测试模块,用于在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求;响应于待测试区块链反馈的断言数据表征完成状态,执行向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;响应于待测试区块链反馈的断言数据表征缓存池满载状态,向待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送预设数据;其中,将网络环境信息设置为预设测试环境信息中的网络环境信息的待测试区块链的节点称为待测试区块的第一测试节点;将选取的用于测试的,且未按照预设测试环境信息中的网络环境信息配制的待测试区块链的节点称为待测试区块链的第二测试节点;
结果获取模块,用于得到测试结果数据;
第一确定模块,用于根据所述测试结果数据,确定所述待测试区块链的稳态数据,其中,所述稳态数据表示所述待测试区块链的稳定状态;
第二确定模块,用于根据所述待测试区块链的稳态数据,确定所述待测试区块链的稳定性。
7.根据权利要求6所述的测试装置,其特征在于,还包括:
响应模块,用于响应于所述待测试区块链的稳态数据大于或等于预设稳态数据,获取第二测试数集,将所述第二测试数集作为所述第一测试数集,执行所述在预设时长内,以多个测试账户中的各测试账户至少一次向所述待测试区块链的至少一个第一测试节点和至少一个第二测试节点发送所述第一测试数集中的至少一个正常测试请求和至少一个异常测试请求的操作;
其中,所述第二测试数集包括多个正常测试请求和多个异常测试请求,所述第二测试数集中的异常测试请求的数量大于所述第一测试数集中异常测试请求的数量。
8.根据权利要求7所述的测试装置,其特征在于,还包括:
所述第二测试数集中的异常测试请求与正常测试请求的比值为所述第一测试数集中的异常测试请求与正常测试请求的比值的预设倍数。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述权利要求1-5任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-5任一所述的方法。
CN202210649252.1A 2022-06-10 2022-06-10 区块链稳定性的测试方法和装置、电子设备和存储介质 Active CN114741324B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210649252.1A CN114741324B (zh) 2022-06-10 2022-06-10 区块链稳定性的测试方法和装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210649252.1A CN114741324B (zh) 2022-06-10 2022-06-10 区块链稳定性的测试方法和装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN114741324A CN114741324A (zh) 2022-07-12
CN114741324B true CN114741324B (zh) 2022-09-02

Family

ID=82287805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210649252.1A Active CN114741324B (zh) 2022-06-10 2022-06-10 区块链稳定性的测试方法和装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114741324B (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109617759A (zh) * 2018-12-04 2019-04-12 中钞信用卡产业发展有限公司杭州区块链技术研究院 区块链系统稳定性测试方法、装置、设备及存储介质
CN110097467B (zh) * 2019-05-05 2021-04-13 华中科技大学 一种针对智能合约安全性和稳定性的侧链测试系统和方法
CN111752850B (zh) * 2020-07-13 2021-08-20 腾讯科技(深圳)有限公司 区块链系统的测试方法及相关设备
CN112291119B (zh) * 2020-12-28 2021-04-06 腾讯科技(深圳)有限公司 区块链网络测试方法、装置、介质及电子设备
CN113282501A (zh) * 2021-06-03 2021-08-20 网易(杭州)网络有限公司 区块链测试的方法、装置和电子设备
CN114416522A (zh) * 2021-12-13 2022-04-29 杭州趣链科技有限公司 区块链系统测试方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114741324A (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
CN109949111B (zh) 电子票据标识分配方法、电子票据生成方法、装置及系统
CN112073269B (zh) 区块链网络测试方法、装置、服务器及存储介质
CN109800160B (zh) 机器学习系统中的集群服务器故障测试方法和相关装置
CN107547595B (zh) 云资源调度系统、方法及装置
CN112101942B (zh) 基于区块链的交易请求处理方法、系统、装置及设备
WO2020199713A1 (zh) 数据验证方法、系统、装置及设备
WO2022095518A1 (zh) 接口自动化测试方法、装置、计算机设备及存储介质
CN110995825A (zh) 一种智能合约的发布方法、智能节点设备及存储介质
CN111339551B (zh) 数据的验证方法及相关装置、设备
CN109858285B (zh) 区块链数据的处理方法、装置、设备和介质
CN114268638A (zh) 区块链平台通道管理方法、装置、计算机设备和存储介质
CN115589298B (zh) 区块链的信息验证方法、装置和系统、设备、介质
CN113129002A (zh) 一种数据处理方法以及设备
CN114741324B (zh) 区块链稳定性的测试方法和装置、电子设备和存储介质
EP3349416B1 (en) Relationship chain processing method and system, and storage medium
CN114741323B (zh) 区块链性能的测试方法和装置、电子设备和存储介质
CN114782045B (zh) 跨链非事务性写入方法和装置、存储介质、电子设备
CN115098528B (zh) 业务处理方法、装置、电子设备及计算机可读存储介质
CN113869989B (zh) 一种信息处理方法及装置
CN116244062A (zh) 一种数据处理方法、装置、电子设备和存储介质
CN115643158A (zh) 设备集群修复方法、装置、设备和存储介质
CN112671923B (zh) 一种统一接口服务通讯调度方法及装置
CN106845926A (zh) 一种第三方支付监管系统分布式数据流处理方法及系统
CN113609026A (zh) 对服务器进行压力测试的方法和装置
CN114595279B (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
GR01 Patent grant
GR01 Patent grant