Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

Danes so rešitve za testiranje in primerjalno analizo verig blokov prilagojene določeni verigi blokov ali njenim forkom. Obstaja pa tudi več bolj splošnih rešitev, ki se razlikujejo po funkcionalnosti: nekatere med njimi so odprtokodni projekti, druge so na voljo kot SaaS, večina pa je internih rešitev, ki jih je ustvarila skupina za razvoj blockchaina. Vendar pa vsi rešujejo podobne težave. V tem članku sem poskušal na kratko pregledati več izdelkov, zasnovanih posebej za testiranje verig blokov.

Delovanje omrežja blockchain je podobno delovanju porazdeljene baze podatkov, zato se lahko za testiranje uporabljajo podobna orodja in metode. Če želite bolje razumeti, kako se testirajo porazdeljene baze podatkov, si oglejte dober izbor virov in člankov zato. Na primer, zakasnitev je v tem razdeljena na dele članek, in da bi razumeli, kako iščejo hrošče v algoritmih podvajanja, priporočam branje tega člankov.

Opisal bom več priljubljenih rešitev za testiranje in primerjalno analizo verig blokov. Vesel bi bil, če bi v komentarjih opisali druge uporabne programske izdelke za reševanje istih težav.

Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

Začel bom z orodjem, ki vam, čeprav ni ustvarjeno posebej za verige blokov, omogoča učinkovito testiranje njihovega delovanja, pod pogojem, da že obstaja delujoče omrežje, na katerem lahko eksperimentirate. Najpomembnejši dejavnik pri zanesljivosti porazdeljenega sistema je zmožnost nadaljnjega delovanja v primeru težav s strežniki in omrežjem. To so lahko zaostanki v omrežju, polnost diska, nedostopnost zunanjih storitev (DNS), okvare strojne opreme in na stotine drugih razlogov. Če želite preveriti stabilnost vseh sistemov, ki delujejo usklajeno na velikem številu sistemskih strojev, lahko uporabite Gremlin. Uporablja izjemno učinkovit pristop, imenovan Chaos Engineering.

Z uporabo lastnega omrežnega agenta Gremlin ustvari veliko različnih vrst težav na zahtevanem številu strojev: omrežne zakasnitve, preobremenitev katerega koli vira (CPE, disk, pomnilnik, omrežje), onemogoči posamezne protokole itd. Za verige blokov se lahko Gremlin uporablja na strežnikih testne mreže, posnema težave v resničnem življenju in opazuje vedenje omrežja. Z njim lahko razvijalci in skrbniki v nadzorovanem okolju opazujejo, kaj se bo zgodilo, če se sistem zruši ali ko se posodobi koda. V tem primeru mora biti omrežje vnaprej konfigurirano in uvedeno ter konfigurirano za zbiranje potrebnih meritev.

Gremlin je priročno orodje za arhitekte, devops in varnostne strokovnjake ter univerzalna rešitev za testiranje vseh že pripravljenih in delujočih porazdeljenih sistemov, vključno z verigami blokov.

Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

Hyperledger Caliper je veliko bolj specializirana rešitev Hyperledger čeljust. Trenutno Caliper podpira več blokovnih verig hkrati - predstavnike družine Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), pa tudi Ethereum in omrežje FISCO BCOS.

Z uporabo Caliperja lahko nastavite topologijo omrežja blockchain in pogodbe za testiranje ter opišete konfiguracijo vozlišča. Vozlišča verige blokov so dvignjena v docker vsebnikih na enem stroju. Nato lahko izberete potrebno testne konfiguracije in po zagonu prejmete datoteko s poročilom o rezultatih testa. Celoten seznam meritev Caliper in primerjalnega pristopa lahko najdete tukaj Meritve uspešnosti Hyperledger Blockchain, to je odličen članek, če vas zanima tema primerjalne analize blockchaina. Zbirko metrik lahko nastavite tudi v ločeni Prometheus/Grafana.

Hyperledger Caliper je orodje namenjeno razvijalcem in sistemskim arhitektom, saj zagotavlja ponovljivost testov ter avtomatizacijo testiranja in primerjalnega testiranja. Uporablja se pri razvoju jedra verig blokov: konsenznih algoritmov, virtualnega stroja za obdelavo pametnih pogodb, ravni enakovrednih in drugih sistemskih mehanizmov.

Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

MixBytes Tank je orodje, ki se je pojavilo v procesu razvoja algoritmov soglasja in končnosti za omrežja, ki temeljijo na EOS, in testiranja paraverig, ki temeljijo na paritetnem substratu (Polkadot). Po funkcionalnosti je blizu Hyperledger Caliper, saj vam omogoča zbiranje pomembnih meritev iz vozlišč katerega koli porazdeljenega sistema in odjemalskih strojev, na katerih se izvajajo testni skripti.

MixBytes Tank uporablja več storitev v oblaku (Digital Ocean, Google Cloud Engine itd.), v katerih lahko zažene številna vozlišča, izvede predhodne konfiguracijske postopke, izvaja več primerjalnih testov vzporedno na različnih napravah, zbira potrebne meritve in samodejno zaustavi omrežje.

