V tomto článku sa dozvieš, čo je blockchain technológia, blockchain testing, na čo sa využíva a aké typy blockchain testingu poznáme.

Čo je Blockchain technológia?

Blockchain je technológia, ktorá umožňuje bezpečné a transparentné zdieľanie údajov. Je založená na decentralizovanej sieti počítačov, ktoré udržiavajú spoločnú databázu. Táto databáza je chránená kryptografiou, čo znemožňuje jej neoprávnenú manipuláciu.

Blockchain je prispôsobená na zaznamenávanie informácií, ktorá znemožňuje hackerské útoky alebo zmenu údajov. Je to technológia distribuovaných záznamov (DLT – Distributed Ledger Technology), ktorá uľahčuje zaznamenávanie transakcií a sledovanie aktív v sieti.

Blockchain pozostáva zo záznamov alebo blokov prepojených pomocou kryptografie. Každý záznam obsahuje kryptografický hash spolu s časovou pečiatkou a údajmi o transakcii predchádzajúceho bloku. Keďže každý blok obsahuje údaje z posledného bloku, vytvárajú reťaz blokov a robia transakcie nezvratnými.

Blockchain sa dá vytvoriť na štyri spôsoby: verejný, súkromný, s povolením alebo konzorciálny.

  • Verejná blockchainová sieť: Do verejnej blockchainovej siete sa môže pripojiť a zapojiť ktokoľvek, to znamená môže čítať, zapisovať a upravovať prebiehajúce aktivity, vďaka čomu je decentralizovaná a má samosprávny charakter. Vo verejnej blockchainovej sieti však existuje len malé alebo žiadne súkromie transakcií a slabé zabezpečenie, ktoré je potrebné zvážiť predtým, ako o nej začneš uvažovať pre svoje podnikanie.
  • Súkromná blockchainová sieť: Je to čiastočne decentralizovaná sieť, ktorú riadi jedna organizácia, kontrolujúca účasť, vykonávanie a údržbu blockchainu.
  • Povolená blockchainová sieť: Je to hybrid verejnej a súkromnej blockchainovej siete, pretože umožňuje prístup do siete komukoľvek, pokiaľ prešiel procesom overenia totožnosti.
  • Konzorciálny blockchain: Je to súkromná skupina blockchainov, kde každý blockchain spravujú jednotlivé organizácie, ktoré sa spájajú s cieľom zdieľať informácie pre lepšiu transparentnosť, zodpovednosť a pracovné postupy. Prístup k sieti a právomoci nad ňou budú mať viaceré organizácie. Je to plne decentralizovaný systém.

Na akom princípe funguje blockchain?

Ilustrácia blockchain princípu

Blockchain QA testing

Testovanie aplikácií založených na technológii blockchain je spojené s mnohými výzvami. Samozrejme, existujú tradičné testovania a validácie, ako je funkčné/nefunkčné testovanie, testovanie výkonnosti, integračné testovanie atď. QA testeri však musia mať aj špecializované schopnosti, ako je mať vedomosti o testovaní inteligentných zmlúv, peer/node testovanie, mať matematické a kryptografické zručnosti a ovládať špičkové nástroje.

Čo je blockchain testing?

Hoci jedinečné vlastnosti blockchainu ho urobili populárnym v rôznych odvetviach, prispievajú aj k jeho zložitosti. Preto sa stáva dôležitým testovanie a overovanie systému blockchain pred ich nasadením do produkčného prostredia.

Testovanie blockchainu je systematické overovanie rôznych komponentov blockchainu, ako sú napríklad inteligentné zmluvy, bloky, mining, peňaženky, transakcie a ďalšie. Pomocou testovania blockchainu možno zabezpečiť, aby každá blockchainová sieť fungovala podľa očakávaní, bola zabezpečená a overená na prevádzku. Hlavným cieľom testovania blockchainu je zabezpečiť úplné pokrytie testov, aby bolo možné vyvinúť kvalitné blockchainové riešenie.

Blockchain však prináša extrémne výzvy vo svete testovania. Medzi hlavné výzvy, s ktorými sa možno stretnúť počas testovania, patria:

  • pochopenie technológie blockchain a definovanie stratégií testovania,
  • nedostatok štandardizovaných nástrojov na testovanie blockchainu a osvedčených postupov,
  • validácia a verifikácia každého bloku, ktorý sa zaznamenáva do siete blockchain pri každej transakcii,
  • zachovanie veľkosti bloku a reťazca,
  • riziká zlyhania pri zdieľaní kryptografických údajov.

Výhody testovania blockchainu

Testovanie blockchainu zabezpečuje, že všetky subjekty zapojené do blockchainovej siete boli riadne overené pred nasadením. V dôsledku toho poskytuje organizáciám bezpečnú a funkčnú infraštruktúru.

