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
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.
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ć
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.
Suwmiarka Hyperledger to znacznie bardziej specjalistyczne rozwiązanie
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
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.
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.
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
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