MixBytes Tank vam omogoča, da prihranite denar na strežnikih v oblaku s samodejnim zmanjšanjem nepotrebnih virov po preizkusu. Druga posebnost je uporaba paketa Molecule, ki razvijalcu omogoča lokalno testiranje uvedbe želene verige blokov.

MixBytes Tank vam omogoča zgodnje odkrivanje ozkih grl in napak v algoritmih, ki se pojavljajo v realnih omrežjih z velikim številom geografsko porazdeljenih strežnikov in odjemalcev. Rezervoar vam bo pomagal razumeti, kaj se bo zgodilo na vozliščih, če odjemalci pošiljajo transakcije z danim tps v zelo ponovljivih pogojih in z dejanskim številom vozlišč, razpršenih po različnih celinah, če je potrebno.

Kratek pregled orodij za testiranje in primerjalno analizo verige blokov

Whiteblock Genesis je platforma za testiranje blokovnih verig, ki temeljijo na Ethereumu. To orodje ima precej široko funkcionalnost: omogoča vam, da zaženete omrežje, ustvarite zahtevano število računov v njem, povečate zahtevano število odjemalcev, konfigurirate topologijo omrežja, določite parametre pasovne širine in izgube paketov ter izvedete test.

Whiteblock Genesis ponuja lastne zmogljivosti za testiranje. Razvijalci morajo samo določiti testne parametre, jih zagnati z že pripravljenim API-jem in dobiti rezultate s priročno nadzorno ploščo.

Whiteblock Genesis vam omogoča, da konfigurirate dokaj podroben test, ki ga bo platforma samodejno izvedla za vsako pomembno spremembo kode. To vam bo omogočilo, da ujamete napake v zgodnji fazi in takoj ocenite vpliv sprememb na pomembne parametre omrežja, kot so hitrost transakcij in viri, ki jih porabijo vozlišča.

Madt

Še en zanimiv mlad izdelek za testiranje porazdeljenih sistemov je madt. Napisan je v Pythonu in omogoča ustvarjanje zahtevane omrežne topologije ter zahtevanega števila strežnikov in odjemalcev z uporabo preprostega konfiguracijskega skripta (Primer). Po tem storitev razmesti omrežje v več vsebnikih Docker in odpre spletni vmesnik, v katerem lahko opazujete sporočila strežnikov in odjemalcev omrežja. Madt se lahko uporablja za testiranje verig blokov - repozitorij projekta ima test omrežja p2p, ki temelji na protokolu Kademlia, pri katerem se zamude pri dostavi podatkov vozliščem postopoma povečujejo in preverja status teh podatkov.

Madt se je pojavil šele pred kratkim, vendar se lahko glede na zelo prilagodljivo arhitekturo razvije v funkcionalen izdelek.

Druge rešitve

Skoraj vsako testiranje sistemskega dela verig blokov zahteva izvajanje predhodnih skriptov, pripravo računov in pogojev za test (to je lahko testiranje konsenznih napak, ki lahko ustvarijo številne razcepe verig, testiranje scenarijev hard fork, spreminjanje sistemskih parametrov itd.). Vse te manipulacije se v različnih verigah blokov izvajajo različno, zato je ekipam lažje postopoma prilagoditi testiranje izdelkov in primerjalno analizo internemu CI/CD ter uporabiti lasten razvoj, ki z razvojem funkcionalnosti verige blokov postopoma postane kompleksnejši.

Kljub temu lahko uporaba že pripravljenih rešitev močno skrajša čas testiranja za te ekipe, zato menim, da se bo ta programska oprema aktivno razvijala v naslednjih letih.

Zaključek

Za zaključek tega kratkega pregleda bom naštel nekaj pomembnih značilnosti orodij za testiranje blockchaina:

  • Možnost samodejne postavitve omrežja blockchain v ponovljivih pogojih. Ta dejavnik je pomemben pri razvoju sistemskih delov verig blokov: algoritmi soglasja, dokončnost, sistemske pametne pogodbe.
  • Stroški lastništva sistema, porabljeni viri in udobje stalne uporabe. Ta dejavnik zagotavlja projektu visokokakovostne teste za malo denarja.
  • Fleksibilnost in enostavnost testne konfiguracije. Ta dejavnik poveča možnosti za odkrivanje sistemskih težav – manj je možnosti, da bi kaj pomembnega spregledali.
  • Prilagajanje za posebne vrste verig blokov. Razvoj rešitve na podlagi obstoječe lahko močno izboljša kakovost in zmanjša časovne stroške.
  • Priročnost in dostopnost dobljenih rezultatov in njihove vrste (poročila, metrike, grafi, dnevniki itd.). To je nujno potrebno, če želite slediti zgodovini razvoja izdelka ali če potrebujete globoko analitiko obnašanja omrežja blockchain.

Vso srečo pri testiranju in naj bodo vaše verige blokov hitre in odporne na napake!

Vir: www.habr.com

Dodaj komentar