Funktionalitäts- und Lasttests

Die User Experience steht bei der Softwareentwicklung an erster Stelle. Das schließt nicht nur die Funktionalität und die Usability einer Anwendung mit ein, sondern auch die Performance. Langsame Apps werden von Nutzern schnell wieder vom Handy gelöscht. Auch lange Ladezeiten auf Webseiten wird kaum ein Nutzer tolerieren, was zu entgangenem Traffic führt. Deswegen ist es sinnvoll, Funktionalitätstests mit Lasttests zu kombinieren, um zu prüfen, ob die Features einer Anwendung auch bei Lastspitzen wie gewollt funktionieren. Ein typischer QA-Prozess kann dabei folgende Phasen haben:

  • Die Anwendung durchläuft erfolgreich die Unit- und Integrationstests.
  • Automatisierte Funktionalitätstests prüfen, ob neue Funktionen einer Anwendung oder Website wie in den User-Storys/BDD-Szenarios funktionieren und keine Regressionen eingeführt worden sind.
  • Das QA-Team führt explorative Tests durch, um versteckte Defekte aufzudecken. All diese Tests werden bei einer geringeren Last als unter realen Umständen durchgeführt.
  • Abschließend prüft ein Leistungstests dann das Systemverhalten in einem simulierten Nutzungsszenario mit variierendem Traffic, mehreren Nutzern, erhöhter Netzwerklast usw.

Der Nachteil dieses Ansatzes liegt auf der Hand: Die ersten drei Testphasen zeigen nur, wie sich die Anwendung unter idealen Bedingungen verhält. Erst am Ende lässt sich erkennen, wie das System unter realistischen Nutzungsbedingungen funktioniert. Im Gegensatz dazu würde ein Testprozess mit kombinierten Funktionalitäts- und Lasttests folgendermaßen aussehen:

  • Die Anwendung durchläuft erfolgreich die Unit- und Integrationstests.
  • Automatisierte Funktionalitätstests werden zusammen mit Lasttests durchgeführt, um zu prüfen, ob die Anwendung auch unter realistischen Bedingungen wie gewollt funktioniert.
  • Das QA-Team führt explorative Tests durch, um versteckte Defekte aufzudecken. Zuerst werden diese Tests bei einer geringeren Last als unter realen Bedingungen durchgeführt, dann folgen allerdings weitere explorative Tests unter einer simulierten Last. So lässt sich besser einschätzen, wie Endnutzer die Anwendung verwenden werden.

Dieser Zugang zum Testprozess macht es möglich, die Kernfunktionalität einer Anwendung schon früh unter realistischen Bedingungen zu testen. Dadurch ist es einfacher, Fehler zu identifizieren und zu beheben.

Schlüsselkonzepte

Leistungstests

Leistungstests generieren Richtwerte zur Bewertung eines Systems, also einer Anwendung oder Webseite inkl. allfälliger Datenbanken, Servern, Netzwerkhardware usw. besteht. Beispiele für solche Richtwerte sind: die Anzahl der gleichzeitigen Nutzer, die eine Anwendung sicher bewältigen kann; wie schnell das System reagiert, welche Ressourcen es verbraucht, Latenz usw. Allgemein meint Latenz dabei die Zeit, die eine Anwendung benötigt, um auf eine Nutzereingabe zu reagieren. In der Netzwerktechnik bezeichnet Latenz spezifischer die Zeit, die ein Datenpaket benötigt, um von einem Netzwerkknoten zu einem anderen zu gelangen bzw. um wieder am Ausgangspunkt anzukommen.

Lasttests

Lasttests sind eine Unterkategorie von Leistungstests. Sie dienen dazu, die Leistung einer Anwendung unter definierten Lastzeiten von „normaler“ und „hoher“ Intensität zu prüfen. Dies geschieht z.B. durch Simulieren einer bestimmten Anzahl gleichzeitiger Nutzertransaktionen bei einem bestimmten Gesamtvolumen von Transaktionen. Das Ziel von Lasttests ist es, zu prüfen, ob ein System sowohl unter normaler als auch hoher Last gut funktioniert.

Stresstests

Wie Lasttests sind auch Stresstests eine Unterkategorie von Leistungstests. Sie dienen dazu, jenen Punkt zu ermitteln, an dem die Reaktionsfähigkeit eines Systems signifikant nachlässt oder völlig ausfällt, den sogenannten Breaking Point.  Dazu wird die Systemlast über das erwartete Maß hinaus gesteigert. Stresstests sind nützlich, um herauszufinden, wie sich eine Anwendung oder eine Webseite unter extremen Bedingungen verhält. So kann z.B. ermittelt werden, wie lange eine Anwendung benötigt, um wieder zu funktionieren, nachdem sie aufgrund von zu vielen Nutzertransaktionen abgestürzt ist und welche Konsequenzen ein solcher Ausfall nach sich zieht (bspw. verlorene Daten).

Best Practices

Messbare Kriterien definieren

Stellen Sie sicher, dass Sie messbare Leistungsziele definieren, wie z.B. Reaktionszeit, Durchsatz, Anzahl der Anfragen pro Sekunde und Ressourcennutzung. Messen Sie die Leistung immer aus der Sicht der Nutzer. Bspw. hat eine schnelle Serverreaktionszeit wenig Nutzen, wenn die Clientanwendung langsam ist.

