Was ist Synthetic Testing?
Synthetic Testing umfasst alle Vorgänge und Prozesse zur Erstellung synthetischer Tests. Diese Tests stellen eine wichtige Methode dar, um Einblicke in die Interaktion von Nutzern mit Ihren Anwendungen zu gewinnen. Häufig wird “Synthetic Testing” gleichgesetzt mit “Synthetic Monitoring” – das ist zwar nah dran, aber nicht ganz korrekt.
Im Kern besteht Synthetic Testing aus synthetischen Tests, die das Verhalten eines Nutzers in einer Anwendung, über ein Netzwerk oder bei der Nutzung einer API simulieren. Sie sind unverzichtbar, um potenzielle Probleme frühzeitig zu erkennen, Störungen zu vermeiden und Schwachstellen in der User Experience zu identifizieren. Dabei erzeugen synthetische Tests synthetische Daten, die sich wiederum zum Testen der Zuverlässigkeit, zum Aufspüren von Fehlern und zum Überprüfen der Leistung von Diensten oder Assets verwenden lassen. Oft werden solche Tests manuell erstellt, sie lassen sich aber auch automatisieren. Die Automatisierung und Analyse dieser synthetischen Tests bezeichnet man dann korrekterweise als Synthetic Monitoring. Somit sind Synthetic Testing und Monitoring nicht ganz dasselbe, arbeiten jedoch immer Hand in Hand.
Synthetic Testing ist entscheidend, um Leistungs- und Nutzungsprobleme zu erkennen, indem realer Datenverkehr nachgebildet wird. Dieser proaktive Ansatz hilft Unternehmen, Verfügbarkeits- und Performanceprobleme frühzeitig zu identifizieren und zu verhindern. Spezielle Plattformen mit eigener Syntax und definierten Ausführungsschritten unterstützen bei der Umsetzung. Diese Plattformen können in ein Synthetic-Monitoring-Tool integriert sein oder auch nicht.
Eine dieser Plattformen ist das Robot Framework, das Bibliotheken für viele Programmiersprachen enthält, auf deren Grundlage sich Integrationswerkzeuge entwickeln lassen. Darauf setzt auch das Synthetic Monitoring Add-on von Checkmk auf – und ermöglicht so einen proaktiven Monitoring-Ansatz mit synthetischen Tests.
Was sind die häufigsten Anwendungsfälle für synthetische Tests?
Grundsätzlich nutzt man synthetische Tests hauptsächlich in zwei Bereichen: für Browser- und für API-Tests.
Browser-Tests umfassen alle Aktionen, die über die Weboberfläche einer Anwendung ausgeführt werden: Klicken auf Schaltflächen, Folgen von Links, Ausfüllen von Formularen, Hinzufügen von Artikeln zu Warenkörben (für E-Commerce-Anwendungen), An- und Abmeldevorgänge, Authentifizierungen und vieles mehr. Mit Synthetic Testing lässt sich praktisch jede Funktion einer Webabwendung prüfen. Die Bibliotheken moderner Testing-Frameworks können Browser – und sogar unterschiedliche Versionen eines Browsers – emulieren, um zu testen, wie ein fiktiver Nutzer verschiedene Aufgaben erledigen würde. So lassen sich ganz einfach Kompatibilitätstests für unterschiedliche Browser durchführen, um sicherzustellen, dass die Anwendung überall reibungslos funktioniert. Darüber hinaus können logische Fehler in der Benutzerführung und Probleme mit der Benutzerfreundlichkeit frühzeitig entdeckt werden, bevor sie reale Nutzer beeinträchtigen.
API-Tests wiederum unterteilen sich in mehrere Kategorien. Am häufigsten wird die API durch HTTP-Anfragen getestet, um die Verfügbarkeit, Ladezeiten, Statuscodes und Inhalte von Headern oder Body zu prüfen. Ebenso typisch ist die Durchführung von SSL-Tests, um zu prüfen, ob Benutzer sich korrekt bei einer API authentifizieren können, beispielsweise durch die Validierung von SSL-Zertifikaten.
Darüber hinaus prüfen TCP-basierte Tests die Erreichbarkeit kritischer Ports wie SSH oder DNS. Wenn diese nicht verfügbar sind, kann dies auf ein Server-Problem hinweisen. Ähnlich können auch ihre Antwortzeiten geprüft werden, um mögliche Konfigurationsfehler zu erkennen.
Noch eine Ebene tiefer ermöglichen ICMP-basierte Tests die Messung von Netzwerklatenzen und die Erkennung grundlegender Verbindungsprobleme. All diese Testarten lassen sich zudem zu sogenannten „Multi-Step-API-Tests“ kombinieren, bei denen der Datenfluss von einem API-Endpunkt zum nächsten verfolgt wird. Jede Unterbrechung oder jedes fehlerhafte Datenelement weist potenziell auf ein tieferliegendes Problem hin, das vor dem Live-Betrieb gelöst werden sollte.
Natürlich werden Browser- und API-Tests nicht isoliert ausgeführt: Sie können nacheinander oder parallel laufen. In Kombination liefern sie wertvolle Einblicke, welche Funktionen bereits zuverlässig arbeiten – und wo sich Probleme abzeichnen. Optimalerweise werden beide Testarten in eine Synthetic-Monitoring-Lösung eingebunden, wie zum Beispiel dem Synthetic-Monitoring-Add-on von Checkmk. Auf diese Weise erhalten Tester ein vollständiges Bild der IT-Infrastruktur, indem klassisches IT-Monitoring um reale Nutzungsdaten ergänzt wird.
Was sind die Vorteile des Synthetic Testing?
Synthetic Testing ist in einer Vielzahl von Fällen nützlich. Mit Hilfe von Tests lassen sich synthetische Daten erzeugen, um reale Bedingungen zu simulieren, die in Ihren Umgebungen (noch) nicht aufgetreten sind. So kann etwa ein höheres Datenverkehrsvolumen als üblich im Netzwerk simuliert werden – API-Anfragen, die bislang noch nicht beobachtet wurden. Das zeigt, wie wichtig Synthetic Testing nicht nur für die Qualitätssicherung (QA) ist, sondern auch, um Probleme in der Produktion frühzeitig zu erkennen.
Da sich beliebige Arten und Mengen synthetischer Daten erzeugen lassen, können Anwendungen auf ihre Skalierbarkeit unter verschiedenen Lasten und an unterschiedlichen Standorten geprüft werden. Anstatt zu raten, wie Ihre Anwendung auf hypothetische Belastungen reagiert, können Sie das gezielt testen. Auch das Nutzerlebnis lässt sich schon vor dem Go-live überprüfen, indem Nutzerpfade automatisiert nachgebildet werden – Probleme bei der Bedienung oder Reaktionszeiten, ein häufiger Painpoint vieler Anwender, lassen sich sofort aufdecken.
Dieser Ansatz wird als “Synthetic Application Monitoring” bezeichnet und ergänzt das klassische Application-Monitoring perfekt, das reale Nutzerdaten im Live- oder Beta-Betrieb auswertet.
Ähnlich verhält es sich beim API-Tests: Es ist von großem Vorteil, vor der Veröffentlichung synthetische Tests zu schreiben. So lässt sich das Verhalten der API unter einer größeren Vielfalt an Anfragen prüfen – und feststellen, ob sie korrekt reagiert oder ob Probleme (bis hin zu Sicherheitslücken) bestehen.
Diese und viele weitere Einsatzmöglichkeiten machen Synthetic Testing zu einem unverzichtbaren Bestandteil von Synthetic Monitoring – und zu einer wichtigen Komponente, die in keinem modernen Unternehmen fehlen sollte.
Herausforderungen beim Synthetic Testing
Eine der größten Herausforderungen beim Synthetic Testing ist seine Komplexität. Ganz gleich, ob eine Anwendung getestet oder die Funktionen einer sich in der Entwicklung befindlichen API überprüft werden – die schiere Zahl potenzieller Fehlerquellen kann überwältigend sein. Alle Test zu schreiben, um jede Funktion und jedes mögliche Problem abzudecken, ist eine enorme Aufgabe. Das führt oft dazu, dass Administratoren lieber auf Real-User-Monitoring setzen, das echte Daten aus der Produktionsumgebung nutzt.
Darüber hinaus erfordert die Erstellung synthetischer Tests oft Programmierkenntnisse und Erfahrung in Skriptsprachen. Für nicht-technische Teammitglieder kann diese Einstiegshürde zu hoch sein, sodass sie lieber auf passive Monitoring-Methoden zurückgreifen. Selbst die Einrichtung einer Testreihe für nur eine Anwendung oder Oberfläche kann viele Arbeitsstunden beanspruchen. Synthetic-Testing-Frameworks wie das Robot Framework helfen hier oft, indem sie vorgefertigte Tests oder zahlreiche Beispiele bereitstellen, mit denen Entwickler schnell starten können. Die Integration solcher Tests in einer Synthetic-Monitoring-Solution ist oft stark vereinfacht und nahezu automatisiert, wie beispielsweise beim Add-on „Synthetic Monitoring” für Checkmk. Ein gewisser Initialaufwand bleibt jedoch unvermeidbar.
Sind die Tests einmal geschrieben und im Einsatz, besteht jedoch das Risiko, dass sie leicht brechen. Schon das Verschieben oder Umbenennen eines UI-Elements kann dazu führen, dass mehrere Tests fehlschlagen, was zu zahlreichen Fehlalarmen führt. Regelmäßige Überarbeitungen sind bei den meisten synthetischen Tests unvermeidbar. Daher sollte auch der Aspekt der Technical Debt bei der Planung einer Synthetic-Testing-Strategie mitbedacht werden.
Fazit
Lassen Sie sich nicht von den Herausforderungen beim Einrichten synthetischer Tests entmutigen. Die Möglichkeit, Benutzeroberflächen und APIs zu testen, Probleme für Benutzer frühzeitig zu erkennen und Anwendungen mit beliebigen Datenmengen und -typen einem Stresstest zu unterziehen, ist für moderne Unternehmen von unschätzbarem Wert. Kein Testsystem kommt ohne den Einsatz von Entwicklern und Administratoren aus – doch in Kombination mit einem leistungsfähigen Synthetic-Monitoring-Tool ist Synthetic Testing ein hervorragender Weg, um Zuverlässigkeit zu steigern, Verfügbarkeit zu sichern und eine schlechte User Experience zu vermeiden.
Mit Checkmk und dem Add-on „Synthetic Monitoring” steht Ihnen ein ideales Duo aus Synthetic Monitoring und Testing zur Verfügung. Tests mit dem Robot Framework zu schreiben, ist heute so einfach wie nie. Dank der umfangreichen Funktionen von Checkmk für Alarmierung, Reporting und dem Monitoring zahlreicher Assets und Services lässt sich Synthetic Testing mit minimalem Aufwand steuern. Die Tests können direkt in der vertrauten Checkmk-Oberfläche gestartet und ausgewertet werden, und durch die einfache Handhabung des Robot Frameworks können sogar nicht-technische Teammitglieder Tests entwickeln.
Synthetic Monitoring ist die perfekte Ergänzung zum Real-User-Monitoring und bietet einen möglichst ganzheitlichen Überblick über Ihre IT-Infrastruktur.