Experten-Blog

Bessere Performance durch automatisiertes Testing

  • Stefanie Berger

Im Live-Betrieb einer Website führen lange Ladezeiten oder Ausfälle zu unzufriedenen Nutzer:innen. Zudem entsteht dadurch ein Reputationsschaden bei den Kund:innen sowie bei der Digitalagentur oder bei den Betreiber:innen der Website. Doch wo liegt der Schlüssel für eine stabile Performance? Liegt er in der Entwicklung oder im Betrieb?

Ursprung von schlechter Performance

Um schlechte Performance zu verhindern, müssen wir zuerst feststellen, wie schlechte Perfomance entsteht. Performance Test und Lasttests werden im klassischen Projektvorgehen oft nur einmal durchgeführt – am Ende der Entwicklung und kurz vor Go-live. Während der Lasttests wird die Applikation unter der zu erwartenden Last getestet: zum Beispiel, ob in einem Commerce-System eine Vielzahl von Personen gleichzeitig den Warenkorb befüllen können. Die Tests entdecken Performance-Engpässe oder führen sogar zum Crash der Webapplikation. Performance-Probleme sind vielfach auf Änderungen im Code oder auf Anpassungen bei Schnittstellen zurückzuführen.

Der Schlüssel liegt darin, das Performance Testing direkt in die Deployment Pipeline zu integrieren.

Integration in die Deployment Pipeline

Das Ziel ist, die Auswirkungen von Code auf die Performance möglichst früh festzustellen und zu beheben. Doch wie kann dies im agilen Vorgehen, wenn wir zum Beispiel alle drei Wochen neuen Code mit neuen Funktionen in die Live-Applikation einspielen, gelingen? Der Schlüssel liegt darin, das Perfomance Testing direkt in die Deployment Pipeline zu integrieren. So können wir die Performance Tests automatisiert ausführen. Entweder können wir so die Performance Tests automatisiert, zum Beispiel nach einem Deployment, ausführen oder manuell per Klick starten.

Integration in das agile Projektvorgehen

Wie das Beispiel in der Grafik zeigt, laufen die Lasttest jede Nacht auf dem Testsystem. Damit die Lasttests aussagekräftig sind, muss das Testsystem identisch wie die Produktion aufgebaut sein. Probleme erkennen wir nun direkt, wenn sie erstmalig nach einem Deployment auftauchen. Zu diesem Zeitpunkt ist es für die Entwickler:innen besser nachvollziehbar, welche Code-Änderungen sich auf die Performance ausgewirkt haben. Somit können wir die Probleme früher und günstiger beheben, als wenn der Test erst Monate nach der Entwicklung erfolgt.

Dank Performance Testing können wir schneller und besser nachvollziehen, welche Code-Änderungen sich auf die Performance auswirken.

Integration ins agile Projektteam

Die Ergebnisse der Performance Tests sind für alle Projektmitglieder inklusive Kund:innen sichtbar. Der Vergleich zum Resultat vom letzten Deployment hilft dem DevOps-Team zu entscheiden, ob ein Deployment auf die Produktion möglich ist. Zeigen die Tests eine Verschlechterung der Performance auf, sucht das Team gemeinsam nach der Ursache und nach einer Lösung. Es kann sein, dass wir weitere Entwicklungen zurückstellen, bis wir das Problem beheben konnten. Nur so können wir sicherstellen, dass Performance-Probleme nicht über mehrere Releases mitgezogen werden.

Automatisiertes Performance Testing zahlt sich aus

Automatisiertes Performance Testing zahlt sich aus: fürs Entwicklungsteam, für die Organisation und für die Kund:innen. Diese wissen vor der Auslieferung des Releases, ob die Änderungen und die neuen Features der zu erwartenden Last standhalten werden. Zudem sind die einmaligen Aufwände für die Testkonzeption durch die kontinuierliche Ausführung nachhaltig investiert. Performance bleibt zwar weiterhin eine verwundbare Stelle in der Webapplikation, doch das Risiko eines Vorfalls im Live-Betrieb können wir so nachhaltig reduzieren.