Song_about_summer - stock.adobe.
Leistungstests von Big-Data-Anwendungen sind entscheidend
Wenn es darum geht, Big-Data-Anwendungen zu testen, gibt es viel zu beachten. Datenmanager können möglicherweise überfordert sein. Es gibt allerdings hilfreiche Tools.
Datenqualität ist eines der anspruchsvollsten, aber auch wichtigsten Elemente des Softwaretestprozesses. Wenn es um das Testen von Big Data geht, gilt: Je mehr Daten, desto größer die Herausforderung.
Da das Testen der Big-Data-Qualität immer wichtiger wird, müssen die Tester sicherstellen, dass die Daten reibungslos erfasst werden. Ebenso werden Technologien, die Big Data unterstützen, immer wichtiger, einschließlich kostengünstigem Storage, verschiedener Arten von Datenbanken und leistungsstarke – und leicht verfügbare – Computerhardware.
Untersuchen wir, wie Performance-Tests von Big-Data-Anwendungen eine wichtige Rolle bei den täglichen Aufgaben eines Testers spielen.
Was ist Big Data?
Im Allgemeinen bezieht sich Big Data auf Daten, die die Fähigkeit herkömmlicher Datenbanken übersteigen. Außerdem geht es bei Big Data typischerweise um die Sammlung großer Mengen an unterschiedlichen Informationen über Kunden, Transaktionen, Website-Besuche, Netzwerkleistung und mehr. Unternehmen müssen all diese Daten speichern – möglicherweise über einen langen Zeitraum hinweg.
Big Data ist jedoch mehr als nur die Größe. Die wichtigsten Aspekte von Big Data können in die sechs V's unterteilt werden:
- Volume (Volumen): die schiere Menge der Daten;
- Velocity (Geschwindigkeit): wie schnell ein System die Daten erzeugen und transportieren kann;
- Variety (Vielfalt): wie viele verschiedene Arten von Daten vorhanden sind;
- Veracity (Richtigkeit): die Genauigkeit und Qualität der Daten;
- Variability (Variabilität): wie sehr die Datenströme variieren und sich häufig ändern; und
- Value (Wert): der Nutzen der Daten für das Unternehmen.
Big Data und das Geschäft
Big Data erfüllt geschäftskritische Anforderungen und generiert Wert, da es Unternehmen wichtige Informationen über Geschäftsentwicklung, Kunden und Wettbewerber liefert. Die Daten ermöglichen Analysen – die typischerweise Ergebnisse in statistischen Begriffen ausdrücken – wie Trends, Wahrscheinlichkeiten oder Verteilungen; das heißt Statistiken, die für die Entscheidungsträger eines Unternehmens hilfreich sein können. Bei Big-Data-Anwendungen dreht sich alles um Analysen im Gegensatz zu Datenabfragen.
Big Data ist in der Regel unstrukturiert und passt nicht in ein definiertes Datenmodell mit organisierten Spalten und Zeilen. Die Daten können in Audio- und visuellen Formaten wie Telefonanrufe, Sofortnachrichten, Voicemails, Bilder, Videos, PDFs, Geodaten und Diashows vorliegen.
Die Daten können auch in Form von Beiträgen in sozialen Medien vorhanden sein. Das Format und die Herkunft eines Stapels von Big Data kann besondere Überlegungen für die Qualitätssicherung (QS) erfordern. Um Big Data aus sozialen Medien zu testen, müssen die Tester beispielsweise jeden einzelnen Social-Media-Kanal untersuchen, um sicherzustellen, dass die angezeigte Werbung dem Kaufverhalten der Benutzer entspricht.
Big-Data-Anwendungen testen
Obwohl Tester im Allgemeinen nicht die Daten selbst testen, benötigen sie ein grundlegendes Wissen über den Datenbanktyp, die Datenarchitektur und den Zugriff auf diese Datenbank, um die Big-Data-Anwendung erfolgreich zu testen. Es ist unwahrscheinlich, dass die Tester Live-Daten verwenden, daher müssen sie eine eigene Testumgebung mit einer Version der Datenbank und genügend Daten vorhalten, um die Tests realistisch zu gestalten.
Anwendungen, die auf analytische Ausgaben angewiesen sind, sind nicht alle gleich. Anstatt die Datenbank nach einem bestimmten Ergebnis abzufragen, führt ein Benutzer mit größerer Wahrscheinlichkeit statistische und Sensitivitätsanalysen durch. Dies bedeutet, dass die richtige Ausgabe – die Antwort – von Verteilungen, Wahrscheinlichkeiten oder Zeitreihentrends abhängt.
Es ist für Tester unmöglich, die Antworten im Voraus zu kennen, da es sich oft um Trends und komplizierte Berechnungen handelt, nicht um einfache Felder in einer Datenbank. Und wenn die Tester diese Antworten gefunden haben, werden sie nicht offensichtlich richtig oder falsch sein, was für die Tester, die Testfälle entwerfen und die Ergebnisse analysieren, eine weitere Ebene der Unsicherheit bedeutet.
Tests basieren auf ELT
Aufgrund der schieren Menge an Daten und ihrer unstrukturierten Natur ist der Testprozess schwer zu definieren. Das Testen muss automatisiert werden, und obwohl es viele Tools gibt, sind sie komplex und erfordern technische Fähigkeiten zur Fehlerbehebung.
Auf höchster Ebene umfasst der Big-Data-Testansatz sowohl funktionale als auch nicht-funktionale Komponenten. Funktionales Testen validiert die Datenqualität und die Verarbeitung der Daten. Alle Big-Data-Teststrategien basieren auf dem Prozess Extrahieren, Laden, Transformieren (Extract, Load, Transform, ELT). Big Data-Tests validieren die Datenqualität aus den Quelldatenbanken, das Laden in das Data Warehouse und die Datenstrukturtransformation.
ELT-Tests haben drei Phasen:
- Data Staging
- MapReduce-Validierung
- Output-Validierung
Data Staging (Datenbereitstellung) wird validiert, indem die aus den Quellsystemen kommenden Daten mit den Daten am Bereitstellungsort verglichen werden.
Die nächste Phase ist die MapReduce-Validierung, also die Validierung der Datentransformation. MapReduce ist das Programmiermodell für unstrukturierte Daten, wobei Hadoop-Implementierungen am häufigsten eingesetzt werden. Dieser Test stellt sicher, dass die Geschäftsregeln, die eine Anwendung zur Aggregation und Segregation der Daten verwendet, richtig funktionieren.
Die letzte ELT-Phase ist die Phase der Output-Validierung (Ausgabevalidierung), in der die Ausgabedateien aus MapReduce bereit sind, in das Data Warehouse zu gelangen. Wenn die Daten diese Phase erreichen, sind Datenintegrität und Transformation vollständig und korrekt.
Data Ingestion ist die Last, das heißt, wie kommen die Daten in die Anwendung. Leistungstests für diese Komponente sollten sich auf Stress- und Lasttests für diesen Prozess konzentrieren. Solche Tests sollten auch überprüfen, ob eine Anwendung Abfragen und Nachrichten effizient verarbeitet.
Die Beurteilung der Leistung der Datenverarbeitung ist entscheidend für den Gesamttest. Validieren Sie die Geschwindigkeit der MapReduce-Jobs und erwägen Sie die Erstellung eines Datenprofils, um den gesamten End-to-End-Prozess zu testen.
Die Analysen, die zur Verarbeitung von Big Data verwendet werden, sollten auf ihre Leistung getestet werden. Hier werden die Algorithmen und der Durchsatz validiert.
Stellen Sie schließlich sicher, dass Parameter, einschließlich der Größe von Commit Logs, Concurrency, Caching und Timeouts, in die Leistungsteststrategie einbezogen werden.
Herausforderungen bei Big-Data-Leistungstests
Wie beim funktionalen Testen führen Volumen und Vielfalt – insbesondere deren unstrukturierte Natur – von Big Data zu potenziellen Problemen im Zusammenhang mit Leistungstests. Wenn diese Probleme mit der Geschwindigkeit beziehungsweise der hohen Big-Data-Verarbeitungsgeschwindigkeit gekoppelt werden, öffnet dies die Tür für eine Vielzahl von Problemen, denen sich die Tester bewusst sein müssen.
Aber genau diese Überlegungen machen Performance-Tests noch wichtiger. Tester sollten die Last, die Antwortzeiten, die Netzwerkbandbreite, die Speicherkapazität und andere analytische Komponenten validieren, da Probleme in jedem dieser Bereiche aufgrund der schieren Größe, des Volumens und der Geschwindigkeit von Big Data zu Problemen führen werden.
Die Datenverarbeitung setzt sich aus drei Aktivitäten zusammen: Extrahieren, Transformieren und Laden. Die Leistungsteststrategie muss jede dieser Aktivitäten sowie den gesamten Datenfluss berücksichtigen. Auf einer oberen Ebene sind die Hauptkomponenten der Leistungstests für Big Data Aufnahme (Ingestion), Verarbeitung und Analyse.
Öffnen Sie den Werkzeugkasten
Viele Arten von Tools unterstützen Big-Data-Anwendungen, einschließlich Tools für die Speicherung, Verarbeitung und Abfrage. Hier sind ein paar häufig verwendete Optionen.
Das Hadoop Distributed File System (HDFS) speichert Daten auf mehreren Rechnern, während Hadoop MapReduce eine parallele Verarbeitung für Abfragen ermöglicht. Außerdem hat Apache Ozone veröffentlicht, einen skalierbaren verteilten Objektspeicher für Hadoop.
Ein weiteres Angebot von Apache ist Hive, ein Open Source Data-Warehouse-System, das es Data Scientists und Entwicklern ermöglicht, Abfragen mit einer SQL-ähnlichen Sprache zu erstellen. Pig Latin, eine für Apache Pig geschriebene Abfragesprache, hilft Teams bei der Analyse großer Datensätze. Sie kann mit komplexen Datenstrukturen und NoSQL umgehen, was oft zur Abfrage unstrukturierter Daten verwendet wird.
Aus der Perspektive der Big-Data-Analytik sind einige der leistungsfähigsten Tools Tableau, Zoho Analytics und Splunk. Tableau bietet eine Engine, die mehrere Datenpunkte zusammenführen kann und von den Benutzern keine Programmierkenntnisse für die Erstellung von Datenabfragen verlangt. Zoho Analytics ist benutzerfreundlich und bietet eine große Auswahl an detaillierten Berichten. Die wichtigste Eigenschaft von Splunk ist seine Skalierbarkeit; es kann bis zu 100 TB pro Tag verarbeiten.
Die Reife von NoSQL-Datenbanken, wie zum Beispiel MongoDB und Couchbase, ermöglicht ein effektiveres Big-Data-Mining für die Analytik. Spezialisierte Datenbanken können für bestimmte Anwendungen eingesetzt werden, zum Beispiel In-Memory-Datenbanken für hohe Leistung und Zeitseriendatenbanken für Datentrends im Zeitverlauf.
Tester sollten Testfallkonventionen über Bord werfen, wenn sie Big Data Setups testen. Anstatt nach einer spezifischen und bekannten Antwort zu suchen, sollten die Tester nach einem statistischen Ergebnis suchen, so dass die Testfälle dies widerspiegeln müssen. Wenn Sie zum Beispiel Big Data testen, welches eine Einzelhandels-Website sammelt, müssen Sie Testfälle entwerfen, die es dem Team ermöglichen, aus allen Informationen über Kunden, ihre Suchanfragen, in den Warenkorb gelegte Produkte, Kaufabbrüche und Kaufhistorien Rückschlüsse auf das Kaufpotenzial zu ziehen.
Schließlich sollten die Tester die Testergebnisse nicht nach ihrer Korrektheit bewerten, da es keine einfache Möglichkeit gibt, dies zu bestimmen. Möglicherweise müssen Sie das Problem in kleinere Teile zerlegen und die Tests von jedem Teil analysieren. Nutzen Sie technische Fähigkeiten und problemlösende Kreativität, um zu bestimmen, wie Testergebnisse zu interpretieren sind.
Wo Tests hineinpassen
Als Tester hat man oft eine Hassliebe zu Daten. Die Verarbeitung von Daten ist der Hauptgrund für die Existenz unserer Anwendungen, und ohne Daten können wir nicht testen. Daten sind oft die Ursache von Testproblemen. Wir haben nicht immer die Daten, die wir brauchen, was zu blockierten Testfällen führt, und Fehler werden als Datenprobleme gemeldet.
Die Datenmenge ist in den letzten Jahren exponentiell gewachsen und wächst weiter. Wir begannen das Testen mit Megabytes und Gigabytes, gefolgt von Terabytes und Petabytes, und jetzt haben sich Exabytes, Zettabytes und Yottabytes der Datenlandschaft angeschlossen. Willkommen in der schönen neuen Welt des Big-Data-Testens.