
Danes so rešitve za testiranje in benchmarkiranje blokchainov prilagojene določenemu blockchainu ali njegovim fork-om. Vendar pa obstajajo tudi nekatera bolj splošna orodja, ki se razlikujejo po funkcionalnosti: nekatera od njih so odprtokodne rešitve, druge so na voljo kot SaaS, največ pa so notranje rešitve, ki jih ustvarja razvojna ekipa blockchaina. Kljub temu pa vsa ta orodja reševaljajo podobne izzive. V tem članku sem poskušal na kratko obravnavati nekaj produktov, ki so usmerjeni prav v testiranje blockchainov.
Delovanje blockchain omrežja spominja na delovanje distribuirane baze podatkov, zato lahko za testiranje uporabimo podobna orodja in metode. Da bi bolje razumeli, kako testirajo distribuirane baze podatkov, si oglejte dobro zbirko virov in člankov. . Na primer, latenca je podrobno obravnavana v tem. , in da bi razumeli, kako iskanje napak v algoritmih replikacije poteka, priporočam, da se seznanite s tem. .
Opisal bom nekaj priljubljenih rešitev za testiranje in benchmarkiranje blockchainov. Vesel bom, če v komentarjih predstavite druge koristne programske rešitve za reševanje istih izzivov.

Začel bom z orodjem, ki sicer ni bilo ustvarjeno posebej za blockchain, a omogoča učinkovito testiranje njihovega delovanja, pod pogojem, da obstaja že vzpostavljeno omrežje, na katerem lahko eksperimentiramo. Ključni dejavnik zanesljivosti distribuirane sistema je sposobnost nadaljevanja delovanja v primeru težav s strežniki in omrežjem. To so lahko omrežne zamude, preobremenitev diska, nedostopnost zunanjih storitev (DNS), okvare strojne opreme in stotine drugih razlogov. Za preverjanje odpornosti vseh sistemov, ki delujejo usklajeno na številnih napravah, lahko uporabite . Uporablja se izjemno učinkovit pristop, imenovan Chaos Engineering.
Z uporabo lastnega omrežnega agenta Gremlin ustvarja na potrebnem številu naprav različne vrste težav: omrežne zamude, obremenitev katerega koli vira (CPU, disk, pomnilnik, omrežje), onemogoča posamezne protokole itd. Za blockchain lahko Gremlin uporabljamo na strežnikih testne mreže, posnema resnične težave in opazuje obnašanje mreže. S tem lahko razvijalci in administratorji v nadzorovanem okolju opazujejo, kaj se bo zgodilo s sistemom v primeru napak ali pri posodobitvi kode. Ob tem je potrebno mrežo vnaprej konfigurirati in razporediti ter nastaviti zbiranje potrebnih metrik.
Gremlin je priročno orodje za arhitekte, DevOpsove in varnostne strokovnjake ter univerzalna rešitev za testiranje vseh pripravljenih in delujočih distribuiranih sistemov, vključno z blockchaini.

Hyperledger Caliper je veliko bolj specializirana rešitev . Trenutno Caliper podpira več blockchainov iz družine Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), ter Ethereum in mrežo FISCO BCOS.
S pomočjo Caliperja lahko določite topologijo blockchain omrežja in pogodbe za testiranje ter opisujete konfiguracijo vozlišča. Blockchain vozlišča se zagnajo v docker vsebnikih na enem računalniku. Nato lahko izberete zahtevane in po zagonu pridobite datoteko z poročilom o rezultatih testa. S celotnim seznamom metrik Caliperja in pristopa k merjenju zmogljivosti se lahko seznanite tukaj , kar je odličen članek, če vas zanima tema merjenja zmogljivosti blockchainov. Prav tako lahko nastavite zbiranje metrik v ločenem Prometheus/Grafana.
Hyperledger Caliper je orodje, usmerjeno na razvijalce in sistemske arhitekte, saj zagotavlja ponovljivost testov ter avtomatizacijo testiranja in merjenja zmogljivosti. Uporablja se pri razvoju jedra blockchainov: algoritmov konsenza, virtualnih strojev za obdelavo pametnih pogodb, peer-to-peer sloja in drugih sistemskih mehanizmov.

