Σήμερα, οι λύσεις για τη δοκιμή και τη συγκριτική αξιολόγηση των blockchain είναι προσαρμοσμένες σε ένα συγκεκριμένο blockchain ή στα forks του. Υπάρχουν όμως και πολλές πιο γενικές λύσεις που διαφέρουν ως προς τη λειτουργικότητα: ορισμένες από αυτές είναι έργα ανοιχτού κώδικα, άλλες παρέχονται ως SaaS, αλλά οι περισσότερες είναι εσωτερικές λύσεις που δημιουργούνται από την ομάδα ανάπτυξης blockchain. Ωστόσο, όλα λύνουν παρόμοια προβλήματα. Σε αυτό το άρθρο, προσπάθησα να αναθεωρήσω εν συντομία αρκετά προϊόντα που έχουν σχεδιαστεί ειδικά για τη δοκιμή blockchains.
Η λειτουργία ενός δικτύου blockchain μοιάζει με τη λειτουργία μιας κατανεμημένης βάσης δεδομένων, επομένως παρόμοια εργαλεία και μέθοδοι μπορούν να χρησιμοποιηθούν για δοκιμές. Για να κατανοήσετε καλύτερα πώς ελέγχονται οι κατανεμημένες βάσεις δεδομένων, ρίξτε μια ματιά σε μια καλή επιλογή πόρων και άρθρων
Θα περιγράψω αρκετές δημοφιλείς λύσεις για τη δοκιμή και τη συγκριτική αξιολόγηση των blockchain. Θα χαιρόμουν αν στα σχόλια περιγράφατε άλλα χρήσιμα προϊόντα λογισμικού για την επίλυση των ίδιων προβλημάτων.
Θα ξεκινήσω με ένα εργαλείο που, αν και δεν δημιουργήθηκε ειδικά για blockchains, σας επιτρέπει να δοκιμάσετε αποτελεσματικά τη λειτουργία τους, υπό την προϋπόθεση ότι υπάρχει ήδη ένα δίκτυο στο οποίο μπορείτε να πειραματιστείτε. Ο πιο σημαντικός παράγοντας για την αξιοπιστία ενός κατανεμημένου συστήματος είναι η δυνατότητα συνέχισης της εργασίας σε περίπτωση προβλημάτων με τους διακομιστές και το δίκτυο. Αυτό μπορεί να είναι καθυστερήσεις δικτύου, πληρότητα δίσκου, μη διαθεσιμότητα εξωτερικών υπηρεσιών (DNS), αστοχίες υλικού και εκατοντάδες άλλοι λόγοι. Για να ελέγξετε τη σταθερότητα οποιωνδήποτε συστημάτων που λειτουργούν συντονισμένα σε μεγάλο αριθμό μηχανημάτων συστημάτων, μπορείτε να χρησιμοποιήσετε
Χρησιμοποιώντας τον δικό της πράκτορα δικτύου, η Gremlin δημιουργεί πολλούς διαφορετικούς τύπους προβλημάτων στον απαιτούμενο αριθμό μηχανημάτων: καθυστερήσεις δικτύου, υπερφόρτωση οποιουδήποτε πόρου (CPU, δίσκος, μνήμη, δίκτυο), απενεργοποιεί μεμονωμένα πρωτόκολλα κ.λπ. Για τις αλυσίδες μπλοκ, το Gremlin μπορεί να χρησιμοποιηθεί σε διακομιστές testnet, μιμούμενοι τα προβλήματα της πραγματικής ζωής και παρατηρώντας τη συμπεριφορά του δικτύου. Με αυτό, οι προγραμματιστές και οι διαχειριστές μπορούν να παρατηρήσουν σε ένα ελεγχόμενο περιβάλλον τι θα συμβεί εάν το σύστημα διακοπεί ή όταν ενημερωθεί ο κώδικας. Σε αυτήν την περίπτωση, το δίκτυο πρέπει να διαμορφωθεί και να αναπτυχθεί εκ των προτέρων, καθώς και να ρυθμιστεί ώστε να συλλέγει τις απαραίτητες μετρήσεις.
Το Gremlin είναι ένα βολικό εργαλείο για αρχιτέκτονες, κατασκευαστές και ειδικούς σε θέματα ασφάλειας και μια καθολική λύση για τη δοκιμή οποιωνδήποτε έτοιμων και εκτελούμενων κατανεμημένων συστημάτων, συμπεριλαμβανομένων των blockchains.
Το Hyperledger Caliper είναι μια πολύ πιο εξειδικευμένη λύση
Χρησιμοποιώντας το Caliper, μπορείτε να ορίσετε την τοπολογία του δικτύου blockchain και τις συμβάσεις για δοκιμή, καθώς και να περιγράψετε τη διαμόρφωση του κόμβου. Οι κόμβοι της αλυσίδας μπλοκ ανυψώνονται σε δοχεία βάσης σε ένα μηχάνημα. Στη συνέχεια, μπορείτε να επιλέξετε τα απαραίτητα
Το Hyperledger Caliper είναι ένα εργαλείο που απευθύνεται σε προγραμματιστές και αρχιτέκτονες συστημάτων, καθώς παρέχει επαναληψιμότητα δοκιμών και αυτοματοποίηση δοκιμών και συγκριτικής αξιολόγησης. Χρησιμοποιείται στην ανάπτυξη του πυρήνα των blockchains: αλγόριθμοι συναίνεσης, μια εικονική μηχανή για την επεξεργασία έξυπνων συμβολαίων, ένα επίπεδο peer-to-peer και άλλους μηχανισμούς συστήματος.
Το MixBytes Tank χρησιμοποιεί πολλές υπηρεσίες cloud (Digital Ocean, Google Cloud Engine, κ.λπ.), στις οποίες μπορεί να εκκινήσει πολλούς κόμβους, να πραγματοποιήσει προκαταρκτικές διαδικασίες διαμόρφωσης, να εκτελέσει πολλά σημεία αναφοράς παράλληλα σε διαφορετικά μηχανήματα, να συλλέξει τις απαραίτητες μετρήσεις και να τερματίσει αυτόματα το δίκτυο.
Το MixBytes Tank σάς επιτρέπει να εξοικονομείτε χρήματα σε διακομιστές cloud ελαχιστοποιώντας αυτόματα τους περιττούς πόρους μετά από μια δοκιμή. Ένα άλλο χαρακτηριστικό γνώρισμα είναι η χρήση του πακέτου Molecule, το οποίο επιτρέπει στον προγραμματιστή να δοκιμάσει την ανάπτυξη του επιθυμητού blockchain τοπικά.
Το MixBytes Tank σάς επιτρέπει να εντοπίζετε έγκαιρα τα σημεία συμφόρησης και τα σφάλματα σε αλγόριθμους που προκύπτουν σε πραγματικά δίκτυα με μεγάλο αριθμό γεωγραφικά κατανεμημένων διακομιστών και πελατών. Η δεξαμενή θα σας βοηθήσει να κατανοήσετε τι θα συμβεί στους κόμβους εάν οι πελάτες στείλουν συναλλαγές με ένα δεδομένο tps σε εξαιρετικά επαναλαμβανόμενες συνθήκες και με πραγματικό αριθμό κόμβων κατανεμημένων σε διαφορετικές ηπείρους, εάν είναι απαραίτητο.
Το Whiteblock Genesis είναι μια πλατφόρμα δοκιμών για blockchains που βασίζονται στο Ethereum. Αυτό το εργαλείο έχει αρκετά μεγάλη λειτουργικότητα: σας επιτρέπει να εκκινήσετε ένα δίκτυο, να δημιουργήσετε τον απαιτούμενο αριθμό λογαριασμών σε αυτό, να αυξήσετε τον απαιτούμενο αριθμό πελατών, να διαμορφώσετε την τοπολογία δικτύου, να καθορίσετε τις παραμέτρους εύρους ζώνης και απώλειας πακέτων και να εκτελέσετε μια δοκιμή.
Το Whiteblock Genesis παρέχει τις δικές του εγκαταστάσεις δοκιμών. Οι προγραμματιστές πρέπει απλώς να καθορίσουν τις παραμέτρους δοκιμής, να τις εκτελέσουν χρησιμοποιώντας ένα έτοιμο API και να λάβουν αποτελέσματα χρησιμοποιώντας έναν βολικό πίνακα ελέγχου.
Το Whiteblock Genesis σάς επιτρέπει να διαμορφώσετε μια αρκετά λεπτομερή δοκιμή που θα διεξάγει αυτόματα η πλατφόρμα για κάθε σημαντική αλλαγή κώδικα. Αυτό θα σας επιτρέψει να εντοπίσετε τα σφάλματα σε πρώιμο στάδιο και να αξιολογήσετε αμέσως τον αντίκτυπο των αλλαγών σε σημαντικές παραμέτρους δικτύου, όπως η ταχύτητα συναλλαγής και οι πόροι που καταναλώνονται από τους κόμβους.
Μαντ
Ένα άλλο ενδιαφέρον νέο προϊόν για τη δοκιμή κατανεμημένων συστημάτων είναι
Το Madt εμφανίστηκε πρόσφατα, αλλά λόγω της πολύ ευέλικτης αρχιτεκτονικής του, μπορεί να εξελιχθεί σε ένα λειτουργικό προϊόν.
Άλλες λύσεις
Σχεδόν κάθε δοκιμή του τμήματος συστήματος των blockchains απαιτεί εκτέλεση προκαταρκτικών σεναρίων, προετοιμασία λογαριασμών και συνθηκών για τη δοκιμή (αυτό μπορεί να είναι ο έλεγχος συναινετικών σφαλμάτων που μπορούν να δημιουργήσουν πολυάριθμες διχάλες αλυσίδων, δοκιμή σεναρίων hard fork, αλλαγή παραμέτρων συστήματος κ.λπ.). Όλοι αυτοί οι χειρισμοί πραγματοποιούνται διαφορετικά σε διαφορετικές αλυσίδες μπλοκ, επομένως είναι ευκολότερο για τις ομάδες να προσαρμόσουν σταδιακά τη δοκιμή και τη συγκριτική αξιολόγηση προϊόντων σε εσωτερικούς CI/CD και να χρησιμοποιήσουν τις δικές τους εξελίξεις, οι οποίες σταδιακά γίνονται πιο περίπλοκες καθώς αναπτύσσεται η λειτουργικότητα του blockchain.
Ωστόσο, η χρήση έτοιμων λύσεων μπορεί να μειώσει σημαντικά τον χρόνο δοκιμών για αυτές τις ομάδες, επομένως πιστεύω ότι αυτό το λογισμικό θα αναπτυχθεί ενεργά τα επόμενα χρόνια.
Συμπέρασμα
Για να ολοκληρώσω αυτήν τη σύντομη ανασκόπηση, θα απαριθμήσω αρκετά σημαντικά χαρακτηριστικά των εργαλείων δοκιμής blockchain:
- Η δυνατότητα αυτόματης ανάπτυξης ενός δικτύου blockchain υπό επαναλαμβανόμενες συνθήκες. Αυτός ο παράγοντας είναι σημαντικός κατά την ανάπτυξη τμημάτων συστήματος των blockchains: αλγόριθμοι συναίνεσης, οριστικότητα, έξυπνες συμβάσεις συστήματος.
- Το κόστος κατοχής του συστήματος, οι πόροι που καταναλώνονται και η ευκολία για συνεχή χρήση. Αυτός ο παράγοντας παρέχει στο έργο δοκιμές υψηλής ποιότητας για λίγα χρήματα.
- Ευελιξία και απλότητα της διαμόρφωσης δοκιμής. Αυτός ο παράγοντας αυξάνει τις πιθανότητες εντοπισμού προβλημάτων συστήματος - υπάρχουν λιγότερες πιθανότητες να χάσετε κάτι σημαντικό.
- Προσαρμογή για συγκεκριμένους τύπους blockchains. Η ανάπτυξη μιας λύσης που βασίζεται σε μια υπάρχουσα μπορεί να βελτιώσει σημαντικά την ποιότητα και να μειώσει το κόστος χρόνου.
- Ευκολία και προσβασιμότητα των αποτελεσμάτων που λαμβάνονται και του τύπου τους (αναφορές, μετρήσεις, γραφήματα, αρχεία καταγραφής κ.λπ.). Αυτό είναι απολύτως απαραίτητο εάν θέλετε να παρακολουθείτε το ιστορικό ανάπτυξης ενός προϊόντος ή εάν χρειάζεστε βαθιά ανάλυση της συμπεριφοράς του δικτύου blockchain.
Καλή τύχη με τις δοκιμές σας και μακάρι τα blockchain σας να είναι γρήγορα και ανεκτικά σε σφάλματα!
Πηγή: www.habr.com