区块链测试和基准测试工具简要概述

区块链测试和基准测试工具简要概述

如今,用于测试和基准测试区块链的解决方案是针对特定区块链或其分叉量身定制的。 但也有一些更通用的解决方案在功能上有所不同:其中一些是开源项目,另一些作为 SaaS 提供,但大多数是由区块链开发团队创建的内部解决方案。 然而,它们都解决类似的问题。 在本文中,我尝试简要回顾几款专门为测试区块链而设计的产品。

区块链网络的运行类似于分布式数据库的运行,因此可以使用类似的工具和方法进行测试。 为了更好地了解如何测试分布式数据库,请查看精选的资源和文章 。 例如,延迟被分成几部分: 文章,并了解他们如何寻找复制算法中的错误,我建议阅读此内容 文章.

我将描述几种用于测试和基准测试区块链的流行解决方案。 如果您在评论中描述了解决相同问题的其他有用的软件产品,我将很高兴。

区块链测试和基准测试工具简要概述

我将从一个工具开始,虽然不是专门为区块链创建的,但只要有一个已经运行的网络可供您进行实验,它就可以让您有效地测试其操作。 分布式系统可靠性最重要的因素是在服务器和网络出现问题时继续工作的能力。 这可能是网络延迟、磁盘已满、外部服务 (DNS) 不可用、硬件故障以及数百个其他原因。 要检查在大量系统机器上协同运行的任何系统的稳定性,您可以使用 小鬼。 它使用一种非常有效的方法,称为混沌工程。

使用自己的网络代理,Gremlin 在所需数量的计算机上创建了许多不同类型的问题:网络滞后、任何资源(CPU、磁盘、内存、网络)过载、禁用各个协议等。 对于区块链,Gremlin 可以在测试网服务器上使用,模拟现实生活中的问题并观察网络的行为。 有了它,开发人员和管理员可以在受控环境中观察系统崩溃或代码更新时会发生什么。 在这种情况下,必须提前配置和部署网络,并配置为收集必要的指标。

Gremlin 是架构师、开发人员和安全专家的便捷工具,也是测试任何现成的和正在运行的分布式系统(包括区块链)的通用解决方案。

区块链测试和基准测试工具简要概述

Hyperledger Caliper 是一个更加专业的解决方案 超级账本卡尺。 目前,Caliper 同时支持多个区块链 - Hyperledger 系列的代表(Fabric、Sawtooth、Iroha、Burrow、Besu)以及以太坊和 FISCO BCOS 网络。

使用Caliper,您可以设置区块链网络的拓扑和用于测试的合约,以及描述节点的配置。 区块链节点在一台机器上的 Docker 容器中生成。 接下来,您可以选择需要的 测试配置 并在启动后收到包含测试结果报告的文件。 可以在此处找到 Caliper 指标和基准测试方法的完整列表 超级账本区块链性能指标,如果您对区块链基准测试主题感兴趣,这是一篇很棒的文章。 您还可以在单​​独的 Prometheus/Grafana 中设置指标收集。

Hyperledger Caliper 是一款面向开发人员和系统架构师的工具,因为它提供了测试可重复性以及测试和基准测试的自动化。 它用于区块链核心的开发:共识算法、用于处理智能合约的虚拟机、点对点层和其他系统机制。

区块链测试和基准测试工具简要概述

MixBytes 坦克 是在为基于 EOS 的网络开发共识和最终性算法以及测试基于 Parity Substrate (Polkadot) 的平行链的过程中出现的工具。 在功能方面,它与 Hyperledger Caliper 很接近,因为它允许您从任何分布式系统的节点和运行测试脚本的客户端计算机收集重要指标。

MixBytes Tank 使用多种云服务(Digital Ocean、Google Cloud Engine 等),在其中可以启动许多节点、执行初步配置程序、在不同机器上并行运行多个基准测试、收集必要的指标并自动关闭网络。

MixBytes Tank 允许您在测试后自动最小化不必要的资源,从而节省云服务器上的资金。 另一个显着特点是使用 Molecule 包,它允许开发人员在本地测试所需区块链的部署。

MixBytes Tank 使您能够及早发现具有大量地理分布服务器和客户端的真实网络中出现的算法瓶颈和错误。 该坦克将帮助您了解如果客户端在高度可重复的条件下发送具有给定 tps 的交易并且在必要时具有分布在不同大陆的真实数量的节点,则节点上会发生什么。

区块链测试和基准测试工具简要概述

Whiteblock Genesis 是基于以太坊的区块链的测试平台。 该工具具有相当广泛的功能:它允许您启动网络、在其中创建所需数量的帐户、增加所需数量的客户端、配置网络拓扑、指定带宽和丢包参数并运行测试。

Whiteblock Genesis 提供自己的测试设施。 开发人员只需指定测试参数,使用现成的 API 运行它们,并使用方便的仪表板获取结果。

Whiteblock Genesis 允许您配置相当详细的测试,平台将自动针对每个重大代码更改进行测试。 这将使您能够及早发现错误,并立即评估更改对重要网络参数的影响,例如交易速度和节点消耗的资源。

马特

用于测试分布式系统的另一个有趣的年轻产品是 马特。 它是用 Python 编写的,允许您使用简单的配置脚本创建所需的网络拓扑以及所需数量的服务器和客户端(例子)。 此后,该服务将网络部署在多个 Docker 容器中,并打开一个 Web 界面,您可以在其中观察来自网络服务器和客户端的消息。 Madt 可用于测试区块链 - 项目存储库有一个基于 Kademlia 协议的 p2p 网络测试,其中逐渐增加向节点传送数据的延迟并检查该数据的状态。

Madt 最近才出现,但鉴于其非常灵活的架构,它可以发展成为一个功能性产品。

其他方案

几乎任何对区块链系统部分的测试都需要运行初步脚本,准备测试的账户和条件(这可以是测试可生成大量链分叉的共识错误、测试硬分叉场景、更改系统参数等)。 所有这些操作在不同的区块链中执行方式不同,因此团队更容易逐渐将产品测试和基准测试适应内部 CI/CD 并使用自己的开发,随着区块链功能的发展,这些开发逐渐变得更加复杂。

尽管如此,使用现成的解决方案可以大大减少这些团队的测试时间,因此我认为该软件将在未来几年积极开发。

结论

为了结束这篇简短的评论,我将列出区块链测试工具的几个重要特征:

  • 在可重复条件下自动部署区块链网络的能力。 在开发区块链的系统部分时,这个因素很重要:共识算法、最终性、系统智能合约。
  • 拥有系统的成本、消耗的资源以及持续使用的便利性。 这一因素为该项目提供了以很少的资金进行高质量的测试。
  • 测试配置的灵活性和简单性。 这个因素增加了识别系统问题的机会 - 错过重要内容的机会更少。
  • 针对特定类型的区块链的定制。 基于现有解决方案开发解决方案可以大大提高质量并降低时间成本。
  • 所获得的结果及其类型(报告、指标、图表、日志等)的便利性和可访问性。 如果您想跟踪产品开发的历史,或者需要深入分析区块链网络的行为,这是绝对必要的。

祝您测试顺利,祝您的区块链快速且容错!

来源: habr.com

添加评论