
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
