Leistungstests – ein Leitfaden für Software-Leistungstests

Leistungstests – ein Leitfaden für Software-Leistungstests
MIN
20 Juni 2023

Leistungstests für jede Anwendung helfen dabei, die Grenzen (Engpässe) der Anwendungsleistung zu ermitteln. Leistungstests sind unerlässlich, um eine optimale Anwendungsleistung zu erzielen und die Stabilität und Zuverlässigkeit der Anwendung zu gewährleisten. Bei Leistungstests messen wir nicht nur die Antwortzeit der Anwendung, sondern auch verschiedene andere qualitative Merkmale wie Stabilität, Zuverlässigkeit, Robustheit, Skalierbarkeit, Ressourcenauslastung usw. In Zukunft werden wir hier ein Tutorial über Leistungstests mit JMeter veröffentlichen.

Inhaltsübersicht

Was sind Leistungstests?

Leistungstests sind ein integraler Bestandteil der nichtfunktionalen Tests, bei denen die Leistung einer Anwendung durch die Simulation von erwarteten oder übermäßigen Belastungen bewertet wird. Ziel ist es, zu sehen, wie sich die Anwendung unter verschiedenen Lastbedingungen verhält und ihre Leistung zu bewerten.

Grundsätzlich versuchen wir bei Leistungstests, die reale Arbeitslast mit Tools wie JMeter zu simulieren. Mit diesen Werkzeugen können wir virtuelle Benutzer erstellen, die verschiedene Operationen in der Anwendung durchführen und so die Handlungen echter Benutzer simulieren.

Leistungstests – Arten von Leistungstests

Belastungstests

Lasttests sind eine Art von Leistungstests, bei denen die Leistung einer Anwendung unter einer erwarteten Last bewertet wird. Bei Lasttests bewerten wir verschiedene Leistungsparameter wie Antwortzeit, Serverlast und Fehlerraten, die während der Ausführung von Lasttests beobachtet werden.

Stresstests

Stresstests sind eine Art von Leistungstests, bei denen die Leistung einer Anwendung unter Belastungen bewertet wird, die viel höher sind als die erwartete oder vorhergesagte Belastung. Mit diesem Ansatz können Sie die Belastungsschwelle oder den Punkt, an dem die Anwendung nicht mehr richtig reagiert, bestimmen.

Ausdauertests

Dauertests werden auch als „Langzeitbelastungstests“ oder „Stabilität unter Belastung“ (Soak-Test) bezeichnet. Bei Dauertests wird die zu prüfende Anwendung über einen langen Zeitraum, z. B. 2 bis 3 Tage, kontinuierlich belastet. Ziel ist es, potenzielle Leistungs-, Speicher-, Ressourcenverluste oder andere Probleme zu erkennen, die auftreten können, wenn eine Anwendung über einen längeren Zeitraum mit einer großen Anzahl von Benutzern oder Daten überlastet wird.

Spike-Test

Beim Spike-Testing wird eine Anwendung einem plötzlichen Ansturm virtueller Benutzer ausgesetzt. Mit diesem Ansatz lässt sich feststellen, ob sich eine Anwendung nach einem plötzlichen Anstieg der Zahl der gleichzeitigen Benutzer von Problemen erholen kann.

Volumenprüfung

Beim Volumentest führen wir große Datenmengen in die Anwendung ein. Dies wird entweder durch Einfügen einer großen Datensammlung in die Datenbank oder durch Hochladen einer großen Datei zur Verarbeitung erreicht. Ziel ist es, zu überprüfen, wie die Anwendung mit der Verarbeitung großer Datenmengen umgeht und ob ihre Leistung und Stabilität durch diese Belastung nicht beeinträchtigt werden.

Leistungsprüfung
Leistungsprüfung

Wenn Sie mehr über die verschiedenen Arten von Leistungstests mit Anwendungsbeispielen erfahren möchten, klicken Sie auf Leistungstestarten.

Warum werden Leistungstests benötigt?

Sie helfen, die Zuverlässigkeit der Anwendung zu überprüfen

Es werden verschiedene Arten von Leistungstests durchgeführt, um sicherzustellen, dass die Anwendung zuverlässig ist und korrekte und konsistente Ergebnisse liefert. Leistungstests wie Lasttests und Dauertests helfen dabei, die korrekte Reaktion eines Systems unter den erwarteten Belastungen über einen bestimmten Zeitraum (Lasttest) oder über lange Zeiträume (Dauertest) zu bewerten.

Hilfe beim Erkennen von Leistungseinschränkungen

