
Danas su rješenja za testiranje i benchmarkiranje blockchaina prilagođena određenom blockchainu ili njegovim forkovima. No, postoje i neka općenitija rješenja koja se razlikuju po funkcionalnosti: neka od njih su open-source projekti, druga se pružaju kao SaaS, dok je veći dio internih rješenja koja kreira razvojni tim blockchaina. Ipak, svi oni rješavaju slične zadatke. U ovom članku ću se kratko osvrnuti na nekoliko proizvoda koji su posebno usmjereni na testiranje blockchaina.
Rad blockchain mreže podsjeća na rad distribuirane baze podataka, stoga se za testiranje mogu primijeniti slična sredstva i metode. Da biste bolje razumjeli kako se testiraju distribuirane baze podataka, pogledajte dobru kolekciju resursa i članaka . Na primjer, latencija je detaljno objašnjena u ovoj , a da biste razumjeli kako se traže greške u algoritmima replikacije, preporučujem da pogledate ovu .
Opisat ću nekoliko popularnih rješenja za testiranje i benchmarkiranje blockchaina. Bit će mi drago ako u komentarima navedete druga korisna softverska rješenja za iste zadatke.

Počet ću s alatom koji, iako nije stvoren isključivo za blockchaine, omogućava učinkovito testiranje njihovog rada pod uvjetom da postoji već pokrenuta mreža na kojoj se može eksperimentirati. Ključni faktor pouzdanosti distribuiranog sustava je sposobnost nastavka rada u slučaju problema s poslužiteljima i mrežom. To mogu biti mrežne zastoje, preopterećenje diska, nedostupnost vanjskih usluga (DNS), hardverski kvarovi i stotine drugih razloga. Da biste provjerili otpornost bilo kojih sustava koji rade u skladu na velikom broju strojeva, možete koristiti . U njemu se koristi izuzetno učinkovit pristup poznat kao Chaos Engineering.
Uz vlastitu mrežnu agenta, Gremlin stvara različite vrste problema na potrebnom broju strojeva: mrežne kašnjenja, preopterećenje bilo kojeg resursa (CPU, disk, memorija, mreža), isključuje određene protokole, itd. Za blockchain, Gremlin se može koristiti na serverima testne mreže, emulirajući stvarne probleme i promatrajući ponašanje mreže. Pomoću njega, programeri i administratori u kontroliranom okruženju mogu promatrati što će se dogoditi u sustavu u slučaju grešaka ili prilikom ažuriranja koda. Pri tome je potrebno unaprijed konfigurirati i postaviti mrežu, kao i osigurati prikupljanje potrebnih metrike.
Gremlin je praktičan alat za arhitekte, DevOps stručnjake i sigurnosne inženjere, te univerzalno rješenje za testiranje bilo kojeg gotovog i pokrenutog distribuiranog sustava, uključujući blockchain.

Hyperledger Caliper je specijaliziranije rješenje . Trenutno Caliper podržava više blockchainova iz obitelji Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), kao i Ethereum i mrežu FISCO BCOS.
Pomoću Calipera možete odrediti topologiju blockchain mreže i ugovore za testiranje, kao i opisati konfiguraciju nodo. Nodi blockchaina se podižu u docker kontejnerima na jednom stroju. Nadalje, možete odabrati potrebne i dobiti datoteku s izvještajem o rezultatima testa nakon pokretanja. S punim popisom metrika Calipera i pristupom benchmarkingu možete se upoznati ovdje , ovo je odličan članak ako vas zanima tema benchmarkinga blockchaina. Također, možete konfigurirati prikupljanje metrika u zasebnom Prometheus/Grafana.
Hyperledger Caliper je alat usmjeren na programere i sustavne arhitekte, jer osigurava ponovljivost testova i automatizaciju testiranja i benchmarkinga. Koristi se prilikom razvoja jezgre blockchaina: algoritama konsenzusa, virtualne mašine za procesiranje pametnih ugovora, peer-to-peer sloja i drugih sistemskih mehanizama.

