
A mai tesztelési és benchmarkolási megoldások a blokkláncok esetében elég specifikusak, és általában egy adott blokkláncra vagy annak forkjaira vannak kiélezve. Ugyanakkor léteznek általánosabb megoldások is, amelyek különböző funkciókkal rendelkeznek: ezek közül néhány nyílt forráskódú projekt, mások SaaS formájában elérhetők, de a legnagyobb része belső megoldás, amelyet a blokklánc fejlesztőcsapata készített. Mindazonáltal mindegyik hasonló problémák megoldására összpontosít. Ebben a cikkben igyekeztem röviden bemutatni néhány olyan terméket, amely kifejezetten a blokkláncok tesztelésére irányul.
A blokklánc hálózat működése a elosztott adatbázisok működésére hasonlít, ezért tesztelésükhöz hasonló eszközök és módszerek alkalmazhatók. Ahhoz, hogy jobban megértsük, hogyan tesztelik az elosztott adatbázisokat, nézze meg ezt a jó összegyűjtött forrást és cikket. . Például a latency részletesen bemutatásra került ebben a cikkben, , és ahhoz, hogy megértsük, hogyan keresnek hibákat a replikációs algoritmusokban, javaslom, hogy ismerkedjen meg ezzel a forrással. .
Néhány népszerű megoldást fogok bemutatni a blokkláncok tesztelésére és benchmarkolására. Örülnék, ha a hozzászólásokban más hasznos szoftvertermékeket is megosztana, amelyek ugyanazokkal a feladatokkal foglalkoznak.

Elsőként egy olyan eszközt mutatok be, amely nem kifejezetten blokkláncokhoz készült, de lehetővé teszi a működésük hatékony tesztelését, feltéve, hogy már működő hálózat áll rendelkezésre, amelyen kísérletezni lehet. A megbízható elosztott rendszerek egyik legfontosabb tényezője a képesség, hogy fennmaradjanak, ha problémák lépnek fel a szerverekkel vagy a hálózattal kapcsolatban. Ezek lehetnek hálózati késlekedések, lemezmegtelés, külső szolgáltatások (DNS) elérhetetlensége, hardverhibák és sok más ok. Azoknak a rendszereknek a stabilitásának ellenőrzésére, amelyek egy nagy számú gépen koherensen működnek, használható . Ez egy rendkívül hatékony megközelítést alkalmaz, amelyet Chaos Engineering-nek neveznek.
A Gremlin saját hálózati ügynökével különböző típusú problémákat generál a szükséges gépek számán, mint például hálózati késések, bármilyen erőforrás (CPU, lemez, memória, hálózat) túlterhelése, különböző protokollok letiltása stb. A blokkláncok esetében a Gremlin használható a teszthálózat szerverein, valós problémákat szimulálva és figyelve a hálózati viselkedést. A fejlesztők és az adminisztrátorok kontrollált környezetben megfigyelhetik, hogy mi történik a rendszerben hibák vagy a kód frissítése esetén. E közben a hálózatot előre konfigurálni és telepíteni kell, valamint be kell állítani a szükséges metrikák gyűjtését.
A Gremlin egy kényelmes eszköz az építészek, devopsok és biztonsági szakemberek számára, valamint univerzális megoldás bármilyen már működő és éles elosztott rendszerek, köztük blokkláncok tesztelésére.

A Hyperledger Caliper egy sokkal specializáltabb megoldás . Jelenleg a Caliper támogat több blokkláncot a Hyperledger családból (Fabric, Sawtooth, Iroha, Burrow, Besu), valamint az Ethereumot és a FISCO BCOS hálózatot.
A Caliper segítségével meghatározható a blokklánc-hálózat topológiája és a teszteléshez szükséges szerződések, valamint a csomópont konfigurációjának leírása. A blokklánc csomópontok egy gépen docker konténerekben futnak. Ezután választhatja ki a szükséges és a teszt futtatása után megkaphatja a teszteredmények jelentését. A Caliper összes metrikája és a benchmarkolás megközelítése itt érhető el , ez egy nagyszerű cikk, ha érdekli a blokkláncok benchmarkolásának témája. A metrikák gyűjtése külön Prometheus/Grafana beállításra is konfigurálható.
A Hyperledger Caliper egy fejlesztőkre és rendszermérnökökre fókuszáló eszköz, mivel biztosítja a tesztek megismételhetőségét és a tesztelés, valamint a benchmarkolás automatizálását. A blokkláncok magjának fejlesztésénél használják: konszenzus algoritmusok, okos szerződések feldolgozásához virtuális gép, peer-to-peer réteg és más rendszerszerkezeti mechanizmusok.