Leistungstests helfen dabei, Leistungseinschränkungen von Anwendungen zu erkennen, die das System verlangsamen. Diese Komponenten können später optimiert werden, um die Leistung zu erhöhen und das System insgesamt zu verbessern.

Sie helfen bei der Bewertung der Skalierbarkeit der Anwendung

Durch Leistungstests mit einer unterschiedlichen Anzahl gleichzeitiger Benutzer können wir überprüfen, ob die Anwendung für eine höhere Anzahl von Benutzern geeignet ist. So können wir ausreichende Infrastruktur-/Serveranforderungen für das System ermitteln.

Sie helfen dabei, die Robustheit der Anwendung zu überprüfen

Mit Lasttests können wir die Robustheit der Anwendung unter höheren als den erwarteten Belastungen überprüfen. Der Zweck besteht darin, die Obergrenze oder den Haltepunkt zu bestimmen, an dem die Anwendung korrekt auf gleichzeitige Benutzer reagiert und nicht versagt.

Prozess der Leistungsprüfung

Die Planung und Durchführung von Leistungstests erfordert verschiedene Aktivitäten, die für jeden Leistungstest gleich sind, unabhängig vom verwendeten Tool. Nachfolgend finden Sie eine schrittweise Anleitung zur Planung und Durchführung eines Lasttests.

1. Szenarien für Leistungstests

Zunächst wählen wir die Testszenarien aus, die einer Leistungsprüfung unterzogen werden sollen. Normalerweise werden nicht alle funktionalen Testszenarien für eine Anwendung ausgewählt, sondern nur die Szenarien, die ein großes Datenvolumen haben oder von einer relativ großen Anzahl von Benutzern ausgeführt werden. Ein Beispiel für ein Testszenario könnte sein:

  • Starten Sie die Anwendung,
  • Wartezeit,
  • Geben Sie gültige Anmeldedaten ein und klicken Sie auf die Schaltfläche „Anmelden“,
  • Wartezeit,
  • eine bestimmte Tätigkeit auf der Homepage auszuführen.
  • Wartezeit,
  • klicken Sie auf die Schaltfläche „Abmelden“.

Die Wartezeit bezieht sich auf die Zeit, die ein Nutzer mit dem Betrachten einer Webseite verbringt, nachdem diese geladen wurde, auf die Zeit, die zum Ausfüllen von Formularen wie Anmeldeformularen, Benutzerregistrierungsformularen, Eingabe von Daten in Suchfelder usw. benötigt wird. Diese Zeit variiert je nach Aufgabe, z. B. kann die Zeit zum Ausfüllen eines großen Formulars mehr als 10 Sekunden betragen, während die Zeit zum Ausfüllen der Anmeldedaten vielleicht nur 2 bis 3 Sekunden beträgt.

2. Verteilung der Nutzer

Auf die Identifizierung der Szenarien folgt die Verteilung der Nutzer. Hier ordnen wir Benutzer verschiedenen Szenarien zu. Wenn wir beispielsweise die Leistung einer E-Mail-Anwendung testen, können wir die Benutzer in die folgenden Szenarien einteilen:

  • Szenario zum Lesen ungelesener E-Mails – 50 % der Nutzer
  • Szenario zum Schreiben von E-Mails – 30 % der Nutzer
  • Szenario zum Löschen von E-Mails – 18 % der Nutzer
  • Szenario der Benutzerregistrierung – 2% der Benutzer

3. Skripting

Die Skripterstellung erfolgt mit einem Lasttestwerkzeug wie Load Runner, JMeter, Silk Performer usw. Diese Werkzeuge simulieren die von den Benutzern durchgeführten Aktionen. Wir erstellen ein Skript für die identifizierten Szenarien und weisen die Benutzer entsprechend ihrer Verteilung zu.

4. „Trockenlauf“-Verfahren

Bevor wir den eigentlichen Lasttest mit der vordefinierten Anzahl von Benutzern starten, führen wir einen „Trockenlauf“ der Anwendung durch, bei dem wir jedem Szenario 1 oder 2 Benutzer zuweisen und prüfen, ob alles ordnungsgemäß funktioniert.

5. Durchführung des Tests und Analyse der Ergebnisse

Nachdem wir den „Trockenlauf“ durchgeführt und sichergestellt haben, dass die Skripte ordnungsgemäß funktionieren, starten wir den eigentlichen Lasttest. Der Stresstest kann so eingestellt werden, dass er für eine bestimmte Zeit oder eine bestimmte Anzahl von Iterationen läuft. Zum Beispiel kann ein Stresstest für ’n‘ Minuten oder ‚m‘ Iterationen pro Benutzer geplant werden.

