Сёння рашэнні для тэставання і бенчмаркінгу блокчейнов заменчаны пад вызначаны блокчейн або яго форкі. Але ёсць і некалькі больш агульных рашэнняў, якія адрозніваюцца функцыяналам: некаторыя з іх – апенсорсныя праекты, іншыя прадастаўляюцца як SaaS, але большая частка – гэта ўнутраныя рашэнні, якія ствараюцца камандай распрацоўкі блокчейна. Тым не менш усе яны вырашаюць падобныя задачы. У дадзеным артыкуле я пастараўся коратка разгледзець некалькі прадуктаў, заменчаных менавіта пад тэставанне блокчейнов.
Праца блокчейн-сеткі нагадвае працу размеркаванай базы дадзеных, таму для тэсціравання можна прымяняць аналагічныя сродкі і метады. Каб лепш разумець, як тэстуюць размеркаваныя базы даных, зірніце на добрую падборку рэсурсаў і артыкулаў.
Я апішу некалькі папулярных рашэнняў для тэсціравання і бенчмаркетынгу блокчейнов. Буду рады, калі ў каментарах вы апішаце іншыя карысныя праграмныя прадукты для рашэння тых жа задач.
Пачну з прылады, хоць і не створанага менавіта пад блокчейны, але які дазваляе эфектыўна тэставаць іх працу пры ўмове існавання ўжо запушчанай сеткі, над якой можна эксперыментаваць. Найважнейшы фактар надзейнасці размеркаванай сістэмы - здольнасць працягнуць працу ў выпадку праблем з серверамі і сеткай. Гэта могуць быць сеткавыя лагі, перапаўненне кружэлкі, недаступнасць вонкавых сэрвісаў (DNS), апаратныя збоі і сотні іншых чыннікаў. Каб правяраць устойлівасць любых сістэм, якія працуюць узгоднена на вялікай колькасці машын сістэм, можна выкарыстоўваць
З дапамогай уласнага сеткавага агента Gremlin стварае на патрэбнай колькасці машын мноства розных тыпаў праблем: сеткавыя лагі, перагрузку любога рэсурсу (CPU, кружэлка, памяць, сетка), адключае асобныя пратаколы, і да т.п. Для блокчейнов Gremlin можа быць скарыстаны на серверах тэставай сеткі, эмулюючы рэальныя праблемы і назіраючы за паводзінамі сеткі. З яго дапамогай распрацоўшчыкі і адміністратары ў кантраляваным асяроддзі могуць назіраць, што адбудзецца ў з сістэмай выпадку збояў або пры абнаўленні кода. Пры гэтым сетку неабходна загадзя сканфігураваць і разгарнуць, а таксама наладзіць збор неабходных метрык.
Gremlin - зручная прылада для архітэктараў, дэвопсаў і бяспечнікаў і ўніверсальнае рашэнне для тэставання любых гатовых і запушчаных размеркаваных сістэм, у тым ліку блокчейнов.
Hyperledger Caliper - значна больш спецыялізаванае рашэнне
З дапамогай Caliper можна задаць тапалогію блокчейн-сеткі і кантракты для тэставання, а таксама апісаць канфігурацыю ноды. Ноды блокчейна паднімаюцца ў docker кантэйнерах на адной машыне. Далей, вы можаце выбраць неабходныя
Hyperledger Caliper — інструмент, арыентаваны на распрацоўшчыкаў і сістэмных архітэктараў, бо забяспечвае паўтаральнасць тэстаў і аўтаматызацыю тэсціравання і бенчмаркетынгу. Ён выкарыстоўваецца пры распрацоўцы ядра блокчейнов: алгарытмаў кансэнсусу, віртуальнай машыны для працэсінгу смарт-кантрактаў, peer-to-peer пласта і іншых сістэмных механізмаў.
MixBytes Tank выкарыстоўвае некалькі хмарных сэрвісаў (Digital Ocean, Google Cloud Engine і інш.), у якіх умее запусціць мноства нод, правесці папярэднія працэдуры канфігуравання, паралельна запусціць некалькі benchmark-ов на розных машынах, сабраць неабходныя метрыкі і аўтаматычна пагасіць сетку.
MixBytes Tank дазваляе эканомна расходаваць сродкі на хмарныя серверы, аўтаматычна згортваючы непатрэбныя рэсурсы пасля правядзення тэсту. Яшчэ адна адметная рыса – выкарыстанне пакета Molecule, які дазваляе распрацоўніку тэставаць разгортванне патрэбнага блокчейна лакальна.
MixBytes Tank дазваляе на ранніх этапах выявіць вузкія месцы і памылкі ў алгарытмах, якія ўзнікаюць у рэальных сетках з вялікай колькасцю геаграфічна размеркаваных сервераў і кліентаў. Танк дапаможа вам зразумець, што адбудзецца на нодах, калі кліенты будуць слаць транзакцыі з зададзеным tps у высокапаўтаральных умовах і з рэальнай колькасцю нод, разнесеных на розныя кантыненты, калі трэба.
Whiteblock Genesis – гэта платформа для тэставання блокчейнов на базе Ethereum. Гэты інструмент валодае досыць шырокім функцыяналам: ён дазваляе запусціць сетку, стварыць у ёй патрэбную колькасць акаўнтаў, падняць патрэбны лік кліентаў, сканфігураваць тапалогію сеткі, паказаць параметры bandwidth, packetloss і запусціць тэст.
Whiteblock Genesis дае ўласныя магутнасці для правядзення тэстаў. Распрацоўнікам дастаткова пазначыць параметры тэстаў, запусціць іх пры дапамозе гатовага API і атрымаць вынікі з выкарыстаннем зручнага dashboard.
Whiteblock Genesis дазваляе сканфігураваць досыць падрабязны тэст, які платформа будзе аўтаматычна праводзіць на кожную значную змену кода. Гэта дазволіць на ранніх этапах адлавіць памылкі і адразу ж ацаніць уплыў змен на важныя параметры сеткі, такія як хуткасць правядзення транзакцый і спажываныя нодамі рэсурсы.
Madt
Яшчэ адзін цікавы малады прадукт для тэставання размеркаваных сістэм
Madt з'явіўся зусім нядаўна, але, улічваючы вельмі гнуткую архітэктуру, можа развіцца ў функцыянальны прадукт.
іншыя рашэнні
Практычна любое тэставанне сістэмнай часткі блокчейнов патрабуе запуску папярэдніх сцэнараў, падрыхтоўкі акаўнтаў і ўмоў для тэсту (гэта можа быць тэставанне памылак кансэнсусу, якія могуць спараджаць шматлікія форкі ланцужкоў, адпрацоўка сцэнараў хардфорка, змены сістэмных параметраў і т.д.). Усе гэтыя маніпуляцыі ў розных блокчейнах праводзяцца па розным, таму камандам прасцей паступова прыстасаваць тэставанне і бенчмаркінг прадукта да ўнутранага CI/CD і выкарыстоўваць уласныя напрацоўкі, якія паступова ўскладняюцца з развіццём функцыяналу блокчейна.
Тым не менш выкарыстанне гатовых рашэнняў здольна моцна скараціць гэтым камандам час на тэсціраванне, таму, я думаю, што гэты софт будзе актыўна развівацца ў бліжэйшыя гады.
Заключэнне
Завяршаючы гэты невялікі агляд, пералічу некалькі важных характарыстык прылад для тэставання блокчейнов:
- Магчымасць аўтаматычнага разгортвання блокчейн-сеткі ў паўтаральных умовах. Гэты фактар важны пры распрацоўцы сістэмных частак блокчейнов: алгарытмаў кансэнсусу, фінальнасці, сістэмных смарт-кантрактаў.
- Кошт валодання сістэмай, спажываныя рэсурсы і зручнасць для пастаяннага выкарыстання. Гэты фактар забяспечвае праект высакакласнымі тэстамі за невялікія грошы.
- Гнуткасць і прастата канфігурацыі тэстаў. Гэты фактар павышае шанцы выявіць праблемы сістэмы - менш верагоднасць прапусціць нешта важнае.
- Кастамізацыя для канкрэтных тыпаў блокчейнов. Распрацоўка рашэння на базе ўжо існага можа моцна палепшыць якасць і скараціць часавыя выдаткі.
- Выгода і даступнасць атрыманых вынікаў і іх тып (справаздачы, метрыкі, графікі, логі, і да т.п.). Гэта зусім неабходна, калі вы хочаце адсочваць гісторыю развіцця прадукта, ці вам патрабуецца глыбокая аналітыка паводзін блокчейн-сеткі.
Удачы ў тэставанні і няхай вашыя блокчейны будуць хуткімі і адмоваўстойлівасцю!
Крыніца: habr.com