
Sot shërbimet për testimin dhe benchmarking-un e blockchain-ëve janë të optizuara për një blockchain të caktuar ose degët e tij. Por ka edhe disa zgjidhje më të përgjithshme që dallohen për funksionalitetin e tyre: disa nga ato janë projekte me kod të hapur, të tjera ofrohen si SaaS, por pjesa më e madhe janë zgjidhje të brendshme të krijuara nga ekipi i zhvillimit të blockchain-it. Megjithatë, të gjitha ato zgjidhin detyra të ngjashme. Në këtë artikull do të përpiqem të shqyrtoj shkurtimisht disa produkte që janë specifikisht të dizajnuara për testimin e blockchain-ëve.
Funksionimi i rrjetit blockchain ngjason me atë të një baze të dhënash të shpërndara, prandaj për testimin e tij mund të aplikohen mjete dhe metoda të ngjashme. Për të kuptuar më mirë se si testohet baza e të dhënave të shpërndara, shihni një seleksion të mirë burimesh dhe artikujsh. . Për shembull, latenca është shpjeguar hollësisht në këtë , dhe për të kuptuar se si kërkohen gabime në algoritmet e replikimit, rekomandoj që të njiheni me këtë .
Do të përshkruaj disa zgjidhje të njohura për testimin dhe benchmarking-un e blockchain-ëve. Do të isha i lumtur nëse në komentet e mëposhtme do të përmendni produkte të tjera të dobishme softuerike për të zgjidhur të njëjtat detyra.

Do ta filloj me një mjet, edhe pse nuk është krijuar posaçërisht për blockchain-e, por lejon testimin efikas të funksionimit të tyre në rast se ekziston një rrjet i aktivizuar mbi të cilin mund të eksperimentoni. Një faktor kyç për qëndrueshmërinë e një sistemi të shpërndarë është aftësia për të vazhduar punën në rast të problemeve me serverët dhe rrjetin. Këto mund të jenë vonesa në rrjet, mbingarkesë disku, papërfshirje të shërbimeve të jashtme (DNS), defekte harduerike dhe qindra arsyesh të tjera. Për të kontrolluar qëndrushmërinë e çdo sistemi që funksionon në përputhje me një numër të madh makinerish, mund të përdoren . Në të përdoret një qasje tejet efektive, e quajtur Inxhinieria e Kaosit.
Me falĂ« agjentit tĂ« tij tĂ« rrjetit, Gremlin krijon shumĂ« lloje problemesh nĂ« numrin e nevojshĂ«m tĂ« makinave: vonesa nĂ« rrjet, ngarkesĂ«n e çdo burimi (CPU, disk, memorie, rrjet), çaktivizon protokolle tĂ« veçanta, etj. PĂ«r blockchain-at, Gremlin mund tĂ« pĂ«rdoret nĂ« serverĂ«t e rrjetit tĂ« testit, duke imituar probleme tĂ« vĂ«rteta dhe duke vĂ«zhguar sjelljen e rrjetit. Me ndihmĂ«n e tij, zhvilluesit dhe administratorĂ«t nĂ« njĂ« mjedis tĂ« kontrolluar mund tĂ« vĂ«zhgojnĂ« se çfarĂ« do tĂ« ndodhte nĂ« sistem nĂ« rast tĂ« çârregullimeve ose gjatĂ« pĂ«rditĂ«simit tĂ« kodit. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, rrjeti duhet tĂ« konfigurohet dhe vendoset paraprakisht, si dhe tĂ« konfigurohen metrikat e nevojshme.
Gremlin është një mjet i përshtatshëm për arkitektët, devops-ët dhe profesionistët e sigurisë, si dhe një zgjidhje universale për testimin e çdo sistemi të shpërndarë të gatshëm dhe të ngarkuar, përfshirë blockchain-at.