Nach der Durchführung des Stresstests werden die Ergebnisse analysiert. Einige Open-Source-Tools verfügen möglicherweise nicht über eine sehr gute integrierte Interpretation der Testergebnisse. In solchen Fällen kann es notwendig sein, Plugins oder andere Tools zu verwenden, um eine fortgeschrittene oder grafisch intuitive Interpretation zu ermöglichen.

Wie wählt man ein Software-Leistungstest-Tool aus?

Es gibt viele Tools für Leistungstests von Anwendungen wie JMeter, LoadRunner, Gatling, Apache Bench usw. Die folgenden Faktoren sollten bei der Auswahl eines Werkzeugs berücksichtigt werden:

  • Art der Anwendung: Einige Tools eignen sich eher für Webanwendungen, während andere eher für APIs oder mobile Anwendungen geeignet sind.
  • Funktionen und Möglichkeiten: Informieren Sie sich über die Funktionen und Möglichkeiten des Tools und bewerten Sie, ob es Ihre Anforderungen an das Testen der Anwendungsleistung erfüllt.
  • Benutzerfreundlichkeit und Lernfähigkeit: Achten Sie darauf, wie einfach das Tool zu bedienen ist und ob es viel Zeit zum Erlernen erfordert.
  • Support und Community: Vergewissern Sie sich, dass das Tool über einen aktiven Support und eine verfügbare Community verfügt, in der Sie Hilfe und Tipps für die Nutzung des Tools erhalten.

Es ist auch wichtig, daran zu denken, dass Leistungstests keine einmalige Aktivität sind. Dies ist ein Prozess, der regelmäßig durchgeführt und in den Entwicklungszyklus der Anwendung integriert werden sollte. Auf diese Weise können Sie sicherstellen, dass Ihre Anwendung unter den verschiedensten Lastbedingungen zuverlässig, skalierbar und robust ist.

Tools für Software-Leistungstests

Werfen wir nun einen Blick auf einige der am häufigsten verwendeten Tools für Leistungstests.

  • Apache JMeter – JMeter ist eines der am häufigsten verwendeten Tools für Leistungstests. Da es kostenlos und quelloffen ist, wird es von Start-ups bis hin zu großen Unternehmen eingesetzt. Der einzige Nachteil ist, dass die Lernkurve im Vergleich zu anderen Tools etwas steiler ist. Link zum Herunterladen: Apache JMeter herunterladen.
  • LoadRunner – LoadRunner ist ein von Micro Focus entwickeltes Tool für Leistungstests. Es ist ein kostenpflichtiges Tool, aber es gibt auch eine kostenlose Community-Version, die bis zu 50 virtuelle Benutzer für Lasttests unterstützt. Download-Link: loadrunner download.
  • WebLOAD – WebLOAD ist ein Leistungstestwerkzeug von RadView. Auch hier handelt es sich um ein kostenpflichtiges Tool, das wie LoadRunner eine kostenlose Version mit 50 virtuellen Benutzern für Lasttests bietet. Link zum Herunterladen: webload download.
  • LoadNinja – LoadRunner ist eines der kostenpflichtigen Tools für Leistungstests. Im Gegensatz zu den meisten anderen kostenpflichtigen und kostenlosen Tools ist es sehr einfach und schnell, da es kein komplexes Scripting erfordert, sondern mit echten Browsern in der Cloud arbeitet. Link zum Herunterladen: loadNinja download.
  • Locust – Locust ist ein kostenloses und quelloffenes Tool für Leistungstests, das Python-Skripting erfordert. Unterstützt die Durchführung von Leistungstests auf mehreren verteilten Geräten. Download-Link: Heuschrecken-Download.
  • NeoLoad – NeoLoad ist ein kostenpflichtiges Tool für Leistungstests. Es reduziert den Zeitaufwand und die Komplexität der Skripterstellung mit seinen Drag&Drop- und Record&Playback-Funktionen erheblich. Darüber hinaus unterstützt es auch Selenium-Skripte, was praktisch ist, wenn Sie Selenium für die Testautomatisierung verwenden. Link zum Herunterladen: NeoLoad herunterladen.

Weitere Informationen zu diesen Tools sowie eine detaillierte Bewertung finden Sie in unserem Artikel über Tools für Leistungstests. Damit ist unser Tutorium über Leistungstests abgeschlossen. Ich empfehle Ihnen, sich unsere JMeter-Tutorial-Reihe anzusehen, in der Sie Schritt für Schritt das beliebteste Tool für Leistungstests – Apache JMeter – kostenlos erlernen können.