Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

Šiandien blokų grandinių testavimo ir lyginamosios analizės sprendimai yra pritaikyti konkrečiai blockchain arba jos šakėms. Tačiau yra ir keletas bendresnių sprendimų, kurie skiriasi funkcionalumu: vieni jų yra atvirojo kodo projektai, kiti pateikiami kaip SaaS, tačiau dauguma yra vidiniai sprendimai, sukurti blockchain kūrimo komandos. Tačiau visi jie sprendžia panašias problemas. Šiame straipsnyje pabandžiau trumpai apžvelgti keletą produktų, skirtų specialiai blokų grandinių testavimui.

Blockchain tinklo veikimas primena paskirstytos duomenų bazės veikimą, todėl testavimui gali būti naudojami panašūs įrankiai ir metodai. Norėdami geriau suprasti, kaip testuojamos paskirstytos duomenų bazės, peržiūrėkite gerą išteklių ir straipsnių pasirinkimą taigi. Pavyzdžiui, čia delsa surūšiuojama į dalis straipsnis, ir norint suprasti, kaip jie ieško replikacijos algoritmų klaidų, rekomenduoju perskaityti tai straipsnis.

Aprašysiu kelis populiarius blokų grandinių testavimo ir palyginimo sprendimus. Man būtų malonu, jei komentaruose apibūdintumėte kitus naudingus programinės įrangos produktus toms pačioms problemoms spręsti.

Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

Pradėsiu nuo įrankio, kuris, nors ir nėra sukurtas specialiai blokų grandinėms, leidžia efektyviai išbandyti jų veikimą, su sąlyga, kad yra jau veikiantis tinklas, kuriame galėsite eksperimentuoti. Svarbiausias paskirstytos sistemos patikimumo veiksnys yra galimybė toliau dirbti iškilus problemų su serveriais ir tinklu. Tai gali būti tinklo delsos, disko pilnumas, išorinių paslaugų (DNS) nepasiekiamumas, aparatinės įrangos gedimai ir šimtai kitų priežasčių. Norėdami patikrinti bet kurios sistemos, veikiančios kartu daugelyje sistemų mašinų, stabilumą, galite naudoti Gremlinas. Jis naudoja itin veiksmingą metodą, vadinamą „Chaos Engineering“.

Naudodamas savo tinklo agentą, „Gremlin“ sukuria daug įvairių problemų reikiamam skaičiui mašinų: tinklo vėlavimų, bet kokio resurso (procesoriaus, disko, atminties, tinklo) perkrovos, išjungia atskirus protokolus ir kt. „Blockchain“ atveju „Gremlin“ gali būti naudojamas „testnet“ serveriuose, imituojant realaus gyvenimo problemas ir stebint tinklo elgesį. Su juo kūrėjai ir administratoriai kontroliuojamoje aplinkoje gali stebėti, kas atsitiks, jei sistema strigs arba kai bus atnaujintas kodas. Tokiu atveju tinklas turi būti sukonfigūruotas ir įdiegtas iš anksto, taip pat sukonfigūruotas taip, kad būtų surinkta reikiama metrika.

Gremlin yra patogus įrankis architektams, devops ir saugumo specialistams bei universalus sprendimas, skirtas išbandyti bet kokias paruoštas ir veikiančias paskirstytas sistemas, įskaitant blokų grandines.

Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

Hyperledger Caliper yra daug labiau specializuotas sprendimas Hyperledger suportas. Šiuo metu „Caliper“ palaiko kelias blokų grandines vienu metu – „Hyperledger“ šeimos atstovus („Fabric“, „Sawtooth“, „Iroha“, „Burrow“, „Besu“), taip pat „Ethereum“ ir „FISCO BCOS“ tinklą.

Naudodami Caliper galite nustatyti blokų grandinės tinklo topologiją ir kontraktus testavimui, taip pat aprašyti mazgo konfigūraciją. Blockchain mazgai iškeliami dokerių konteineriuose vienoje mašinoje. Toliau galite pasirinkti reikiamą testavimo konfigūracijos ir po paleidimo gauti failą su ataskaita apie bandymo rezultatus. Visą suporto metrikos ir lyginamosios analizės metodų sąrašą galite rasti čia „Hyperledger Blockchain“ našumo metrika, tai puikus straipsnis, jei jus domina „blockchain“ lyginamosios analizės tema. Taip pat galite nustatyti metrikos rinkinį atskirame „Prometheus“ / „Grafana“.

„Hyperledger Caliper“ yra įrankis, skirtas kūrėjams ir sistemų architektams, nes suteikia testų pakartojamumą ir testavimo bei lyginamosios analizės automatizavimą. Jis naudojamas kuriant blokų grandinių branduolį: konsensuso algoritmus, virtualią mašiną išmaniosioms sutartims apdoroti, lygiavertį sluoksnį ir kitus sistemos mechanizmus.

Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

„MixBytes“ bakas yra įrankis, kuris atsirado kuriant konsensuso ir baigtumo algoritmus EOS pagrįstiems tinklams ir testuojant parachains, pagrįstus Parity Substrate (Polkadot). Kalbant apie funkcionalumą, jis yra artimas „Hyperledger Caliper“, nes leidžia rinkti svarbią metriką iš bet kurios paskirstytos sistemos mazgų ir klientų įrenginių, kuriuose veikia bandomieji scenarijai.

„MixBytes Tank“ naudoja kelias debesies paslaugas („Digital Ocean“, „Google Cloud Engine“ ir kt.), kuriose gali paleisti daugybę mazgų, atlikti išankstines konfigūravimo procedūras, lygiagrečiai vykdyti kelis etalonus skirtinguose įrenginiuose, rinkti reikiamus rodiklius ir automatiškai išjungti tinklą.

