
Hari ini, penyelesaian untuk ujian dan penanda aras rantaian blok disesuaikan dengan rantaian blok tertentu atau garpunya. Tetapi terdapat juga beberapa penyelesaian umum yang berbeza dalam fungsi: sebahagian daripadanya adalah projek sumber terbuka, yang lain disediakan sebagai SaaS, tetapi kebanyakannya adalah penyelesaian dalaman yang dicipta oleh pasukan pembangunan blokchain. Walau bagaimanapun, mereka semua menyelesaikan masalah yang sama. Dalam artikel ini, saya cuba menyemak secara ringkas beberapa produk yang direka khusus untuk menguji blokchain.
Pengendalian rangkaian blockchain menyerupai operasi pangkalan data yang diedarkan, jadi alat dan kaedah yang serupa boleh digunakan untuk ujian. Untuk lebih memahami cara pangkalan data teragih diuji, lihat pilihan sumber dan artikel yang baik . Sebagai contoh, kependaman diisih ke dalam kepingan dalam ini , dan untuk memahami cara mereka mencari pepijat dalam algoritma replikasi, saya mengesyorkan membaca ini .
Saya akan menerangkan beberapa penyelesaian popular untuk ujian dan penanda aras blokchain. Saya akan gembira jika dalam komen anda menerangkan produk perisian lain yang berguna untuk menyelesaikan masalah yang sama.

Saya akan mulakan dengan alat yang, walaupun tidak dicipta khusus untuk blockchain, membolehkan anda menguji operasinya dengan berkesan, dengan syarat terdapat rangkaian yang sudah berjalan di mana anda boleh mencuba. Faktor yang paling penting dalam kebolehpercayaan sistem teragih ialah keupayaan untuk terus bekerja sekiranya berlaku masalah dengan pelayan dan rangkaian. Ini mungkin ketinggalan rangkaian, kepenuhan cakera, ketiadaan perkhidmatan luaran (DNS), kegagalan perkakasan dan beratus-ratus sebab lain. Untuk menyemak kestabilan mana-mana sistem yang beroperasi secara serentak pada sejumlah besar mesin sistem, anda boleh gunakan . Ia menggunakan pendekatan yang sangat berkesan yang dipanggil Chaos Engineering.
Menggunakan ejen rangkaiannya sendiri, Gremlin mencipta pelbagai jenis masalah pada bilangan mesin yang diperlukan: ketinggalan rangkaian, beban berlebihan mana-mana sumber (CPU, cakera, memori, rangkaian), melumpuhkan protokol individu, dsb. Untuk rantaian blok, Gremlin boleh digunakan pada pelayan testnet, meniru masalah kehidupan sebenar dan memerhati tingkah laku rangkaian. Dengan itu, pembangun dan pentadbir boleh memerhati dalam persekitaran terkawal apa yang akan berlaku jika sistem ranap atau apabila kod dikemas kini. Dalam kes ini, rangkaian mesti dikonfigurasikan dan digunakan terlebih dahulu, serta dikonfigurasikan untuk mengumpul metrik yang diperlukan.
Gremlin ialah alat yang mudah untuk arkitek, devops dan pakar keselamatan dan penyelesaian universal untuk menguji mana-mana sistem teragih yang sedia dibuat dan menjalankan, termasuk rantaian blok.

Hyperledger Caliper ialah penyelesaian yang lebih khusus . Pada masa ini, Caliper menyokong beberapa blockchain sekaligus - wakil keluarga Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), serta Ethereum dan rangkaian FISCO BCOS.
Menggunakan Caliper, anda boleh menetapkan topologi rangkaian blockchain dan kontrak untuk ujian, serta menerangkan konfigurasi nod. Nod rantaian blok dinaikkan dalam bekas docker pada satu mesin. Seterusnya, anda boleh memilih yang perlu dan menerima fail dengan laporan tentang keputusan ujian selepas pelancaran. Senarai penuh metrik Caliper dan pendekatan penanda aras boleh didapati di sini , ini adalah artikel yang bagus jika anda berminat dengan topik penanda aras blockchain. Anda juga boleh menyediakan koleksi metrik dalam Prometheus/Grafana yang berasingan.
Hyperledger Caliper ialah alat yang ditujukan kepada pembangun dan arkitek sistem, kerana ia menyediakan kebolehulangan ujian dan automasi ujian dan penanda aras. Ia digunakan dalam pembangunan teras rantaian blok: algoritma konsensus, mesin maya untuk memproses kontrak pintar, lapisan peer-to-peer dan mekanisme sistem lain.