Hyperledger Caliper është një zgjidhje shumë më e specializuar . Aktualisht Caliper mbështet disa blockchain të familjes Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), si dhe Ethereum dhe rrjetin FISCO BCOS.
Me Caliper mund të përcaktoni topologjinë e rrjetit blockchain dhe kontratat për testim, si dhe të përshkruani konfigurimin e nodit. Nodat e blockchain-it ngrihen në konteinerë docker në një makinë. Më pas, mund të zgjidhni konfigurimet e nevojshme dhe të merrni një skedar me raportin për rezultatet e testit pas ekzekutimit. Mund të konsultoheni këtu për listën e plotë të metrikave Caliper dhe qasjen ndaj benchmarking-ut , kjo është një artikull i shk excellent te, nëse ju intereson tema e benchmarking-ut të blockchain-eve. Gjithashtu, mund të konfiguroni mbledhjen e metrikave në një Prometheus/Grafana të veçantë.
Hyperledger Caliper është një mjet i orientuar ndaj zhvilluesve dhe arkitektëve të sistemeve, pasi siguron ripërsëritshmëri të testeve dhe automatizimin e testimit dhe benchmarking-ut. Përdoret në zhvillimin e bërthamës së blockchain-eve: algoritme konsensusi, një makinë virtuale për procesimin e kontratave inteligjente, shtresën peer-to-peer dhe mekanizma të tjerë sistemikë.

â njĂ« mjet qĂ« ka dalĂ« nĂ« procesin e zhvillimit tĂ« algoritmeve tĂ« konsensusit dhe finalitetit pĂ«r rrjetet e bazuara nĂ« EOS dhe testimin e parachain-eve mbi bazĂ«n e Parity Substrate (Polkadot). NĂ« funksionalitet Ă«shtĂ« i ngjashĂ«m me Hyperledger Caliper, pasi lejon grumbullimin e metrikave tĂ« rĂ«ndĂ«sishme nga nodet e çdo sistemi tĂ« shpĂ«rndarĂ« dhe nga makinat klient qĂ« punojnĂ« skenarĂ«t testues.
MixBytes Tank përdor disa shërbime cloud (Digital Ocean, Google Cloud Engine etj.), ku mund të nisë shumë nodet, të kryejë procedurat e konfigurimit paraprak, të nisë në mënyrë paralele disa benchmark-e në makina të ndryshme, të mbledhë metrikat e nevojshme dhe të mbyllë automatikisht rrjetin.
MixBytes Tank lejon shpenzimin ekonomik të fondeve për serverat cloud, duke mbyllur automatikisht burimet e panevojshme pas kryerjes së testit. Një karakteristikë tjetër dalluese është përdorimi i paketës Molecule, e cila lejon zhvilluesin të testojë shpërndarjen e një bllokçaini të nevojshëm në mënyrë lokale.
MixBytes Tank lejon identifikimin e ngushticave dhe gabimeve në algoritme në fazat e hershme, të cilat ndodhin në rrjetet reale me një numër të madh serverash dhe klientësh gjeografikisht të shpërndarë. Tanka do t'ju ndihmojë të kuptoni se çfarë do të ndodhë në nodet nëse klientët dërgojnë transaksione me një tps të caktuar në kushte të përsëritura me saktësi dhe me numrin e vërtetë të nodëve, të shpërndarë në kontinente të ndryshme, nëse është e nevojshme.