— egy eszköz, amely az EOS alapú hálózatok konszenzus- és véglegességi algoritmusainak fejlesztése során keletkezett, valamint a Parity Substrate (Polkadot) alapú parachainok tesztelésére szolgál. Funkcionalitásában hasonló a Hyperledger Caliperhez, mivel lehetővé teszi fontos metrikák gyűjtését bármely elosztott rendszer csomópontjaitól és azokon a kliensgépeken, ahol tesztelő szkriptek futnak.
A MixBytes Tank több felhőszolgáltatást használ (Digital Ocean, Google Cloud Engine stb.), amelyekben képes sok csomópontot indítani, előzetes konfigurációs eljárásokat végrehajtani, párhuzamosan több benchmark-ot futtatni különböző gépeken, összegyűjteni a szükséges metrikákat, és automatikusan leállítani a hálózatot.
A MixBytes Tank lehetővé teszi, hogy hatékonyan költsük el a pénzeszközöket felhőszerverekre, automatikusan leállítva a felesleges erőforrásokat a teszt elvégzése után. Egy másik megkülönböztető tulajdonsága a Molecule csomag használata, amely lehetővé teszi a fejlesztők számára a szükséges blokklánc helyi tesztelését.
A MixBytes Tank lehetővé teszi a szűk keresztmetszetek és hibák korai felfedezését az algoritmusokban, amelyek reális hálózatokban merülnek fel nagy földrajzi szétszórtságú szerverek és kliensek esetén. A Tank segít megérteni, mi történik a csomópontokon, ha a kliensek adott tps-sel tranzakciókat küldenek nagyfokú ismétlődő körülmények között és valós mennyiségű, különböző kontinenseken szétszórt csomóponttal, ha erre van szükség.

A Whiteblock Genesis egy Ethereum alapú blokklánc tesztelő platform. Ez az eszköz széleskörű funkciókkal rendelkezik: lehetővé teszi egy hálózat indítását, a szükséges fiókok számának létrehozását, megfelelő számú kliens felemelését, a hálózati topológia konfigurálását, a bandwidth, packetloss paraméterek megadását és a teszt elindítását.
A Whiteblock Genesis saját erőforrásokat biztosít a tesztek végrehajtásához. A fejlesztőknek csupán meg kell adniuk a tesztek paramétereit, el kell indítaniuk azokat a kész API segítségével, és az eredményeket egy kényelmes dashboard segítségével kell megkapniuk.
A Whiteblock Genesis lehetővé teszi egy részletes teszt konfigurálását, amelyet a platform automatikusan végrehajt minden lényeges kódmódosításnál. Ez lehetővé teszi a hibák korai észlelését, és azonnali értékelést ad a változtatások hatásáról a hálózat fontos paramétereire, mint például a tranzakciók lebonyolítási sebessége és a csomópontok által használt erőforrások.
Madt
Egy újabb érdekes, fiatal termék elosztott rendszerek tesztelésére — . Python nyelven készült, és lehetővé teszi a szükséges hálózati topológia és a szükséges számú szerver és kliens létrehozását egyszerű konfigurációs szkriptek segítségével (). Ezt követően a szolgáltatás több docker-konténerben telepíti a hálózatot, és elindít egy webes felületet, ahol nyomon követhetők a szerverek és a hálózati kliensek üzenetei. A madt felhasználható blokkláncok tesztelésére is — a projekt tárolójában található egy p2p hálózati teszt a Kademlia protokoll alapján, ahol fokozatosan növelik az adatátvitel késleltetését a csomópontokhoz, és ellenőrzik ezek állapotát.
A madt nagyon nemrég jelent meg, de figyelembe véve rendkívül rugalmas architektúráját, funkcionális termékké fejlődhet.
Egyéb megoldások
Gyakorlatilag bármilyen blokklánc rendszeralkotó teszteléséhez szükség van előzetes forgatókönyvek futtatására, fiókok és tesztfeltételek előkészítésére (ez magában foglalhatja a konszenzus hibáinak tesztelését, amelyek számos lánc forkot eredményezhetnek, hard fork forgatókönyvek kidolgozását, a rendszerszámok módosítását stb.). Mindezeket a manipulációkat különböző blokkláncok esetében eltérően hajtják végre, ezért a csapatok számára egyszerűbb fokozatosan alkalmazni a termék tesztelését és benchmarkozását a belső CI/CD-hez, valamint saját fejlesztéseiket használni, amelyek fokozatosan bonyolódnak a blokklánc funkcióinak fejlődésével.
Mindazonáltal a kész megoldások használata jelentősen lerövidítheti az ilyen csapatok tesztelési idejét, ezért úgy gondolom, hogy ez a szoftver aktívan fejlődni fog a következő években.
Zárás
Befejezve ezt a rövid áttekintést, felsorolok néhány fontos jellemzőt a blokkláncok tesztelésére szolgáló eszközökről:
- Az automatikus blokklánc hálózat telepítésének lehetősége megismételhető körülmények között. Ez a tényező fontos a blokklánc rendszerei részének fejlesztésekor: konszenzus algoritmusok, véglegesség, rendszerszintű okos szerződések.
- A rendszer tulajdonlásának költsége, az elfogyasztott erőforrások, és a folyamatos használatra való kényelem. Ez a tényező lehetővé teszi a projekt számára, hogy magas színvonalú teszteket végezzen kis költséggel.
- A tesztek rugalmassága és egyszerű konfigurációja. Ez a tényező növeli a problémák felfedezésének esélyét — kisebb a valószínűsége annak, hogy valami fontosat kihagyjanak.
- Testreszabás adott blokklánc típusokhoz. A meglévő megoldásokra épülő fejlesztés jelentősen javíthatja a minőséget és csökkentheti az időráfordítást.
- A megkapott eredmények kényelme és elérhetősége, valamint a típusa (jelentések, mutatók, grafikonok, naplók stb.). Ez elengedhetetlen, ha nyomon akarja követni a termék fejlődésének történetét, vagy mélyreható elemzésre van szüksége a blokklánc-hálózat viselkedéséről.
Sok sikert a teszteléshez, és legyenek a blokkláncaid gyorsak és megbízhatóak!
Forrás: habr.com