Realistische Szenarios nutzen

Erstellen Sie realistische Tests, die die häufigsten Abläufe simulieren. Priorisieren Sie dabei die sogenannten „Happy Paths“ bzw. „Golden Paths“ der Nutzer. Mehr Informationen zur Priorisierung von Funktionalitätstests finden Sie in Artikel #9, E2E-Tests richtig nutzen, unserer Best-Practices-Serie.

Eine saubere Testumgebung

Isolieren Sie Ihre Testumgebung gegen anderen Anwendungen und Traffic, der die Leistung beeinflussen könnten. Bei Webtests bedeutet dies z.B., dass Sie Ihren Browsercache und die Cookies löschen sollten. Wenn der Browser gecachete Daten und Cookies zur Verarbeitung von Anfragen verwendet, können diese nämlich sonst zu unzuverlässigen Testergebnissen führen.

Risikoreiche Szenarien zuerst prüfen

Führen Sie Smoke- und Sanity-Tests durch, bevor Sie zu anderen Tests übergehen. Sollte die Anwendung ein signifikantes Problem aufweisen, muss dieses erkannt werden, bevor unnötig Zeit in weiterführende Tests investiert wird.

Klein anfangen

Stellen Sie sicher, dass Ihre Funktionalitätstests bei einer zunächst geringen Anzahl von Nutzern ordnungsgemäß durchlaufen. Dann erhöhen Sie schrittweise die Nutzeranzahl, um zu prüfen, wo der Flaschenhals der Anwendung liegt.

Tools

Ranorex Studio beinhaltet ein umfangreiches Toolset zur Automatisierung von Funktionalitätstests für Desktop-, Web- und Mobilanwendungen. Auch Lasttests können auf verschiedene Arten durchgeführt werden:

  • Mit datengetriebenen Tests greifen Sie auf ein Datenset zurück, das der Test dann auf die AUT in Form typischer Nutzeraktionen (Erstellen, Aktualisieren, Löschen von Einträgen) anwendet.
  • Mit Iterationen können Sie Testaktionen wiederholt ausführen lassen, um Nutzeraktionen wie Seitenanfragen und -aktualisierungen zu simulieren.
  • Auch Paralleltests lassen sich ausführen, wodurch Last durch Zugriffe von mehreren Maschinen aus simuliert wird.

Für umfassendere Lasttests bietet Ranorex Studio auch eine Integration mit NeoLoad von Neotys. NeoLoad bietet erweiterte Werkzeuge zur Erstellung und Analyse von Lasttests, wie z.B Komponententests für APIs, Webdienste und Microservices. Um dabei eine möglichst wirklichkeitsnahe Analyse Ihrer Anwendung zu ermöglichen, unterstützt NeoLoad physische Maschinen, virtuelle Server und cloudbasierte Anbieter an verschiedenen geographischen Standorten. Auf diese Weise erlaubt es Ihnen NeoLoad, Leistungsengpässe in der Infrastruktur Ihrer Anwendung zu erkennen. Hier einige Ressourcen zum Einstieg in die NeoLoad-Integration mit Ranorex Studio:

Download des NeoLoad-Plugins für Ranorex Studio

NeoLoad-Integration für Ranorex Studio auf GitHub. In diesem Link finden Sie die benötigten Dateien und eine schrittweise Anleitung zur Konfiguration und Verwendung des Plugins für Ranorex Studio.

On-Demand-Webinar

Combining Automated Functional and Load Testing In diesem Webinar zeigen wir Ihnen die Vorteile kombinierter Funktionalitäts- und Lasttests mit Ranorex Studio und NeoLoad.

Blogartikel

Ranorex-NeoLoad Webinar – Questions Answered. In diesem Blogartikel sind die Antworten auf die Nutzerfragen aus dem Webinar gesammelt, um Ihnen die Einrichtung der NeoLoad-Integration in Ranorex Studio weiter zu erleichtern.

Fazit

Mit diesem Artikel haben Sie das Ende unserer Serie „10 Best Practices in der Testautomatisierung“ erreicht. Wir hoffen, dass die Blogartikel dieser Serie für Sie hilfreich und informativ waren. Wenn Sie an weiteren Artikeln und Screencasts zum Thema Testautomatisierung interessiert sind, werfen Sie einen Blick auf unsere Ressourcen. Oder laden Sie unser kostenloses Whitepaper herunter: 10 Strategien für ein erfolgreiches Automatisierungsprojekt. Möchten Sie Ranorex Studio ausprobieren? Laden Sie weiter unten unsere kostenlose Testversion herunter und finden Sie heraus, wie Ranorex Studio Ihren Testalltag erleichtern kann. Kontaktieren Sie auch unser Sales-Team, wenn Sie kostenlose Hilfe bei der Einrichtung von Ranorex Studio benötigen.  Registrieren Sie sich auch für eines unserer regelmäßigen kostenlosen Live-Webinare, in denen wir uns mit verschiedenen Themen zu Desktop-. Web- und Mobiltests auseinandersetzen.

Steigen Sie direkt in die Testautomatisierung ein mit unserer kostenlosen 30-tägigen Testversion: