Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Obecnie rozwiązania do testowania i porównywania łańcuchów bloków są dostosowywane do konkretnego blockchainu lub jego forków. Ale jest też kilka bardziej ogólnych rozwiązań, różniących się funkcjonalnością: część z nich to projekty typu open source, inne dostarczane są w formie SaaS, ale większość to rozwiązania wewnętrzne stworzone przez zespół programistów blockchain. Jednak wszystkie rozwiązują podobne problemy. W tym artykule próbowałem pokrótce przejrzeć kilka produktów zaprojektowanych specjalnie do testowania blockchainów.

Działanie sieci blockchain przypomina działanie rozproszonej bazy danych, zatem do testowania można zastosować podobne narzędzia i metody. Aby lepiej zrozumieć sposób testowania rozproszonych baz danych, przejrzyj duży wybór zasobów i artykułów stąd. Na przykład opóźnienie jest w tym przypadku podzielone na kawałki Artykułi aby zrozumieć, jak szukają błędów w algorytmach replikacji, polecam przeczytać to artykuły.

Opiszę kilka popularnych rozwiązań do testowania i benchmarkingu blockchainów. Byłbym szczęśliwy, gdybyś w komentarzach opisał inne przydatne oprogramowanie do rozwiązywania tych samych problemów.

Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Zacznę od narzędzia, które choć nie jest stworzone specjalnie dla blockchainów, pozwala skutecznie przetestować ich działanie, pod warunkiem, że istnieje już działająca sieć, na której można poeksperymentować. Najważniejszym czynnikiem niezawodności systemu rozproszonego jest możliwość kontynuowania pracy w przypadku problemów z serwerami i siecią. Mogą to być opóźnienia w sieci, zapełnienie dysku, niedostępność usług zewnętrznych (DNS), awarie sprzętu i setki innych przyczyn. Aby sprawdzić stabilność dowolnych systemów działających wspólnie na dużej liczbie komputerów systemowych, możesz użyć Zły duch. Wykorzystuje niezwykle skuteczne podejście zwane Inżynierią Chaosu.

Używając własnego agenta sieciowego, Gremlin stwarza wiele różnych typów problemów na wymaganej liczbie maszyn: opóźnienia w sieci, przeciążenie dowolnych zasobów (procesora, dysku, pamięci, sieci), wyłączanie poszczególnych protokołów itp. W przypadku blockchainów Gremlin może być używany na serwerach testnetowych, emulując rzeczywiste problemy i obserwując zachowanie sieci. Dzięki niemu programiści i administratorzy mogą w kontrolowanym środowisku obserwować, co się stanie, jeśli system ulegnie awarii lub gdy kod zostanie zaktualizowany. W takim przypadku sieć musi zostać wcześniej skonfigurowana i wdrożona, a także skonfigurowana do gromadzenia niezbędnych wskaźników.

Gremlin to wygodne narzędzie dla architektów, devopsów i specjalistów ds. bezpieczeństwa oraz uniwersalne rozwiązanie do testowania dowolnych gotowych i działających systemów rozproszonych, w tym blockchainów.

Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Suwmiarka Hyperledger to znacznie bardziej specjalistyczne rozwiązanie Suwmiarka hiperksięgowa. W tej chwili Caliper obsługuje kilka blockchainów jednocześnie – przedstawicieli rodziny Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), a także Ethereum i sieć FISCO BCOS.

Za pomocą Calipera możesz ustawić topologię sieci blockchain i kontrakty do testów, a także opisać konfigurację węzła. Węzły Blockchain są tworzone w kontenerach dokowanych na jednej maszynie. Następnie możesz wybrać niezbędne konfiguracje testowe i otrzymaj plik z raportem z wynikami testów po uruchomieniu. Pełną listę wskaźników Calipera i podejścia do testów porównawczych można znaleźć tutaj Wskaźniki wydajności Hyperledger Blockchain, to świetny artykuł, jeśli interesuje Cię temat benchmarkingu blockchain. Możesz także skonfigurować zbieranie metryk w osobnym Prometheusie/Grafanie.

Hyperledger Caliper to narzędzie skierowane do programistów i architektów systemów, ponieważ zapewnia powtarzalność testów oraz automatyzację testów i benchmarkingu. Wykorzystuje się go do rozwoju rdzenia blockchainów: algorytmów konsensusu, maszyny wirtualnej do przetwarzania inteligentnych kontraktów, warstwy peer-to-peer i innych mechanizmów systemowych.

Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Zbiornik MixBytes to narzędzie, które pojawiło się w procesie opracowywania algorytmów konsensusu i finalności dla sieci opartych na EOS oraz testowania parachainsów w oparciu o Parity Substrate (Polkadot). Funkcjonalnie jest zbliżony do Hyperledger Caliper, gdyż pozwala zbierać ważne metryki z węzłów dowolnego systemu rozproszonego oraz maszyn klienckich, na których uruchomione są skrypty testowe.

MixBytes Tank korzysta z kilku usług chmurowych (Digital Ocean, Google Cloud Engine itp.), w których może uruchomić wiele węzłów, przeprowadzić wstępne procedury konfiguracyjne, uruchomić kilka testów porównawczych równolegle na różnych maszynach, zebrać niezbędne metryki i automatycznie wyłączyć sieć.

