区块链性能测试工具Hyperbench详解

发表于:2022-12-08 09:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:趣链科技    来源:CSDN

  前言
  区块链行业的发展如火如荼,已经渗透到金融、政务、司法、民生等各个领域,区块链技术也日益受到人们的关注。然而,当你想选择某一区块链平台的时候,是否会遇到以下问题 :
  1)给业务问题输出解决方案时,区块链选型焦头烂额 ?
  2)选型区块链时,官方测评宣传性能猛如虎,实际一测猛虎看了都流泪…
  3)钱都花了,怎么办 ?
  HyperBench 值得拥有的开源测评工具
  从产品定位来说,HyperBench是一个高效的区块链平台性能测试工具,具备通用、易用、可伸缩等核心优势。
  通用化:可以适配Hyperchain、Xuperchain、CITA、Fabric、以太坊等多种不同的区块链主流平台,后续将持续扩展,期望最终可以达到区块链全平台的支持;
  高易用:配置操作方便、测试脚本定制简单(基于统一标准库)、可快速构建平台测试,测试指标多样,支持可视化工具进行数据渲染,最终实现数据可视化统计分析;
  可伸缩:HyperBench 具备良好的伸缩弹性,采用分布式集群方案进行压力调度,使其具备良好的伸缩延展性,同时还会最大化的优化单机性能,可以有效避免单一机器生成的压测负载量很快就会达到机器的资源上限问题,具备良好的压力输出能力。
  轻松一用,高效测评
  HyperBench在AWS c5d.2xlarge规格的云服务器上,测试轻客户端的区块链平台Hyperchain时,单机能够达到8000并发20000QPS的压力输出。
  只需一条命令即可启动远程压测节点,简单配置就可以实现分布式压测。
  ^C
  [hyperchain@CentOS-7 ddl]$ ./hyperbench-2 worker -p 8886
  ^C
  -bash-4.2$ ./hyperbench-2 worker -p 9081^C[hyperchain@CentOS-7 ddl]$ ./hyperbench-2 worker -p 8886^C-bash-4.2$ ./hyperbench-2 worker -p 9081
  配置压测节点ip
  启动压测服务
  在测试过程中,HyperBench封装了区块链接口,用户只需要简单的lua操作就能实现特定的转账功能和合约操作,做到真正的易用,为测试人员排除后顾之忧。
  转账功能示例,HyperBench的优势立显。
  封装后:
  合约操作示例-HyperBench的优势扩大。
  无独有偶,合约操作示例更加简单,封装了底层接口的实现,用户只需要关注调用的方法和传参就可以实现自定义合约场景的压测。
  封装前:
  封装后:
  为什么选择HyperBench
  设计理念
  在区块链领域实现通用区块链基准测试工具面临的主要难题有两方面:
  一方面是现在并没有统一的区块链系统功能要求,各区块链系统所提供的功能各不相同,如何整合、适配主流的区块链系统是一个值得思考的问题;
  另一方面是现在没有区块链系统统一的基准测试规范,大多是由系统研发公司与研究机构自行提出的,因此测试用例会随着时间不断变化,如何快速、灵活地根据变化的测试用例搭建测试环境同样是一个需要考虑的问题;
  HyperBench对上述两个问题的解答是:从实际区块链系统使用者的视角出发,将区块链操作接口抽象成统一的合约部署、调用、查询等接口,借此来解决统一适配的问题;测试逻辑以脚本的形式构造,允许测试人员基于统一的区块链操作接口和测试引擎所暴露的钩子函数自由灵活地制定测试用例,以此来解决快速搭建测试环境的问题。
  设计思路
  总的来说,在架构上,HyperBench基于通用的测试引擎,通过将测试用例和被测区块链平台的接口分层抽象成易于扩展的基准层和适配层,使测试人员能够根据测试用例快速构建出不同区块链平台的测试用例,测评区块链系统在特定测试用例下的交易吞吐量与成功率。
  HyperBench作为分布式高性能基准测试工具,其整体架构分为五个部分:
  基准层主要由测试用例构成,每个测试用例又分成了两个部分,用来配置测试引擎的测试参数配置及基于测试引擎所暴露出来的钩子函数制定测试逻辑的Lua测试脚本。
  引擎层主要是由五个通用的控制测试行为的组件构成。分布式控制器负责主从模式的分布式控制,主要是进行测试上下文和测试任务的分发。压力调度器主要负责根据参数向受测区块链系统输出压力。虚拟机池负责管理模拟用户行为所使用的Lua虚拟机。数据统计负责采集基准测试数据。可视化工具负责将采集到的数据进行渲染。
  虚拟机层主要由若干Lua虚拟机组成。虚拟机由引擎层的虚拟机池管理,拥有独立的上下文,因此可以用来模拟用户操作逻辑。压力调度器通过并发调用虚拟机暴露出的钩子函数来实现压力输出。分布式控制器同样通过调用虚拟机暴露出的钩子函数来进行运行时的虚拟机上下文同步,同步内容包括智能合约地址、调用的ABI等。虚拟机所执行的逻辑中,一部分钩子函数的脚本代码是由基准层的Lua测试脚本编写的,还有一部分是HyperBench系统本身内置的。
  适配层是将对区块链平台的操作统一抽象成合约部署、调用、查询、转账等区块链客户端接口,屏蔽区块链系统的功能细节。受测区块链系统使用各自的SDK实现客户端接口以进行适配。通过这种方式,为编写测试提供一个统一视角,方便形成统一的基准测试规范。
  性能扩展层主要是为了加速Lua虚拟机执行测试逻辑的效率而增加的。使用Go实现Lua5.1的标准库,并且将一些测试中常用的工具方法,如长随机字符串生成等方法,内置到虚拟机中供测试人员使用,通过这种方式来尽量减小在系统中引入虚拟机和脚本带来的性能损失,提高测试工具性能。
  设计对比
  相较于当下流行的性能测评工具Caliper,HyperBench在易用性和扩展性上具备一定优势。
  Caliper通过Node.js的线程与Promise机制来实现并发的压力输出。这种架构下的Caliper对于测试人员,在线程与Promise的模型下,较难在运行时缓存测试上下文,从而构造比较复杂的连续区块链操作用例。另外,由于Node.js的限制,如果不使用C/C++进行扩展的话,性能是比较差的。
  HyperBench配置操作方便,脚本定制简单,可以快速构建区块链平台性能测试。HyperBench拥有强大的智能调度引擎,通过分布式控制器调节多台压力机,能够对压力数据运行时上下文进行分发、调控、汇总及可视化分析,同时又能保证单台压力机具有良好的压力输出能力,强大而又全面。
  总结
  HyperBench 作为通用的性能基准测试框架,期望成为区块链行业人人都在用的通用性能测试工具,意在赋能区块链行业三大价值:技术价值、业务价值、生态价值。
  技术价值
  攻克区块链平台性能测试的痛点问题,提供灵活易用的测试引擎,提供能对接多种区块链平台的适配器,提供具备高拓展性的分布式控制器,提升区块链测试平台的易用性、通用性和可伸缩性。
  业务价值
  助力区块链性能测试标准化、易用化,促进区块链技术发展,更好赋能区块链业务。
  生态价值
  目前开源的区块链性能测试工具较少,趣链HyperBench平台支持多种主流区块链平台适配,并具备高易用、高通用、可伸缩的特点,贡献开放原子开源基金会有助于区块链开源生态体系的丰富和完善,促进相关标准的建设,整体促进区块链技术开源生态繁荣。
  HyperBench可以在以下的场景中,助你一臂之力。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号