Definition

Performance Testing (Leistungstest)

Performance Testing, zu Deutsch Leistungstest, ist der Prozess der Bestimmung der Geschwindigkeit, Reaktionsfähigkeit und Stabilität eines Computers, Netzwerks, Softwareprogramms oder Geräts unter einer Arbeitslast.

Leistungstests können quantitative Tests umfassen, die in einem Labor durchgeführt werden, oder in begrenzten Szenarien in der Produktionsumgebung stattfinden. Zu den typischen Parametern gehören Verarbeitungsgeschwindigkeit, Datenübertragungsrate, Netzwerkbandbreite und -durchsatz, Effizienz und Zuverlässigkeit der Arbeitslast.

Zum Beispiel kann eine Organisation die Reaktionszeit eines Programms messen, wenn ein Benutzer eine Aktion anfordert, oder die Anzahl von Millionen von Anweisungen pro Sekunde (Millions of Instructions Per Second MIPS), mit der ein Mainframe funktioniert.

Warum man Leistungstests verwendet

Eine Organisation kann Leistungstests als Diagnosehilfe verwenden, um Engpässe bei der Datenverarbeitung oder Kommunikation innerhalb eines Systems zu lokalisieren. Engpässe sind ein einzelner Punkt oder eine Komponente innerhalb der Gesamtfunktion eines Systems, die die Gesamtleistung beeinträchtigen.

Zum Beispiel wird selbst der schnellste Computer schlechte Datenübertragungsraten haben, wenn die Bandbreite weniger als ein Megabit pro Sekunde (Mbps) beträgt. Langsame Datenübertragungsraten sind möglicherweise hardwareseitig bedingt, können aber auch auf softwarebezogene Probleme zurückzuführen sein, wie zum Beispiel zu viele gleichzeitig laufende Anwendungen oder eine beschädigte Datei in einem Webbrowser.

Leistungstests können helfen, die Art oder den Ort eines softwarebezogenen Leistungsproblems zu identifizieren, indem sie aufzeigen, wo eine Anwendung ausfallen oder verzögern könnte.

Leistungstests können auch überprüfen, ob ein System die von seinem Hersteller oder Verkäufer angegebenen Spezifikationen erfüllt. Das Verfahren kann zum Vergleich von zwei oder mehr Geräten oder Programmen verwendet werden.

Performance-Testing-Metriken

Eine Reihe von Leistungskennzahlen, die auch als Key Performance Indicators (KPIs) bezeichnet werden, können einer Organisation helfen, die aktuelle Leistung im Vergleich zu den Ausgangswerten zu bewerten.

Zu den Leistungskennzahlen gehören zum Beispiel:

  • Durchsatz: wie viele Informationseinheiten ein System über eine bestimmte Zeit verarbeitet;
  • Speicher: der für einen Prozessor oder eine Arbeitslast verfügbare Arbeitsspeicherplatz;
  • Antwortzeit oder Latenzzeit: die Zeitspanne, die zwischen einer vom Benutzer eingegebenen Anforderung und dem Beginn der Antwort eines Systems auf diese Anforderung verstreicht;
  • Bandbreite: das Datenvolumen pro Sekunde, das sich zwischen Workloads bewegen kann, normalerweise über ein Netzwerk;
  • CPU-Unterbrechungen pro Sekunde: die Anzahl der Hardwareunterbrechungen, die ein Prozess pro Sekunde erhält.

Diese und andere Metriken helfen einem Unternehmen, mehrere Arten von Leistungstests durchzuführen.

Arten von Performance Testing

Es gibt zwei Hauptmethoden für Performance Testing: Lasttests und Stresstests.

Lasttests helfen Entwicklern, das Verhalten eines Systems unter einem bestimmten Lastwert zu verstehen. Beim Lasttest-Prozess simuliert ein Unternehmen die erwartete Anzahl gleichzeitiger Benutzer und Transaktionen über einen bestimmten Zeitraum, um die erwarteten Antwortzeiten zu überprüfen und Engpässe zu lokalisieren.

Diese Art von Test hilft Entwicklern festzustellen, wie viele Benutzer eine Anwendung oder ein System nutzen können, bevor diese Anwendung oder dieses System in Betrieb geht. Zusätzlich kann ein Entwickler spezifische Funktionalitäten einer Anwendung testen, wie zum Beispiel einen Warenkorb auf einer Webseite. Ein Team kann Lasttests als Teil eines Continuous-Integration-Prozesses (CI) integrieren, bei dem es Änderungen an einer Codebasis durch den Einsatz von Automatisierungswerkzeugen, wie zum Beispiel Jenkins, sofort testet.