MixBytes Tank pozwala zaoszczędzić pieniądze na serwerach w chmurze, automatycznie minimalizując niepotrzebne zasoby po teście. Kolejną charakterystyczną cechą jest wykorzystanie pakietu Molecule, który pozwala programiście przetestować lokalnie wdrożenie pożądanego blockchainu.

MixBytes Tank pozwala na wczesne wykrywanie wąskich gardeł i błędów w algorytmach, które pojawiają się w rzeczywistych sieciach z dużą liczbą rozproszonych geograficznie serwerów i klientów. Zbiornik pomoże Ci zrozumieć, co stanie się na węzłach, jeśli klienci wyślą transakcje z danym tps w wysoce powtarzalnych warunkach i w razie potrzeby z rzeczywistą liczbą węzłów rozproszonych na różnych kontynentach.

Krótki przegląd narzędzi do testowania i benchmarkingu Blockchain

Whiteblock Genesis to platforma testowa dla blockchainów opartych na Ethereum. Narzędzie to ma dość szeroką funkcjonalność: pozwala uruchomić sieć, utworzyć w niej wymaganą liczbę kont, zwiększyć wymaganą liczbę klientów, skonfigurować topologię sieci, określić parametry przepustowości i utraty pakietów oraz przeprowadzić test.

Whiteblock Genesis zapewnia własne zaplecze testowe. Programiści muszą jedynie określić parametry testów, uruchomić je za pomocą gotowego API i uzyskać wyniki za pomocą wygodnego dashboardu.

Whiteblock Genesis umożliwia skonfigurowanie dość szczegółowego testu, który platforma będzie automatycznie przeprowadzać przy każdej istotnej zmianie kodu. Pozwoli to na wychwycenie błędów na wczesnym etapie i natychmiastową ocenę wpływu zmian na ważne parametry sieci, takie jak szybkość transakcji i zasoby zużywane przez węzły.

Madt

Kolejnym ciekawym młodym produktem do testowania systemów rozproszonych jest szalony. Jest napisany w języku Python i umożliwia utworzenie wymaganej topologii sieci oraz wymaganej liczby serwerów i klientów za pomocą prostego skryptu konfiguracyjnego (przykład). Następnie usługa wdraża sieć w kilku kontenerach Docker i otwiera interfejs sieciowy, w którym można obserwować wiadomości z serwerów i klientów sieci. Madt można wykorzystać do testowania blockchainów – w repozytorium projektu znajduje się test sieci p2p oparty na protokole Kademlia, w którym stopniowo zwiększane są opóźnienia w dostarczaniu danych do węzłów i sprawdzany jest stan tych danych.

Madt pojawił się dopiero niedawno, ale biorąc pod uwagę swoją bardzo elastyczną architekturę, może rozwinąć się w funkcjonalny produkt.

Inne rozwiązania

Niemal każde testowanie części systemowej blockchainów wymaga uruchomienia wstępnych skryptów, przygotowania kont i warunków do testu (może to być testowanie błędów konsensusu, które mogą generować liczne forki łańcuchów, testowanie scenariuszy hard forków, zmiana parametrów systemu itp.). Wszystkie te manipulacje są przeprowadzane w różny sposób w różnych blockchainach, dlatego zespołom łatwiej jest stopniowo dostosowywać testowanie produktów i benchmarking do wewnętrznego CI/CD oraz korzystać z własnych rozwiązań, które stopniowo stają się coraz bardziej złożone w miarę rozwoju funkcjonalności blockchain.

Niemniej jednak wykorzystanie gotowych rozwiązań może znacznie skrócić czas testowania tych zespołów, dlatego myślę, że to oprogramowanie będzie aktywnie rozwijane w nadchodzących latach.

wniosek

Na zakończenie tej krótkiej recenzji wymienię kilka ważnych cech narzędzi do testowania blockchain:

  • Możliwość automatycznego wdrażania sieci blockchain w powtarzalnych warunkach. Czynnik ten jest ważny przy opracowywaniu części systemowych blockchainów: algorytmów konsensusu, ostateczności, inteligentnych kontraktów systemowych.
  • Koszt posiadania systemu, zużyte zasoby i wygoda ciągłego użytkowania. Czynnik ten zapewnia projektowi wysokiej jakości testy za niewielkie pieniądze.
  • Elastyczność i prostota konfiguracji testów. Czynnik ten zwiększa szansę na wykrycie problemów z systemem - jest mniejsze ryzyko przeoczenia czegoś ważnego.
  • Dostosowanie do określonych typów łańcuchów bloków. Opracowanie rozwiązania w oparciu o już istniejące może znacznie poprawić jakość i obniżyć koszty czasu.
  • Wygoda i dostępność uzyskanych wyników oraz ich rodzaj (raporty, metryki, wykresy, logi itp.). Jest to absolutnie konieczne, jeśli chcesz śledzić historię rozwoju produktu lub jeśli potrzebujesz głębokiej analizy zachowania sieci blockchain.

Powodzenia w testowaniu i niech Twoje łańcuchy bloków będą szybkie i odporne na błędy!

Źródło: www.habr.com

Dodaj komentarz