— alat koji je nastao tijekom razvoja konsenzus algoritama i finalnosti za EOS bazirane mreže te testiranja parchainova na Parity Substrate (Polkadot). Funkcionalno je sličan Hyperledger Caliperu, jer omogućuje prikupljanje važnih metrika s nodova bilo koje distribuirane sustave i klijentnih strojeva na kojima se izvode testni skripti.
MixBytes Tank koristi nekoliko oblaka usluga (Digital Ocean, Google Cloud Engine i dr.), gdje može pokrenuti brojne nodove, izvršiti preliminarne konfiguracijske postupke, paralelno pokrenuti nekoliko benchmarkova na različitim strojevima, prikupiti potrebne metrike i automatski isključiti mrežu.
MixBytes Tank omogućava ekonomično korištenje sredstava za oblačne servere, automatski isključujući nepotrebne resurse nakon provođenja testa. Još jedna karakteristika je korištenje paketa Molecule, koji omogućuje programeru testiranje lokalnog raspoređivanja potrebnog blockchaina.
MixBytes Tank omogućava otkrivanje uskih grla i grešaka u algoritmima u ranim fazama, koje se javlja u stvarnim mrežama s velikim brojem geografski distribuiranih servera i klijenata. Tank će vam pomoći razumjeti što će se dogoditi na nodovima ako klijenti šalju transakcije s određenim tps u visoko ponovljivim uvjetima i s realnim brojem nodova raspoređenih po različitim kontinentima ako je potrebno.

Whiteblock Genesis je platforma za testiranje blockchaina temeljenih na Ethereum. Ovaj alat ima široku funkcionalnost: omogućuje pokretanje mreže, stvaranje potrebnog broja računa, podizanje potrebnog broja klijenata, konfiguriranje topologije mreže, postavljanje parametara bandwidth, packetloss i pokretanje testa.
Whiteblock Genesis pruža vlastite resurse za provođenje testova. Programerima je dovoljno navesti parametre testova, pokrenuti ih pomoću gotovog API-a i dobiti rezultate koristeći praktični dashboard.
Whiteblock Genesis omogućuje konfiguraciju detaljnog testa koji će platforma automatski provoditi na svaku značajnu promjenu koda. To će omogućiti rano otkrivanje grešaka i trenutno ocjenjivanje utjecaja promjena na važne parametre mreže, poput brzine transakcija i resursa koje nodovi koriste.
Madt
Još jedan zanimljiv mladi proizvod za testiranje distribuiranih sustava — . Napisano je na Pythonu i omogućuje stvaranje potrebne topologije mreže te potreban broj poslužitelja i klijenata pomoću jednostavnog konfiguracijskog skripta (). Nakon toga, usluga postavlja mrežu u nekoliko docker kontejnera i pokreće web sučelje gdje se mogu pratiti poruke od poslužitelja i klijenata mreže. Madt se može koristiti za testiranje blockchaina — u repozitoriju projekta postoji test p2p mreže temeljen na Kademlia protokolu, gdje se postupno povećavaju kašnjenja u dostavi podataka čvorovima i provjerava status tih podataka.
Madt je nedavno nastao, ali s obzirom na vrlo fleksibilnu arhitekturu, može se razviti u funkcionalan proizvod.
Druga rješenja
Gotovo svako testiranje sistemskog dijela blockchaina zahtijeva pokretanje preliminarnih scenarija, pripremu računa i uvjeta za testiranje (to može biti testiranje grešaka konsenzusa koje mogu uzrokovati brojne forke lanaca, testiranje hard forka, izmjene sistemskih parametara itd.). Sve te manipulacije u različitim blockchainima provode se na različite načine, pa je timovima lakše postupno prilagoditi testiranje i benchmarkiranje proizvoda interno CI/CD-u i koristiti vlastite resurse koje se postupno kompliciraju kako se funkcionalnost blockchaina razvija.
Ipak, korištenje gotovih rješenja može znatno skratiti vrijeme testiranja timovima, pa vjerujem da će se ovaj softver aktivno razvijati u narednim godinama.
Zaključak
Zaključujući ovaj mali pregled, navest ću nekoliko važnih karakteristika alata za testiranje blockchaina:
- Mogućnost automatskog postavljanja blockchain mreže u ponovljivim uvjetima. Ovaj faktor je važan pri razvoju sistemskih dijelova blockchaina: algoritama konsenzusa, konačnosti, sistemskih pametnih ugovora.
- Cijena vlasništva sustava, potrošeni resursi i jednostavnost za stalnu upotrebu. Ovaj faktor osigurava projektu vrhunske testove uz male troškove.
- Fleksibilnost i jednostavnost konfiguracije testova. Ovaj faktor povećava šanse za otkrivanje problema sustava — manja vjerojatnost da će se nešto važno propustiti.
- Prilagodba za specifične tipove blockchaina. Razvoj rješenja temeljenog na postojećem može značajno poboljšati kvalitetu i skratiti vrijeme potrebno za implementaciju.
- Jednostavnost i dostupnost dobivenih rezultata i njihov tip (izvještaji, metrike, grafikoni, logovi itd.). Ovo je potpuno neophodno ako želite pratiti povijest razvoja proizvoda ili vam je potrebna duboka analiza ponašanja blockchain mreže.
Sretno u testiranju i neka vaši blockchaini budu brzi i otporni na greške!
Izvor: habr.com
