
In meinem Projekt führen wir Last- und Performancetests für eine große Applikationslandschaft durch. Mehrere Alt-Anwendungen werden hier aktuell durch moderne Microservices auf Kubernetes abgelöst. Dabei werden verschiedene Frontends, konkret die Endkunden via Web oder App, eigene Mitarbeitende oder aber Drittdienstleister, über externe Programmierschnittstellen (API – Application Programming Interface) beliefert.
Um sicherzustellen, dass die neue Anwendung mindestens genauso schnell arbeitet wie ihr Vorgänger, werden regelmäßig Lasttests durchgeführt.
Benutzererfahrung als Grundlage
Unser Team ist dafür verantwortlich, diese Microservices auf API-Ebene zu testen. Wir erstellen hierzu Tests, die eine vorgegebene Anzahl von Usern simulieren. Diese virtuellen Benutzer führen hierbei diverse Aktionen auf der Anwendung aus, die auch menschliche Nutzer üblicherweise durchführen würden.
Die Grundlage für die Tests bietet hierbei das so genannte Mengengerüst, welches – basierend auf Daten der Alt-Anwendung – definiert, wie viele User in der Regel welche Schritte durchführen. Je nach Art der User-Anfrage variiert dieses Mengengerüst erheblich. Dies ist auch so gewollt, um ein möglichst realitätsnahes, aber trotzdem exakt definiertes Lastszenario auf der Applikation abzubilden.
Das mag im ersten Moment relativ banal und langweilig klingen, ist es aber keinesfalls. Ganz im Gegenteil: Alle Prozesse der Testdurchführung sind sehr wichtig, um ein reibungsloses Funktionieren der Anwendung zu gewähren. Die Aufgaben und das Finden von Lösungen für scheinbar einfache Probleme sind zudem spannend und abwechslungsreich. Neben der eigentlichen Durchführung der Tests, die automatisiert jede Nacht geschieht, müssen beispielsweise auch neue Tests erstellt oder bestehende Tests angepasst werden, da sich der jeweilige Service dahinter verändert haben kann.
Tägliche Analyse der Testergebnisse
Darüber hinaus werden die Testergebnisse täglich analysiert. Mit Hilfe der Anwendung Grafana werden die Testergebnisse grafisch dargestellt, um direkt Abweichungen und Auffälligkeiten erkennen zu können.

Abbildung 1: Beispiel eines Grafana-Dashboards (Quelle: https://grafana.com)
Da Grafana lediglich unsere Testdaten visualisiert, nutzen wir parallel dazu Instana zur Darstellung von Metriken der Umgebung. Instana ist ein hilfreiches Tool, um detaillierte Daten zum Zustand des Gesamtsystems zu liefern. Dies können z. B. Aussagen zur Prozessorlast und dem belegten Arbeitsspeicher, genutzte Instanzen der einzelnen Services, bis hin zum Tracing, also dem genauen Nachverfolgen von einzelnen Anfragen quer durch die Applikation, sein.
Letzteres wird schließlich dazu genutzt, die Fehlerquelle möglichst genau zu lokalisieren, um so dann den Fehler mittels Jira zu protokollieren und dem zuständigen Team zuzuweisen. Jira ist eine webbasierte Projektmanagement-Software, die Teams dabei unterstützt, Aufgaben zu verfolgen, Projekte zu planen und die Zusammenarbeit zu koordinieren.

Abbildung 2: Beispiel eines Instana-Dashboards (Quelle: https://www.instana.com)
Zudem gibt es regelmäßig technische Updates der Infrastruktur, beispielsweise durch die Integration neuer Richtlinien, Programmupdates und sonstigen Änderungen. Diese Updates machen es wiederum notwendig, die Tests an die entsprechend neuen Vorgaben und Bedürfnisse anzupassen.