Testovanie blockchainu pomáha pri dodávaní kvalitných produktov, čím sa zlepšuje používateľská skúsenosť. Odstraňuje tiež nedostatky v decentralizovanom systéme, v ktorom sú zapojené peniaze, aby sa zabránilo finančným škodám.

Typy blockchain testingu

Niektoré z odporúčaných metód testovania softvérových riešení blockchain sú funkčné testovanie, testovanie výkonnosti (performance testing), testovanie bezpečnosti (safety testing), testovanie uzlov (node testing) a penetračné testovanie (penetration testing).

  • Funkčné testovanie: Vykonáva sa s cieľom vyhodnotiť súlad blockchainového riešenia s požiadavkami na konkrétne funkcie, pretože často opisuje, čo systém robí. Funkčné testovanie je súčasťou testovania čiernej skrinky, teda skúma len funkčnosť aplikácie bez toho, aby sa zaoberalo jej vnútorným fungovaním alebo štruktúrami. QA teda nemusí poznať použitý programovací jazyk ani to, ako bol daný komponent blockchainového systému implementovaný, aby mohol vykonať funkčné testy. Integračné testovanie, unit testing, smoke testing a regresné testovanie sú niektoré príklady funkčného testovania.
  • Testovanie výkonnosti: Zabezpečuje, aby aplikácia blockchain fungovala presne za očakávaných podmienok a pri očakávanom zaťažení. Testovanie výkonnosti hodnotí kvalitu a schopnosť blockchainového riešenia z hľadiska škálovateľnosti, rýchlosti, stability a spoľahlivosti v meniacich sa podmienkach. Jeho cieľom je odstrániť výkonnostné prekážky a identifikovať oblasti, ktoré je potrebné zlepšiť, pričom blockchainové riešenie je rýchle, stabilné a spoľahlivé.
  • Testovanie bezpečnosti: Zisťuje a identifikuje bezpečnostné zraniteľnosti v sieti blockchainového systému, na strane klienta alebo servera. Jeho cieľom je chrániť systém pred možnými narušiteľmi tým, že sa zabezpečí, aby v systéme neboli žiadne možné medzery, riziká, hrozby alebo zraniteľnosti. Dôvernosť, autentickosť, autorita, integrita, dostupnosť a neodmietnutie sú základné princípy, ktoré sa pri testovaní bezpečnosti dodržiavajú. Jednoducho povedané, používa sa na ladenie systému, čo umožňuje blockchainovým riešeniam vykonávať vysoko zabezpečené transakcie.
  • Testovanie uzlov: Každý odklonený uzol dostupný v sieti by mal byť testovaný nezávisle na presné zaznamenanie a bezrizikové pripojenie.
  • Penetračné testovanie: Ide o modelovaný kybernetický útok na vlastný blockchainový systém, ktorý pomáha rozpoznať všetky zneužiteľné zraniteľnosti. Penetračné testovanie pozostáva z pokusov o narušenie serverov, rozhraní API atď. s cieľom odhaliť slabé miesta náchylné na útoky typu injection do kódu.
  • Testovanie API: Pri testovaní API zabezpečujeme, aby interakcia medzi aplikáciami v blockchainovom ekosystéme prebiehala podľa očakávaní.

Fázy blockchain testingu

  • Počiatočná fáza

Počiatočná fáza je prvou fázou testovania systému blockchain. V nej sa testeri oboznamujú s životným cyklom systému prostredníctvom analýzy a pochopenia jeho funkčnosti, čo im umožňuje lepšie pochopiť všetky zúčastnené komponenty. Vytvára sa podrobná mapa, ktorá obsahuje všetky komponenty a subkomponenty systému, ako aj všetky rozhrania, aby sa dosiahlo dobré pochopenie celkového fungovania systému.

  • Fáza návrhu

Vo fáze návrhu sa identifikujú kľúčové komponenty systému, ktoré sa musia testovať, a vypracuje sa podrobná stratégia testovania prispôsobená systému blockchain. Táto testovacia stratégia opisuje testovacie prípady systému a špecifikácie testovacieho prostredia.

  • Fáza plánovania

Počas tejto fázy sa rozhodne, ako sa budú vykonávať jednotlivé typy testov, pričom sa odhadne, koľko testov sa vykoná na každej úrovni a v akom rozsahu.

Ak systém nie je k dispozícii, musia sa navrhnúť alternatívne stratégie testovania. Zriadenie súkromného blockchainu na testovanie je alternatívnou stratégiou testovania. Testovanie API, funkčné testovanie, výkonnostné testovanie, bezpečnostné testovanie a iné sú príkladmi týchto testov.

  • Fáza výsledkov

Ide o záverečnú fázu, ktorá zahŕňa správu o celkovom vykonanom testovaní systému. Výkonnosť systému, kontrola na nízkej úrovni a validácia blokov, transakcií a inteligentných kontraktov sú základné cvičenia, ktoré sa musia vykonať počas tejto fázy.