— orodje, ki se je pojavilo med razvojem algoritmov konsenza in dokončnosti za omrežja na osnovi EOS ter testiranjem parčev na osnovi Parity Substrate (Polkadot). Glede funkcionalnosti je podobno Hyperledger Caliper, saj omogoča zbiranje pomembnih metrik z vozli katere koli razdeljene sistema in odjemalskih računalnikov, na katerih delujejo testni skripti.
MixBytes Tank uporablja več oblačnih storitev (Digital Ocean, Google Cloud Engine in druge), v katerih lahko zažene več vozlov, izvede predhodne konfiguracijske postopke, hkrati zažene več benchmark testov na različnih strojih, zbira potrebne metrike in samodejno ugasne omrežje.
MixBytes Tank omogoča ekonomično porabo sredstev za oblačne strežnike, saj samodejno zapre nepotrebne vire po končanem testu. Še ena značilnost je uporaba paketa Molecule, ki omogoča razvijalcu testiranje razporeditve potrebnega blokchaina lokalno.
MixBytes Tank omogoča zgodnje odkrivanje ozkih grl in napak v algoritmih, ki se pojavljajo v realnih omrežjih z veliko število geografsko razporejenih strežnikov in odjemalcev. Tank vam bo pomagal razumeti, kaj se bo zgodilo na vozlih, če bodo odjemalci pošiljali transakcije s predpisanim tps v visoko ponavljajočih se pogojih in s pravim številom vozlov, razporejenih po različnih celinah, če bo potrebno.

Whiteblock Genesis je platforma za testiranje blokchainov na osnovi Ethereum. To orodje ima precej široko funkcionalnost: omogoča zagon omrežja, ustvarjanje potrebnega števila računov, vzpostavitev potrebnega števila odjemalcev, konfiguracijo topologije omrežja, določanje parametrov bandwidth, packetloss in zagon testa.
Whiteblock Genesis zagotavlja lastne zmogljivosti za izvajanje testov. Razvijalcem je dovolj, da navedete parametre testov, jih zaženete z uporabo pripravljenega API-ja in prejmete rezultate z uporabo priročne nadzorne plošče.
Whiteblock Genesis omogoča precej podroben test, ki ga platforma avtomatsko izvede ob vsaki pomembni spremembi kode. To bo omogočilo zgodnje odkrivanje napak in takojšno oceno vpliva sprememb na pomembne parametre omrežja, kot so hitrost obdelave transakcij in sredstva, ki jih porabijo vozli.
Madt
Še en zanimiv mlad izdelek za testiranje porazdeljenih sistemov — . Napisana je v Pythonu in omogoča ustvarjanje potrebne omrežne topologije ter potrebno število strežnikov in odjemalcev s preprostim konfiguracijskim skriptom (). Po tem servis vzpostavi omrežje v več docker kontejnerjih in zažene spletno interfaz, v katerem lahko opazujete sporočila od strežnikov in odjemalcev omrežja. Madt se lahko uporablja za testiranje blockchainov — v repozitoriju projekta je test p2p omrežja na osnovi protokola Kademlia, v katerem se postopoma povečujejo zakasnitve pri dostavi podatkov na vozlišča in preverja stanje teh podatkov.
Madt je bil predstavljen povsem nedavno, a glede na zelo fleksibilno arhitekturo lahko preraste v funkcionalen izdelek.
Druga rešitev
Skoraj vsako testiranje sistemskega dela blockchainov zahteva zagon predhodnih scenarijev, pripravo računov in pogojev za testiranje (to lahko vključuje testiranje napak konsenza, ki lahko povzročijo številne razkolne verige, izvedbo scenarijev hard fork, spremembe sistemskih parametrov itd.). Vse te manipulacije se v različnih blockchainih izvajajo različno, zato je ekipam lažje postopoma prilagajati testiranje in benchmarking izdelka njihovemu notranjemu CI/CD ter uporabljati lastne rešitve, ki se postopoma zapletajo z razvojem funkcionalnosti blockchaina.
Kljub temu lahko uporaba že pripravljenih rešitev močno skrajša čas testiranja teh ekip, zato menim, da se bo ta programska oprema aktivno razvijala v prihodnjih letih.
Zaključek
Zaključujem to kratko pregledovanje s seznamom nekaj pomembnih značilnosti orodij za testiranje blockchainov:
- Možnost samodejnega uvajanja blockchain omrežja v ponovljivih pogojih. Ta dejavnik je pomemben pri razvoju sistemskih delov blockchainov: algoritmov konsenza, končnosti, sistemskih pametnih pogodb.
- Cena lastništva sistema, porabljeni viri in enostavnost za stalno uporabo. Ta dejavnik zagotavlja projektu vrhunske teste za majhne stroške.
- Fleksibilnost in preprostost konfiguracije testov. Ta dejavnik povečuje možnosti odkrivanja težav sistema — manjša verjetnost, da se spregleda kaj pomembnega.
- Prilagoditev za specifične vrste blockchainov. Razvoj rešitve na osnovi že obstoječega lahko močno izboljša kakovost in skrajša časovne stroške.
- Udobje in dostopnost pridobljenih rezultatov ter njihov tip (poročila, metrike, grafi, dnevniki, itd.). To je povsem nujno, če želite spremljati zgodovino razvoja izdelka ali če potrebujete globoko analitiko obnašanja blockchain omrežja.
Srečno pri testiranju in naj bodo vaši blockchaini hitri ter zanesljivi!
Izvor: habr.com