Stresstests, die zwei Unterkategorien haben– Soak- und Spike-Tests – setzen ein System höheren Verkehrslasten aus als erwartet, so dass die Entwickler sehen, wie gut es über seine erwarteten Kapazitätsgrenzen hinaus funktioniert. Stresstests ermöglichen es dem Softwareteam, die Skalierbarkeit einer Arbeitslast zu verstehen. Stresstests belasten Hardwareressourcen wie CPUs, Speicher und Festplatten sowie Solid-State Drives (SSD), um die potenzielle Grenze einer Anwendung auf diesen endlichen Ressourcen zu bestimmen.

Die Systembelastung kann auch zu langsamen Datenaustausch, Speicherengpässen, Datenkorruption und Sicherheitsproblemen führen. Stresstests können auch zeigen, wie lange es dauert, bis die KPIs nach einem Ereignis wieder ein normales Betriebsniveau erreichen. Stresstests können vor oder nach der Inbetriebnahme eines Systems durchgeführt werden. Eine Art von Stresstest in der Produktionsumgebung wird als Chaos Engineering bezeichnet, und es gibt spezialisierte Werkzeuge hierfür. Eine Organisation kann einen Stresstest vor einem vorhersehbaren Großereignis, wie zum Beispiel dem Black Friday bei einer E-Commerce-Anwendung, durchführen, wobei die erwartete Belastung mit den gleichen Tools wie bei Lasttests angenähert wird.

Soak-Tests, auch Dauertests genannt, simulieren eine stetige Zunahme der Endbenutzer im Laufe der Zeit, um die langfristige Nachhaltigkeit der Systeme zu testen. Während des Tests überwacht der Testingenieur KPIs, wie zum Beispiel die Speichernutzung, und prüft auf Fehler, etwa Speicherengpässe. Soak-Tests analysieren auch den Durchsatz und die Antwortzeiten nach anhaltender Nutzung, um zu zeigen, ob diese Kennzahlen mit ihrem Status zu Beginn eines Tests konsistent sind.

Spike-Tests, eine weitere Untergruppe von Stresstests, bewerten die Leistung eines Systems bei einem plötzlichen und signifikanten Anstieg der simulierten Endbenutzer. Mit Hilfe von Spike-Tests lässt sich feststellen, ob ein System einen abrupten, drastischen Anstieg der Arbeitsbelastung über einen kurzen Zeitraum und wiederholt bewältigen kann. Ähnlich wie bei Stresstests führt ein IT-Team Spike-Tests in der Regel vor einem großen Ereignis durch, bei dem ein System wahrscheinlich einem höheren als dem normalen Verkehrsaufkommen ausgesetzt sein wird.

Tools für Leistungstests

Ein IT-Team kann je nach seinen Bedürfnissen und Präferenzen eine Vielzahl von Leistungstest-Tools einsetzen. Hier sind drei mögliche Tools:

Jmeter, ein Apache Performance Testing Tool, kann Lasttests für Web- und Anwendungsdienste erzeugen. Jmeter-Plugins bieten Flexibilität bei Lasttests und decken Bereiche wie Graphen, Thread-Gruppen, Timer, Funktionen und Logik-Controller ab. Jmeter unterstützt eine integrierte Entwicklungsumgebung (IDE) zur Testaufzeichnung für Browser oder Webanwendungen sowie einen Befehlszeilenmodus für Lasttests von Java-basierten Betriebssystemen.

LoadRunner, entwickelt von Micro Focus, testet und misst die Leistung von Anwendungen unter Last. LoadRunner kann Tausende von Endanwender simulieren sowie Lasttests aufzeichnen und analysieren. Als Teil der Simulation erzeugt das Tool Meldungen zwischen Anwendungskomponenten und Endbenutzeraktionen, ähnlich wie Tastenklicks oder Mausbewegungen. LoadRunner umfasst auch Versionen, die auf die Nutzung in der Cloud ausgerichtet sind.

NeoLoad, eine Entwicklung von Neotys, bietet Lasttests für Web- und mobile Anwendungen und ist speziell darauf ausgelegt, Software vor der Freigabe für DevOps und Continuous Delivery Pipelines zu testen. Ein IT-Team kann das Programm zur Überwachung von Web-, Datenbank- und Anwendungsservern einsetzen. NeoLoad kann Millionen von Benutzern simulieren, und es führt Tests intern oder über die Cloud durch.

Diese Definition wurde zuletzt im August 2020 aktualisiert

Erfahren Sie mehr über IT-Berufe und Weiterbildung