CN113726613B - 面向Fabric区块链的性能测试方法 - Google Patents
面向Fabric区块链的性能测试方法 Download PDFInfo
- Publication number
- CN113726613B CN113726613B CN202111046056.7A CN202111046056A CN113726613B CN 113726613 B CN113726613 B CN 113726613B CN 202111046056 A CN202111046056 A CN 202111046056A CN 113726613 B CN113726613 B CN 113726613B
- Authority
- CN
- China
- Prior art keywords
- fabric
- chain
- performance
- transaction
- test
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/06—Generation of reports
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/14—Arrangements for monitoring or testing data switching networks using software, i.e. software packages
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Security & Cryptography (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种面向Fabric区块链的性能测试方法,在超级账本测试链部署流程中输入Fabric网络配置参数配置测试链,读取并部署链码到Fabric网络中;链码被编译并直接在Docker环境中的本机上运行,设计一些类似于排序的智能合约进行测试,用于监控Fabric的计算性能;部署一些IO密集型链码,执行一些关键值元组的读写操作,用于监控Faric的输入输出性能;通过部署面向共识的Fabric链码用于监控Fabric共识机制的性能。通过模拟大量系统用户对Fabric区块链系统完成性能测试,部署并度量三种不同的链码性能后,最终自动生成面向Fabric区块链系统的性能测试报告。
Description
技术领域
本发明属于计算机软件测试领域,特别是面向超级账本HyperledgerFabric区块链系统的性能测试。
背景技术
区块链自从被提出之后,已受到越来越多研究机构和研究人员的关注,其发展可分为1.0、2.0和3.0共三个阶段:区块链1.0是以比特币Bitcoin为代表的加密货币,它的出现使去中心化交易成为可能;区块链2.0是以太坊Ethereum区块链平台为代表,以太坊修复了比特币项目的缺陷,同时支持通用智能合约;区块链3.0是以超级账本HyperledgerFabric(简称Fabric)区块链平台为代表,它加速了更多区块链商业项目的落地和资本市场的关注。超级账本是Linux基金会牵头发起的开源项目,共包括10大子项目,其中IBM贡献的Fabric项目最受关注。它将区块链技术引入到联盟账本的应用场景,成员节点在得到授权后方可加入。链码是Fabric中的智能合约,它以代码的形式将复杂的业务逻辑固定在Fabric系统中。当满足特定条件时,链码会被执行。因此,将智能合约与区块链结合,可以使区块链技术应用场景更加广泛。
共识是指要让全网大多数节点(至少51%)都认为数据真是可靠的过程。区块链网络中每个节点必须维护完全相同的账本数据。由于各个节点产生数据的时间不同、获取数据的来源未知,节点故障、网络拥塞带来的数据异常难以预测,且存在节点故意广播错误数据的可能性。因此,如何在不可信的环境下实现账本数据的全网统一是区块链共识层需要解决的关键问题。交易到了区块链之后,首先经过排序,随后以区块为单位一批一批数据的进行共识确认,该阶段比较漫长。在更坏的情况下,交易会因队列拥堵而没有被打包进区块中,导致确认时延更长。因此,区块链的共识性能成为当前区块链研究热点。为了准确的评估超级账本区块链在不同配置下的性能表现情况,需要针对特定配置,模拟真实生产情况对区块链系统发起性能测试,监控响应性能指标。因此,提出一种面向Fabric区块链的性能测试方法。
发明内容
本发明提供一种面向Fabric区块链的性能测试方法,通过部署超级账本测试链,设计三种不同的链码分别面向区块链计算性能、输入输出性能和共识性能进行度量,最终将测量结果统一保存,输出为整体测试报告。
为了解决以上技术问题,本申请采用的技术方案是:一种面向Fabric区块链的性能测试方法,其特征是包括以下步骤:步骤A,Fabric测试链部署,在超级账本测试链部署流程中输入Fabric网络配置参数配置测试链,读取并部署链码到Fabric网络中;步骤B,面向计算的Fabric链码性能度量,在Fabric区块链中,链码被编译并直接在Docker环境中的本机上运行,设计一些排序的智能合约进行测试,用于监控Fabric区块链的计算性能;根据Fabric区块链计算性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向计算的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数;步骤C,面向输入输出的Fabric链码性能度量,在Fabric区块链中,部署一些IO密集型链码,执行一些关键值元组的读写操作,用于监控Fabric区块链的输入输出性能;根据Fabric区块链输入输出性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向输入输出的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数;步骤D,面向共识的Fabric链码性能度量,通过部署面向共识的Fabric链码用于监控Fabric区块链共识机制的性能;根据Fabric区块链共识性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向共识的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数。
优选地,步骤A中,首先根据Fabric网络配置参数配置Fabric测试链,之后读取Fabric网络配置参数中的链码配置并完成面向计算的Fabric链码、面向输入输出的Fabric链码及面向共识的Fabric链码的部署。
与现有技术相比,本申请取得了以下有益效果:通过模拟大量系统用户对Fabric区块链系统完成性能测试,部署并度量三种不同的链码性能后,最终自动生成面向Fabric区块链系统的性能测试报告,共识确认时延短,链码被编译并直接在Docker环境中的本机机器上运行,没有执行高级EVM字节代码相关的开销,Hyperledger在速度和内存使用方面更加高效,能够在降低测试人员的测试门槛,提高测试效率的基础上,适用多种区块链平台。
附图说明
图1为面向Fabric区块链的性能测试方法实施的流程图。
图2为图1中Fabric测试链部署的流程图。
图3为图1中面向计算的性能指标度量的流程图。
图4为图1中面向输入输出的性能指标度量的流程图。
图5为图1中面向共识的性能指标度量的流程图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所述附图说明如下。
如图1所示,本发明实施的面向Fabric区块链的性能测试方法,模拟大量系统用户对HyperledgerFabric(简称Fabric)区块链系统完成性能测试,最终自动生成Fabric区块链系统的性能测试报告。首先部署超级账本测试链用于后续性能测试,之后部署并度量三种不同的链码性能,最终输出整体测试报告。
步骤A,Fabric测试链部署。在超级账本测试链部署流程中首先需要输入Fabric网络配置。其中,Fabric网络配置中包括节点配置、链码配置。系统可根据节点配置配置测试链,之后,读取并部署链码到Fabric网络中。图2为Fabric试链部署的流程图,用于按照要求部署Fabric测试链。详细步骤如下:1,在起始状态输入Fabric网络配置FNC=<PC,CC=<CC_Calculation、CC_IO、CC_Consensus>>;2,基于PC配置Fabric测试链FTC;3,读取并部署链码配置中的CC_Calculation;4,读取并部署链码配置中的CC_IO;5,读取并部署链码配置中的CC_Consensus;6,输出FTC,结束状态。
步骤B,面向计算的Fabric链码性能度量。在Fabric中,链码被编译并直接在Docker环境中的本机机器上运行,没有执行高级EVM字节代码相关的开销,Hyperledger在速度和内存使用方面更加高效。设计一些类似于排序的智能合约进行测试,用于监控Fabric的计算性能。图3为面向计算的性能指标度量的流程图,用于度量Fabric测试链计算性能指标。详细步骤如下:1,在起始状态输入Fabric计算性能测试配置FTC=<TS、CC_Calculation、Time>;2,读取FTC中交易脚本TS;3,启动测试;4,随机选择一个客户端作为交易发起方From_Cli;5,以From_Cli为发起账户调用TS发起交易;6,使用CC_Calculation链码执行交易;7,记录返回延迟时间RDT_Cal;8,记录单位时间内返回的交易数量RTN_Cal;9,等待间隔时间WT;10,判断测试时间是否已到Time,若否则执行步骤3;11,计算RDT_Cal平均值RDT_Cal_AVG、最大值RDT_Cal_MAX、中位数RDT_Cal_MIN;12,计算RTN_Cal平均值RTN_Cal_AVG、最大值RTN_Cal_MAX、中位数RTN_Cal_MIN;13,输出吞吐量与延迟指标数据TTD_Cal=<RDT_Cal、RTN_Cal>,结束状态。
步骤C,面向输入输出的Fabric链码性能度量。Fabric采用简单的键值数据模型。在Fabric中,部署一些IO密集型链码,执行一些关键值元组的读写操作,用于监控Fabric的输入输出性能。图4为面向计算的性能指标度量的流程图,用于度量Fabric测试链输入输出性能指标。详细步骤如下:1,在起始状态输入Fabric输入输出性能测试配置FTC=<TS、CC_IO、Time>;2,读取FTC中交易脚本TS;3,启动测试;4,随机选择一个客户端作为交易发起方From_Cli;5,以From_Cli为发起账户调用TS发起交易;6,使用CC_IO链码执行交易;7,记录返回延迟时间RDT_IO;8,记录单位时间内返回的交易数量RTN_IO;9,等待间隔时间WT;10,判断测试时间是否已到Time,若否则执行步骤3;11,计算RDT_IO平均值RDT_IO_AVG、最大值RDT_IO_MAX、中位数RDT_IO_MIN;12,计算RTN_IO平均值RTN_IO_AVG、最大值RTN_IO_MAX、中位数RTN_IO_MIN;13,输出吞吐量与延迟指标数据TTD_IO=<RDT_IO、RTN_IO>,结束状态。
步骤D,面向共识的Fabric链码性能度量。该类链码在执行过程中不做任何具体操作,只是单纯返回结果,这类智能合约在执行和存储时不会有额外操作,对区块链的性能影响体现在共识协议上,通过部署面向共识的Fabric链码用于监控Fabric共识机制的性能。图5为面向计算的性能指标度量的流程图,用于度量Fabric测试链共识性能指标。详细步骤如下:1,在起始状态下输入Fabric计算性能测试配置FTC=<TS、CC_Consensus、Time>;2,读取FTC中交易脚本TS;3,启动测试;4,随机选择一个客户端作为交易发起方From_Cli;5,以From_Cli为发起账户调用TS发起交易;6,使用CC_Consensus链码执行交易;7,记录返回延迟时间RDT_Consensus;8,记录单位时间内返回的交易数量RTN_Consensus;9,等待间隔时间WT;10,判断测试时间是否已到Time,若否则执行步骤3;11,计算RDT_Consensus平均值RDT_ConsensusAVG、最大值RDT_Consensus_MAX、中位数RDT_Consensus_MIN;12,计算RTN_Consensus平均值RTN_Consensus_AVG、最大值RTN_Consensus_MAX、中位数RTN_Consensus_MIN;13,输出吞吐量与延迟指标数据TTD_Consensus=<RDT_Consensus、RTN_Consensus>,结束状态。
本发明使用三类链码对Fabric区块链的不同特性进行性能测试,组合生成性能测试报告,实现对Fabric区块链的性能测试。
Claims (2)
1.一种面向Fabric区块链的性能测试方法,其特征是包括以下步骤:
步骤A,Fabric测试链部署,在超级账本测试链部署流程中输入Fabric网络配置参数配置测试链,读取并部署链码到Fabric网络中;
步骤B,面向计算的Fabric链码性能度量,在Fabric区块链中,链码被编译并直接在Docker环境中的本机上运行,设计一些排序的智能合约进行测试,用于监控Fabric区块链的计算性能;根据Fabric区块链计算性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向计算的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数;
步骤C,面向输入输出的Fabric链码性能度量,在Fabric区块链中,部署一些IO密集型链码,执行一些关键值元组的读写操作,用于监控Fabric区块链的输入输出性能;根据Fabric区块链输入输出性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向输入输出的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数;
步骤D,面向共识的Fabric链码性能度量,通过部署面向共识的Fabric链码用于监控Fabric区块链共识机制的性能;根据Fabric区块链共识性能测试配置及交易脚本启动测试,随机选择一个客户端作为交易发起方,以该客户端为发起账户调用交易脚本发起交易,使用面向共识的Fabric链码执行交易,记录返回延迟时间、单位时间内返回的交易数量,以相等时间间隔持续以上步骤直至达到指定总时间,计算吞吐量与延迟指标的平均值、最大值与中位数。
2.根据权利要求1中所述的面向Fabric区块链的性能测试方法,其特征是步骤A中,首先根据Fabric网络配置参数配置Fabric测试链,之后读取Fabric网络配置参数中的链码配置并完成面向计算的Fabric链码、面向输入输出的Fabric链码及面向共识的Fabric链码的部署。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046056.7A CN113726613B (zh) | 2021-09-07 | 2021-09-07 | 面向Fabric区块链的性能测试方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111046056.7A CN113726613B (zh) | 2021-09-07 | 2021-09-07 | 面向Fabric区块链的性能测试方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113726613A CN113726613A (zh) | 2021-11-30 |
CN113726613B true CN113726613B (zh) | 2022-04-15 |
Family
ID=78682293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111046056.7A Active CN113726613B (zh) | 2021-09-07 | 2021-09-07 | 面向Fabric区块链的性能测试方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113726613B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115361314A (zh) * | 2022-08-24 | 2022-11-18 | 星环信息科技(上海)股份有限公司 | 一种面向Hyperledger Fabric 2.0性能评估方法 |
CN116909931B (zh) * | 2023-09-12 | 2023-12-26 | 广州民航信息技术有限公司 | 一种针对Fabric区块链的性能检测系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783364A (zh) * | 2018-12-14 | 2019-05-21 | 深圳先进技术研究院 | 一种区块链性能测试系统及方法 |
CN112073254A (zh) * | 2019-06-11 | 2020-12-11 | 南京慕测信息科技有限公司 | 一种面向以太坊区块链的性能测试方法 |
CN113326197A (zh) * | 2021-06-11 | 2021-08-31 | 南京工业大学 | 一种面向Diem区块链的性能测试方法 |
-
2021
- 2021-09-07 CN CN202111046056.7A patent/CN113726613B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113726613A (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113726613B (zh) | 面向Fabric区块链的性能测试方法 | |
JP2018185808A (ja) | ブロックチェーンに基づくスマート契約をテストする装置及び方法 | |
CN110633200A (zh) | 用于测试智能合约的方法和设备 | |
CN111881014B (zh) | 一种系统测试方法、装置、存储介质及电子设备 | |
CN108268373A (zh) | 自动化测试用例管理方法、装置、设备及存储介质 | |
CN111221721B (zh) | 一种单元测试案例自动化录制和执行方法及装置 | |
CN110188036A (zh) | 一种软件测试方法及装置 | |
CN117034821B (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
CN113868120A (zh) | 工业软件调试方法、装置、计算机设备和存储介质 | |
CN110851352A (zh) | 一种模糊测试系统及终端设备 | |
CN111897742A (zh) | 生成智能合约测试案例的方法和装置 | |
CN112527312A (zh) | 一种嵌入式系统的测试方法和测试装置 | |
CN109684205A (zh) | 系统测试方法、装置、电子设备及存储介质 | |
JP6155050B2 (ja) | 情報処理装置の論理検証方法及びプログラム | |
Zheng et al. | Does Using Bazel Help Speed Up Continuous Integration Builds? | |
CN113934642A (zh) | 一种基于动静态结合的软件兼容性测试方法 | |
CN117992358B (zh) | 基于区块链的智能合约跨合约测试方法及装置 | |
CN111796911A (zh) | 一种面向云平台虚拟设备的攻击检测方法及电子装置 | |
Chen et al. | Big data system testing method based on chaos engineering | |
CN110333998B (zh) | 一种网络化控制cps系统的智能化测试场景编排方法 | |
CN118656303A (zh) | 基于模拟执行的程序模糊测试方法 | |
Timo et al. | Fault detection in timed FSM with timeouts by SAT-solving | |
Abdalla et al. | Test case prioritization for mobile apps | |
CN117313650B (zh) | 一种芯片测试验证方法及其应用装置 | |
CN115658534B (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 |