Whiteblock Genesis â Ă«shtĂ« njĂ« platformĂ« pĂ«r testimin e bllokçain-eve tĂ« bazuara nĂ« Ethereum. Ky mjet ka njĂ« funksionalitet tĂ« gjerĂ«: lejon krijimin e njĂ« rrjeti, krijimin e numrit tĂ« nevojshĂ«m tĂ« llogarive, ngritjen e numrit tĂ« nevojshĂ«m tĂ« klientĂ«ve, konfigurojtopologjinĂ« e rrjetit, pĂ«rcaktimin e parametrave tĂ« bandwidth, packetloss dhe fillimin e testit.
Whiteblock Genesis ofron burimet e saj për të kryer testet. Zhvilluesit mjafton të përcaktojnë parametrat e testeve, t'i fillojnë ato përmes një API të gatshëm dhe të marrin rezultatet duke përdorur një dashboard të rehatshëm.
Whiteblock Genesis lejon konfigurimin e testeve mjaft të detajuara, të cilat platforma do t'i kryejë automatikisht për çdo ndryshim të rëndësishëm në kod. Kjo do të lejojë kapjen e gabimeve në fazat e hershme dhe menjëherë vlerësimin e ndikimit të ndryshimeve në parametrat e rëndësishëm të rrjetit, si shpejtësia e transaksioneve dhe burimet e përdorura nga nodet.
Madt
NjĂ« produkt tjetĂ«r interesant i ri pĂ«r provimin e sistemeve tĂ« shpĂ«rndara â . Ai Ă«shtĂ« shkruar nĂ« Python dhe lejon tĂ« krijoni topologjinĂ« e nevojshme tĂ« rrjetit dhe numrin e duhur tĂ« serverĂ«ve dhe klientĂ«ve pĂ«rmes njĂ« skenari konfigurimi tĂ« thjeshtĂ« (). Pas kĂ«saj, shĂ«rbimi vendos rrjetin nĂ« disa kontenierĂ« docker dhe ngre njĂ« ndĂ«rfaqe web, ku mund tĂ« vĂ«zhgoni mesazhet nga serverĂ«t dhe klientĂ«t e rrjetit. Madt mund tĂ« pĂ«rdoret pĂ«r testimin e blokçeinĂ«ve â nĂ« depozitat e projektit ka njĂ« test tĂ« rrjetit p2p tĂ« bazuar nĂ« protokollin Kademlia, ku gradualisht rriten vonesat nĂ« dĂ«rgimin e tĂ« dhĂ«nave nĂ« nodet dhe verifikohet statusi i kĂ«tyre tĂ« dhĂ«nave.
Madt ka lindur shumë kohët e fundit, por duke marrë parasysh arkitekturën jashtëzakonisht fleksibël, mund të zhvillohet në një produkt funksional.
Zgjidhje të tjera
Praktikisht çdo provim i pjesës sistemore të blokçeinëve kërkon aktivizimin e skenarëve paraprak, përgatitjen e llogarive dhe kushteve për testimin (kjo mund të jetë provimi i gabimeve të konsensusit, që mund të shkaktojnë shumë forka të zinxhirëve, provimi i skenarëve të hardfork-ut, ndryshimet e parametrave sistemorë, etj.). Të gjitha këto manipulime në blloqe të ndryshme bëhen ndryshe, prandaj ekipet e kanë më të lehtë të adaptojnë gradualisht testimin dhe benchmark-un e produktit në CI/CD-në e brendshme dhe të përdorin përpjekjet e veta, të cilat gradualisht komplikohet me zhvillimin e funksionalitetit të bllokçein-it.
Megjithatë, përdorimi i zgjidhjeve të gatshme mund të zvogëlojë ndjeshëm kohën e testimit për këto ekipe, prandaj besoj se ky soft do të zhvillohet aktivisht në vitet e ardhshme.
Përfundim
Duke përfunduar këtë përmbledhje të vogël, do të përmend disa karakteristika të rëndësishme të mjeteve për testimin e blokçeinëve:
- Mundësia për shpërndarjen automatike të rrjetit blokçein në kushte të përsëritshme. Ky faktor është i rëndësishëm gjatë zhvillimit të pjesëve sistemore të bllokçeinëve: algoritmeve të konsensusit, finalitetit, kontratave smart sistemore.
- Ămimi i pronĂ«sisĂ« sĂ« sistemit, burimet e konsumuar dhe lehtĂ«sia pĂ«r pĂ«rdorim tĂ« vazhdueshĂ«m. Ky faktor i ofron projektit teste tĂ« klasit tĂ« lartĂ« pĂ«r njĂ« çmim tĂ« vogĂ«l.
- Fleksibiliteti dhe thjeshtĂ«sia e konfigurimit tĂ« testeve. Ky faktor rrit mundĂ«sitĂ« pĂ«r tĂ« zbuluar probleme tĂ« sistemit â Ă«shtĂ« mĂ« pak e mundur tĂ« humbasĂ«sh ndonjĂ« gjĂ« tĂ« rĂ«ndĂ«sishme.
- Personalizimi për lloje specifike të blockchain-eve. Zhvillimi i një zgjidhjeje mbi bazën e asaj që ekziston tashmë mund të përmirësojë ndjeshëm cilësinë dhe të reduktojë shpenzimet e kohës.
- Komoditeti dhe aksesueshmëria e rezultateve të marra dhe lloji i tyre (raporte, metrike, grafikë, regjistra, etj.). Kjo është absolutisht e nevojshme nëse dëshironi të ndiqni historinë e zhvillimit të produktit, ose ju nevojitet një analiza e thellë e sjelljes së rrjetit blockchain.
Suksese në testim dhe le të jenë blockchain-et tuaja të shpejtë dhe të qëndrueshme!
Burimi: habr.com