Výzvy pri testovaní blockchainu

  • Pochopenie technológie – Blockchain je nová technológia a pri testovaní aplikácie blockchain je veľmi dôležité pochopenie technológie so znalosťou domény.
  • Nedostatok nástrojov na testovanie blockchainu– Testovanie aplikácií založených na blockchaine je predovšetkým o nástrojoch. Výber správneho nástroja podľa aplikácie je jedným z dôležitých rozhodnutí.
  • Definovanie stratégie testovania– Ako pri každej aplikácii, aj pri blockchain aplikácii je potrebné navrhnúť stratégiu testovania. Je to jedna z najväčších výziev, pretože testovacia stratégia si vyžaduje hlboké znalosti a pochopenie technológie a aplikácie.
  • Veľkosť bloku a reťazca– Spolu so štandardným testovaním, nástrojmi a zavedenými osvedčenými postupmi je dôležité aj testovanie veľkosti bloku a reťazca. Blockchainové aplikácie môžu bez správneho overenia veľkosti bloku a reťazca zlyhať.
  • Integračné testovanie – Keďže do aplikácie blockchain je zapojených viacero komponentov, integračné testovanie by sa malo vykonávať správne a často, aby sa otestovalo, či sú všetky komponenty správne integrované, aby sa predišlo akýmkoľvek zlyhaniam.
  • Výkonnosť a záťaž – ak sa neuskutoční testovanie výkonnosti a záťaže, získa sa len malý alebo žiadny prehľad o tom, ako aplikácia blockchain funguje v produkcii, ako aj pri špecifickom pracovnom zaťažení a sieťových podmienkach.
  • Bezpečnosť– Zabezpečenie údajov by malo byť v aplikácii blockchain najdôležitejšie. Blockchain môže byť súčasťou rôznych odvetví, ako je zdravotníctvo, financie atď. Akýkoľvek typ škodlivých útokov môže mať vplyv na aplikáciu.

Blockchain testing tools

Nižšie je uvedených 6 najviac populárnych nástrojov pre testovanie blockchain technológie:

  • Ethereum Tester

Je to testovacia knižnica s otvoreným zdrojovým kódom, ktorá je k dispozícii na GitHub repo. Je ľahko nastaviteľná s manažovateľnou podporou API pre rôzne požiadavky na testovanie.

  • Ganache

Je to skôr známa knižnica Testrpc, ktorá je široko používaná na lokálne testovanie kontraktov Ethereum. Funguje tak, že roztočí akýsi mock Blockchain, ktorý vám poskytne prístup k účtom, ktoré môžete použiť na testovanie.

  • Hyperledger Composer

Hyperledger Composer je open-source nástroj, ktorý ti umožní modelovať a testovať blockchainovú sieť s minimálnou sadou nástrojov, ako je Docker a prehliadač. Deje sa tak prostredníctvom nástroja Hyperledger Composer, ktorý uľahčuje vývoj blockchainu pomocou modelovacieho jazyka, používateľského rozhrania a CLI.  Pomocou tohto nástroja môžeme vykonávať najmä tri typy testovania: interaktívne testovanie, automatizované unit testovanie a systémové testovanie.

  • Truffle Suite

Truffle Suite je full-stack vývojové framework pre Ethereum. Zahŕňa aj nástroje na blockchain testing. Je to jeden z komplexných balíkov na kompiláciu, testovanie, ladenie a nasadzovanie blockchainových systémov. Truffle suit obsahuje rôzne nástroje a to Ganache, Drizzle, Truffle a Truffle for VSCode, ktoré uľahčujú vývoj inteligentných kontraktov.

  • BitcoinJ

Je to knižnica pre Bitcoin, ktorá ponúka režim úplnej verifikácie, odľahčený zjednodušený režim overovania platieb, triedu peňaženky, mikroplatobné kanály a asynchrónny režim a režim thread-per-connection. Pomocou BitcoinJ môžu vývojári ľahko vyvíjať zabezpečené a spoľahlivé aplikácie založené na zmluvných kryptografických peňaženkách.

  • Manticore

Nástroj na symbolické vykonávanie, ktorý ponúka viacero funkcií, ako je prieskum programu, generovanie vstupov, detekcia chýb, programové rozhranie a inštrumentácia na analýzu inteligentných zmlúv, modulov a binárnych súborov.

Záver

Technológia blockchain sa dostáva do popredia ako sľubná sila budúcnosti, ktorá podnecuje podnikateľov, aby preskúmali jej potenciál. Napriek tomu je pre spustenie akéhokoľvek riešenia založeného na blockchaine nevyhnutné vykonať dôkladný test.

Keďže blockchain je relatívne nový, riešenie takých aspektov, ako je získavanie vhodných údajov, zabezpečenie škálovateľnosti, bezpečnosti a výkonnosti, je jednou z najzávažnejších výziev. Našťastie existujú užitočné nástroje na testovanie blockchainu, ktoré pomáhajú QA testerom pri riešení týchto problémov.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť