區塊鏈測試和基準測試工具簡要概述

區塊鏈測試和基準測試工具簡要概述

如今,用於測試和基準測試區塊鏈的解決方案是針對特定區塊鏈或其分叉量身定制的。 但也有一些更通用的解決方案在功能上有所不同:其中一些是開源項目,有些則是作為 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 並使用自己的開發,隨著區塊鏈功能的發展,這些開發逐漸變得更加複雜。

儘管如此,使用現成的解決方案可以大大減少這些團隊的測試時間,因此我認為該軟體將在未來幾年積極開發。

結論

為了結束這篇簡短的評論,我將列出區塊鏈測試工具的幾個重要特徵:

  • 在可重複條件下自動部署區塊鏈網路的能力。 在開發區塊鏈的系統部分時,這個因素很重要:共識演算法、最終性、系統智慧合約。
  • 擁有系統的成本、消耗的資源、持續使用的便利性。 這一因素為該項目提供了以很少的資金進行高品質的測試。
  • 測試配置的靈活性和簡單性。 這個因素增加了識別系統問題的機會 - 錯過重要內容的機會更少。
  • 針對特定類型的區塊鏈的客製化。 基於現有解決方案開發解決方案可以大大提高品質並降低時間成本。
  • 所獲得的結果及其類型(報告、指標、圖表、日誌等)的便利性和可訪問性。 如果您想追蹤產品開發的歷史,或者需要深入分析區塊鏈網路的行為,這是絕對必要的。

祝您測試順利,並祝您的區塊鏈快速且容錯!

來源: www.habr.com

添加評論