ialah alat yang muncul dalam proses membangunkan algoritma konsensus dan muktamad untuk rangkaian berasaskan EOS dan menguji parachain berdasarkan Substrat Pariti (Polkadot). Dari segi kefungsian, ia hampir dengan Hyperledger Caliper, kerana ia membolehkan anda mengumpul metrik penting daripada nod mana-mana sistem teragih dan mesin klien yang mana skrip ujian sedang dijalankan.
MixBytes Tank menggunakan beberapa perkhidmatan awan (Lautan Digital, Enjin Awan Google, dll.), di mana ia boleh melancarkan banyak nod, menjalankan prosedur konfigurasi awal, menjalankan beberapa penanda aras secara selari pada mesin yang berbeza, mengumpul metrik yang diperlukan dan mematikan secara automatik rangkaian.
MixBytes Tank membolehkan anda menjimatkan wang pada pelayan awan dengan meminimumkan sumber yang tidak diperlukan secara automatik selepas ujian. Satu lagi ciri tersendiri ialah penggunaan pakej Molecule, yang membolehkan pembangun menguji penggunaan blockchain yang dikehendaki secara tempatan.
MixBytes Tank membolehkan anda mengesan awal kesesakan dan ralat dalam algoritma yang timbul dalam rangkaian sebenar dengan sejumlah besar pelayan dan pelanggan yang diedarkan secara geografi. Tangki akan membantu anda memahami perkara yang akan berlaku pada nod jika pelanggan menghantar urus niaga dengan tps tertentu dalam keadaan yang boleh berulang dan dengan bilangan sebenar nod yang tersebar di benua yang berbeza, jika perlu.

Whiteblock Genesis ialah platform ujian untuk blockchain berasaskan Ethereum. Alat ini mempunyai fungsi yang agak luas: ia membolehkan anda melancarkan rangkaian, mencipta bilangan akaun yang diperlukan di dalamnya, meningkatkan bilangan pelanggan yang diperlukan, mengkonfigurasi topologi rangkaian, menentukan lebar jalur dan parameter kehilangan paket dan menjalankan ujian.
Whiteblock Genesis menyediakan kemudahan ujiannya sendiri. Pembangun hanya perlu menentukan parameter ujian, menjalankannya menggunakan API siap pakai dan dapatkan hasil menggunakan papan pemuka yang mudah.
Whiteblock Genesis membolehkan anda mengkonfigurasi ujian yang agak terperinci yang platform akan dijalankan secara automatik untuk setiap perubahan kod yang ketara. Ini akan membolehkan anda menangkap ralat pada peringkat awal dan segera menilai kesan perubahan pada parameter rangkaian penting, seperti kelajuan transaksi dan sumber yang digunakan oleh nod.
Madt
Satu lagi produk muda yang menarik untuk menguji sistem yang diedarkan ialah . Ia ditulis dalam Python dan membolehkan anda mencipta topologi rangkaian yang diperlukan dan bilangan pelayan dan pelanggan yang diperlukan menggunakan skrip konfigurasi mudah (). Selepas ini, perkhidmatan itu menggunakan rangkaian dalam beberapa bekas Docker dan membuka antara muka web di mana anda boleh memerhatikan mesej daripada pelayan dan pelanggan rangkaian. Madt boleh digunakan untuk menguji blokchain - repositori projek mempunyai ujian rangkaian p2p berdasarkan protokol Kademlia, di mana kelewatan dalam menghantar data ke nod ditingkatkan secara beransur-ansur dan status data ini disemak.
Madt baru sahaja muncul, tetapi memandangkan seni binanya yang sangat fleksibel, ia boleh berkembang menjadi produk berfungsi.
Penyelesaian lain
Hampir mana-mana ujian bahagian sistem blockchain memerlukan menjalankan skrip awal, menyediakan akaun dan syarat untuk ujian (ini boleh menguji ralat konsensus yang boleh menjana banyak garpu rantai, menguji senario hard fork, menukar parameter sistem, dll.). Semua manipulasi ini dijalankan secara berbeza dalam rantaian blok yang berbeza, jadi lebih mudah bagi pasukan untuk menyesuaikan secara beransur-ansur ujian produk dan penanda aras kepada CI/CD dalaman dan menggunakan perkembangan mereka sendiri, yang secara beransur-ansur menjadi lebih kompleks apabila fungsi rantaian tersebut berkembang.
Namun begitu, penggunaan penyelesaian sedia boleh mengurangkan masa ujian untuk pasukan ini, jadi saya fikir perisian ini akan dibangunkan secara aktif pada tahun-tahun akan datang.
Kesimpulan
Untuk mengakhiri ulasan ringkas ini, saya akan menyenaraikan beberapa ciri penting alat ujian blockchain:
- Keupayaan untuk menggunakan rangkaian blockchain secara automatik di bawah keadaan yang boleh berulang. Faktor ini penting semasa membangunkan bahagian sistem blok blok: algoritma konsensus, muktamad, kontrak pintar sistem.
- Kos memiliki sistem, sumber yang digunakan dan kemudahan untuk kegunaan berterusan. Faktor ini menyediakan projek dengan ujian berkualiti tinggi untuk sedikit wang.
- Fleksibiliti dan kesederhanaan konfigurasi ujian. Faktor ini meningkatkan peluang untuk mengenal pasti masalah sistem - terdapat kurang peluang untuk kehilangan sesuatu yang penting.
- Penyesuaian untuk jenis blockchain tertentu. Membangunkan penyelesaian berdasarkan penyelesaian sedia ada boleh meningkatkan kualiti dan mengurangkan kos masa.
- Kemudahan dan kebolehcapaian hasil yang diperoleh dan jenisnya (laporan, metrik, graf, log, dsb.). Ini amat diperlukan jika anda ingin menjejaki sejarah pembangunan produk, atau jika anda memerlukan analisis mendalam tentang kelakuan rangkaian blockchain.
Semoga berjaya dengan ujian anda dan semoga blokchain anda pantas dan tahan terhadap kesalahan!
Sumber: www.habr.com
