Bugün, blok zincirlerini test etmeye ve kıyaslamaya yönelik çözümler, belirli bir blok zincirine veya onun çatallarına göre uyarlanmıştır. Ancak işlevsellik açısından farklılık gösteren birkaç genel çözüm daha var: bunlardan bazıları açık kaynaklı projeler, diğerleri SaaS olarak sağlanıyor, ancak çoğu blockchain geliştirme ekibi tarafından oluşturulan dahili çözümler. Ancak hepsi benzer sorunları çözüyor. Bu yazımda özellikle blockchain testlerine yönelik tasarlanmış birkaç ürünü kısaca incelemeye çalıştım.
Bir blockchain ağının işleyişi, dağıtılmış bir veritabanının işleyişine benzer, dolayısıyla test için benzer araçlar ve yöntemler kullanılabilir. Dağıtılmış veritabanlarının nasıl test edildiğini daha iyi anlamak için iyi bir kaynak ve makale seçimine göz atın
Blok zincirlerini test etmek ve kıyaslamak için birkaç popüler çözümü anlatacağım. Yorumlarda aynı sorunları çözmek için diğer faydalı yazılım ürünlerini anlatırsanız sevinirim.
Blockchain'ler için özel olarak yaratılmamış olsa da, deneyebileceğiniz halihazırda çalışan bir ağ olması koşuluyla, blockchain'lerin çalışmasını etkili bir şekilde test etmenize olanak tanıyan bir araçla başlayacağım. Dağıtık bir sistemin güvenilirliğindeki en önemli faktör, sunucularda ve ağda sorun olması durumunda çalışmaya devam edebilme yeteneğidir. Bu, ağ gecikmeleri, disk doluluğu, harici hizmetlerin (DNS) kullanılamaması, donanım arızaları ve diğer yüzlerce neden olabilir. Çok sayıda sistem makinesinde uyum içinde çalışan herhangi bir sistemin kararlılığını kontrol etmek için şunları kullanabilirsiniz:
Gremlin, kendi ağ aracısını kullanarak gerekli sayıda makinede birçok farklı türde sorun yaratır: ağ gecikmeleri, herhangi bir kaynağın aşırı yüklenmesi (CPU, disk, bellek, ağ), bireysel protokollerin devre dışı bırakılması vb. Blok zincirleri için Gremlin, gerçek hayattaki sorunları taklit ederek ve ağın davranışını gözlemleyerek test ağı sunucularında kullanılabilir. Bu sayede geliştiriciler ve yöneticiler kontrollü bir ortamda sistem çökerse veya kod güncellenirse ne olacağını gözlemleyebilir. Bu durumda ağın önceden yapılandırılıp dağıtılmasının yanı sıra gerekli ölçümleri toplayacak şekilde yapılandırılması gerekir.
Gremlin, mimarlar, geliştiriciler ve güvenlik uzmanları için kullanışlı bir araçtır ve blok zincirler de dahil olmak üzere hazır ve çalışır durumdaki dağıtılmış sistemleri test etmek için evrensel bir çözümdür.
Hyperledger Caliper çok daha özel bir çözümdür
Caliper'ı kullanarak blockchain ağının topolojisini ve test sözleşmelerini ayarlayabilir, ayrıca düğümün yapılandırmasını tanımlayabilirsiniz. Blockchain düğümleri bir makinedeki docker konteynerlerinde yükseltilir. Daha sonra gerekli olanı seçebilirsiniz
Hyperledger Caliper, test tekrarlanabilirliği ve test ile kıyaslama otomasyonu sağladığı için geliştiricilere ve sistem mimarlarına yönelik bir araçtır. Blok zincirlerinin çekirdeğinin geliştirilmesinde kullanılır: fikir birliği algoritmaları, akıllı sözleşmelerin işlenmesi için sanal bir makine, eşler arası katman ve diğer sistem mekanizmaları.
MixBytes Tank, birçok düğümü başlatabildiği, ön yapılandırma prosedürlerini gerçekleştirebildiği, farklı makinelerde paralel olarak birkaç kıyaslama çalıştırabildiği, gerekli ölçümleri toplayabildiği ve otomatik olarak kapatabildiği çeşitli bulut hizmetlerini (Digital Ocean, Google Cloud Engine, vb.) kullanır. ağ.
MixBytes Tank, test sonrasında gereksiz kaynakları otomatik olarak en aza indirerek bulut sunucularda tasarruf etmenizi sağlar. Bir diğer ayırt edici özellik, geliştiricinin istenen blok zincirinin dağıtımını yerel olarak test etmesine olanak tanıyan Molecule paketinin kullanılmasıdır.
MixBytes Tank, çok sayıda coğrafi olarak dağıtılmış sunucu ve istemcinin bulunduğu gerçek ağlarda ortaya çıkan algoritmalardaki darboğazları ve hataları erken tespit etmenize olanak tanır. Tank, müşterilerin yüksek düzeyde tekrarlanabilir koşullarda belirli bir TPS ile ve gerekirse farklı kıtalara yayılmış gerçek sayıda düğümle işlem göndermesi durumunda düğümlerde ne olacağını anlamanıza yardımcı olacaktır.
Whiteblock Genesis, Ethereum tabanlı blok zincirleri için bir test platformudur. Bu araç oldukça geniş bir işlevselliğe sahiptir: bir ağ başlatmanıza, içinde gerekli sayıda hesap oluşturmanıza, gerekli istemci sayısını artırmanıza, ağ topolojisini yapılandırmanıza, bant genişliği ve paket kaybı parametrelerini belirlemenize ve bir test çalıştırmanıza olanak tanır.
Whiteblock Genesis kendi test olanaklarını sağlar. Geliştiricilerin yalnızca test parametrelerini belirtmeleri, bunları hazır bir API kullanarak çalıştırmaları ve kullanışlı bir kontrol panelini kullanarak sonuçları almaları yeterlidir.
Whiteblock Genesis, platformun her önemli kod değişikliğinde otomatik olarak yürüteceği oldukça ayrıntılı bir testi yapılandırmanıza olanak tanır. Bu, hataları erken bir aşamada yakalamanıza ve değişikliklerin işlem hızı ve düğümler tarafından tüketilen kaynaklar gibi önemli ağ parametreleri üzerindeki etkisini anında değerlendirmenize olanak tanır.
madt
Dağıtılmış sistemleri test etmek için bir başka ilginç genç ürün ise
Madt daha yeni ortaya çıktı, ancak çok esnek mimarisi göz önüne alındığında işlevsel bir ürüne dönüşebilir.
Diğer çözümler
Blok zincirlerinin sistem kısmının hemen hemen her testi, ön komut dosyalarının çalıştırılmasını, hesapların ve test koşullarının hazırlanmasını gerektirir (bu, çok sayıda zincir çatalı oluşturabilen fikir birliği hatalarının test edilmesi, sert çatal senaryolarının test edilmesi, sistem parametrelerinin değiştirilmesi vb. olabilir). Tüm bu manipülasyonlar farklı blok zincirlerinde farklı şekilde gerçekleştirilir, bu nedenle ekiplerin ürün testini ve kıyaslamayı kademeli olarak dahili CI/CD'ye uyarlaması ve blok zincirinin işlevselliği geliştikçe giderek daha karmaşık hale gelen kendi geliştirmelerini kullanması daha kolaydır.
Yine de hazır çözümlerin kullanılması bu ekiplerin test süresini büyük ölçüde azaltabilir, dolayısıyla bu yazılımın önümüzdeki yıllarda aktif olarak geliştirileceğini düşünüyorum.
Sonuç
Bu kısa incelemeyi sonuçlandırmak için blockchain test araçlarının birkaç önemli özelliğini listeleyeceğim:
- Tekrarlanabilir koşullar altında bir blockchain ağını otomatik olarak dağıtma yeteneği. Bu faktör, blok zincirlerin sistem parçalarını geliştirirken önemlidir: fikir birliği algoritmaları, kesinlik, sistem akıllı sözleşmeleri.
- Sisteme sahip olmanın maliyeti, tüketilen kaynaklar ve sürekli kullanım kolaylığı. Bu faktör, projeye az para karşılığında yüksek kaliteli testler sağlar.
- Test konfigürasyonunun esnekliği ve basitliği. Bu faktör, sistem sorunlarının tespit edilme şansını artırır; önemli bir şeyin gözden kaçırılma olasılığı daha azdır.
- Belirli blockchain türleri için özelleştirme. Mevcut olanı temel alan bir çözüm geliştirmek, kaliteyi büyük ölçüde artırabilir ve zaman maliyetlerini azaltabilir.
- Elde edilen sonuçların ve bunların türünün (raporlar, metrikler, grafikler, günlükler vb.) kolaylığı ve erişilebilirliği. Bir ürünün gelişim geçmişini takip etmek istiyorsanız veya blockchain ağının davranışının derinlemesine analizine ihtiyaç duyuyorsanız bu kesinlikle gereklidir.
Testlerinizde iyi şanslar, blok zincirlerinizin hızlı ve hataya dayanıklı olmasını dilerim!
Kaynak: habr.com