„MixBytes Tank“ leidžia sutaupyti pinigų debesies serveriuose, automatiškai sumažinant nereikalingus išteklius po bandymo. Kitas išskirtinis bruožas yra „Molecule“ paketo naudojimas, leidžiantis kūrėjui išbandyti norimos blokų grandinės diegimą vietoje.

„MixBytes Tank“ leidžia anksti aptikti algoritmų kliūtis ir klaidas, kurios atsiranda realiuose tinkluose, kuriuose yra daug geografiškai paskirstytų serverių ir klientų. Bakas padės suprasti, kas atsitiks mazguose, jei klientai siųs operacijas su tam tikru TPS labai pakartojamomis sąlygomis ir, jei reikia, su realiu mazgų skaičiumi skirtinguose žemynuose.

Trumpa blokų grandinės testavimo ir lyginamosios analizės įrankių apžvalga

Whiteblock Genesis yra Ethereum pagrindu veikiančių blokų grandinių testavimo platforma. Šis įrankis turi gana platų funkcionalumą: leidžia paleisti tinklą, sukurti jame reikiamą skaičių paskyrų, pakelti reikiamą klientų skaičių, sukonfigūruoti tinklo topologiją, nurodyti pralaidumo ir paketų praradimo parametrus bei atlikti testą.

Whiteblock Genesis teikia savo bandymų įrenginius. Kūrėjams tereikia nurodyti testavimo parametrus, paleisti juos naudodami paruoštą API ir gauti rezultatus naudodami patogią prietaisų skydelį.

Whiteblock Genesis leidžia sukonfigūruoti gana išsamų testą, kurį platforma automatiškai atliks kiekvieną reikšmingą kodo pakeitimą. Tai leis ankstyvoje stadijoje pastebėti klaidas ir iš karto įvertinti pakeitimų įtaką svarbiems tinklo parametrams, tokiems kaip operacijos greitis ir mazgų sunaudojami ištekliai.

Madt

Kitas įdomus jaunas produktas, skirtas paskirstytoms sistemoms išbandyti madt. Jis parašytas Python ir leidžia sukurti reikiamą tinklo topologiją bei reikiamą skaičių serverių ir klientų naudojant paprastą konfigūracijos scenarijų (pavyzdys). Po to paslauga diegia tinklą keliuose „Docker“ konteineriuose ir atidaro žiniatinklio sąsają, kurioje galite stebėti pranešimus iš tinklo serverių ir klientų. „Madt“ gali būti naudojamas blokų grandinių testavimui – projekto saugykloje veikia „Kademlia“ protokolu paremtas p2p tinklo testas, kurio metu palaipsniui didinami vėlavimai perduodant duomenis į mazgus ir tikrinama šių duomenų būsena.

Madt pasirodė visai neseniai, tačiau dėl labai lanksčios architektūros jis gali išsivystyti į funkcionalų gaminį.

Kiti sprendimai

Beveik bet kokiam blokų grandinių sisteminės dalies testavimui reikia paleisti preliminarius scenarijus, paruošti sąskaitas ir bandymo sąlygas (tai gali būti konsensuso klaidų, kurios gali generuoti daugybę grandinių šakių, testavimas, kietųjų šakių scenarijų testavimas, sistemos parametrų keitimas ir kt.). Visos šios manipuliacijos skirtingose ​​blokų grandinėse atliekamos skirtingai, todėl komandoms lengviau palaipsniui pritaikyti produktų testavimą ir lyginamąją analizę prie vidinio CI/CD ir naudoti savo kūrimą, kuris palaipsniui tampa sudėtingesnis tobulėjant blokų grandinės funkcionalumui.

Nepaisant to, jau paruoštų sprendimų naudojimas gali labai sutrumpinti šių komandų testavimo laiką, todėl manau, kad ateinančiais metais ši programinė įranga bus aktyviai plėtojama.

išvada

Baigdamas šią trumpą apžvalgą išvardysiu keletą svarbių blokų grandinės testavimo įrankių savybių:

  • Galimybė automatiškai įdiegti blokų grandinės tinklą kartojamomis sąlygomis. Šis veiksnys svarbus kuriant sistemines blokų grandinių dalis: konsensuso algoritmus, baigtinumą, sistemos išmaniąsias sutartis.
  • Sistemos nuosavybės kaina, sunaudoti ištekliai ir patogumas nuolatiniam naudojimui. Šis veiksnys suteikia projektui aukštos kokybės testus už mažus pinigus.
  • Bandymo konfigūracijos lankstumas ir paprastumas. Šis veiksnys padidina tikimybę nustatyti sistemos problemas – mažesnė tikimybė praleisti ką nors svarbaus.
  • Pritaikymas tam tikrų tipų blokų grandinėms. Sukūrus sprendimą, pagrįstą esamu, galima labai pagerinti kokybę ir sumažinti laiko sąnaudas.
  • Gautų rezultatų ir jų tipo (ataskaitų, metrikų, grafikų, žurnalų ir kt.) patogumas ir prieinamumas. Tai absoliučiai būtina, jei norite sekti produkto kūrimo istoriją arba jei jums reikia išsamios „blockchain“ tinklo elgesio analizės.

Sėkmės atliekant bandymus ir tegul jūsų blokų grandinės būna greitos ir atsparios gedimams!

Šaltinis: www.habr.com

Добавить комментарий