3 min read

serverless-architectureEine blockchain ist eine ständig wachsende Liste von Datensätzen, den sogenannten Blöcken, die kryptographisch verknüpft und gesichert sind. Einige Beispiele sind Bitcoin, Ripple, Ethereum. Jeder Block enthält typischerweise einen Hash-Pointer als Link zu einem vorherigen Block, einen Zeitstempel und Transaktionsdaten. Die Technologie verwendet ein intelligentes Vertragsprotokoll oder eine Regel, die unveränderlich ist, so dass sie nach dem Einsatz dauerhaft bleibt. Nehmen wir an, es wird eine aktualisierte Version eines bestehenden Vertrages erstellt, um einen Produktionsfehler zu beheben, die manuelle Übertragung der gespeicherten Daten ist erforderlich - was ein umständlicher Prozess ist.

Aufgrund dieser Eigenschaften ist das richtige Testen und Validieren für Blockchain-Anwendungen im Vergleich zu anderen wichtiger geworden.

Neben allen erforderlichen Tests wie Funktions-, Integrations-, Sicherheits-, Leistungs- und Spezialtests erfordern Blockchain-Tests zusätzlich Smart Contract Testing, Node-Tests und Advanced Level Non-Functional Testing. Bevor wir auf die Faktoren eingehen, die beim Testen zu berücksichtigen sind, lassen Sie uns über die Herausforderungen sprechen.

  • Technologie-Stack : Ein Hauptfaktor, der das Testen beeinflusst, ist abhängig von den zugrunde liegenden Entwicklungsplattformen wie Ethereum, Openchain oder jeder anderen kundenspezifischen Plattform. Richtlinien und Empfehlungen auf Branchenebene auf der Ebene von Tests sind für beide Plattformen, Openchain und Ethereum, verfügbar. Aber eine detaillierte Analyse und eine Teststrategie sind erforderlich, um die maßgeschneiderte Funktionalität zu testen.
  • Leistungstests: Für Leistungstests ist eine Nachbildung der Produktionsumgebung erforderlich. Um jedoch den Grad der Transaktion und die Verzögerung bei der Verarbeitung der Transaktion zu replizieren, ist es schwierig, Performance-Tests durchzuführen. Um zum Beispiel jetzt eine Bitcoin-Transaktion einzuleiten, müssen Miner die Transaktion bestätigen und validieren, die sich aufgrund einer erhöhten Nutzung verzögern kann. Diese Implementierung kann nicht in einer Dummy-Umgebung repliziert werden.
  • Integrationstests: Es ist schwierig sicherzustellen, dass eine Blockchain-Implementierung fehlerfrei ist. Die Integration einer Blockchain-App in verschiedene Systeme und Umgebungen ist oft sehr schwierig. Die Hauptaufgabe besteht also darin, sicherzustellen, dass die Antwort von allen Schnittstellen konsistent ist und es keine Trennungen gibt. Die Herausforderung besteht darin, dass an allen Schnittstellen keine ausreichenden Informationen über den Antwortzustand vorhanden sind.
  • Sicherheit: Knoten und gemeinsames Ledger sind die wichtigsten Bestandteile der Blockchain zur Sicherung einer Blockchain-Anwendung. Wenn beispielsweise ein Knoten im Netzwerk von so etwas wie DDoS angegriffen wird, dann ist die auf der Blockchain gehostete Anwendung betroffen.

In der Blockchain werden Transaktionen mit hohem Volumen im gesamten Netzwerk repliziert, was oft eine Herausforderung darstellt, da dies das Netzwerk verlangsamen kann. Die folgenden 4 Hauptüberlegungen müssen für eine erfolgreiche Teststrategie für Blockchain-Anwendungen berücksichtigt werden:

1. Smart contract testing: Validieren Sie die Methoden für Smart Contracts in der gleichen Weise wie beim API-Test, einschließlich der Validierung der Methoden, der Überprüfung des Grenzwerts und der Überprüfung der bedingten Anweisung. Anschließend sollte die Validierung der Verschlüsselung für den Smart Contract über ein verteiltes Ledger an ein anderes System gesendet werden. Der Unit Level Test für QAs besteht darin, alle APIs für den Smart Contract einzeln zu testen und anschließend Integrationstests durchzuführen.

2. Node testing: Blockchain-Funktionen in einem verteilten Peer-to-Peer-Netzwerk über Netzwerkknoten unter Verwendung eines speziellen Protokolls zur Authentifizierung. Es prüft mit der Mehrheit der Knoten und genehmigt den Block auf seine Gültigkeit, um eine erfolgreiche Transaktion durchzuführen. Daher müssen alle heterogenen Knoten unabhängig voneinander getestet werden.

3. Leistung: Um die Herausforderung des Leistungstests zu bewältigen, benötigen wir alle Details wie die Netzwerklatenz basierend auf Blockgröße, Netzwerkgröße, erwarteter Transaktionsgröße und wie lange eine Abfrage dauert, um die Ausgabe mit einem speziellen Authentifizierungsprotokoll zurückzugeben. Performance-Tests werden auf der Grundlage dieser Parameter durchgeführt und um den Failover mit einem abrupten Peak oder einem Downside zu überwinden, müssen wir Cloud-Umgebungsfunktionen wie Auto-Scaling für chaotische Situationen nutzen.

4. Sicherheit: Es ist wichtig, die Integrität des Netzwerks zu identifizieren. Alle Transaktionen sind kryptographisch verschlüsselt. Sobald die Identitätsschicht jedoch gehackt ist, kann die sofortige Transaktion nicht mehr gestoppt werden. Einige Tests müssen für eine sichere Transaktion mit Blockchain-Technologie in Betracht gezogen werden, um Herausforderungen zu meistern, wie z.B.:

  • Zugang und Authentifizierung
  • Sicherer Hash, Konsens-Algorithmus
  • Wallet Signaturverfahren
  • Private Schlüssel
  • OWAPS-Richtlinie für mobile und webbasierte Anwendungen
  • Schwachstellenanalyse
  • Validierung der bereitgestellten Informationen

Während diese Faktoren die Implementierung der Blockchain-Technologie beeinflussen, sind die Herausforderungen nicht auf diese beschränkt, da das Testen davon abhängen würde, wie die Blockchain für Ihre Anwendung implementiert wurde. Diese Faktoren geben jedoch einen Leitfaden für ein effektives Testen mit einem geeigneten Validierungs- und Verifizierungsansatz für die auf Blockchain-Technologie basierenden Anwendungen.