top of page

Stresstest 101: Bewertung der Systemrobustheit und Wiederherstellbarkeit

Autorenbild: Ongeziwe BulanaOngeziwe Bulana

stress testing

Was versteht man unter Stresstests?

Stresstests sind eine Softwaretesttechnik, die das System oder die Anwendung unter extremer Belastung bewertet. Es hilft, die Bruchstellen zu identifizieren, an denen das System zu versagen oder abzustürzen beginnt.


Das Ziel von Stresstests besteht darin, die Robustheit und die Fehlertoleranz von Software unter hoher Belastung zu messen. Dadurch wird sichergestellt, dass die Anwendung bei Spitzenauslastung oder in anspruchsvollen Situationen nicht hängen bleibt oder abstürzt. Diese Technik testet über die normalen Betriebsbedingungen hinaus, um zu sehen, wie sich die Software unter extremen Szenarien verhält. 


Eine häufige Verwendung von Stresstests besteht darin, die Grenze zu ermitteln, bei der das System aufgrund von „Stress“ nicht mehr funktioniert.


Beispiel für einen StresstesBeispiel für einen Stresstest


Ein Beispiel dafür, wie man eine Anwendung (z. B. Notepad) unter Stress setzt, besteht darin, eine 5-GB-Datei hinein zu kopieren. Infolgedessen reagiert Notepad möglicherweise aufgrund der Anwendungsbeschränkungen oder aufgrund der Hardware, die die Anwendung unterstützt, nicht mehr.


Notwendigkeit von Stresstests


Hier sind einige reale Szenarien, in denen Stresstests unerlässlich sind:

  • Generell hoch ausgelastete Websites: Websites wie Facebook und YouTube bewältigen beispielsweise sowohl hohen Datenverkehr als auch Datei-Transfers.

  • Plötzlicher Last-Anstieg: E-Commerce-Website während des Sonderaktionen oder beim Verkauf von Veranstaltungstickets, wie  z. B. der Server, der den Verkauf von Taylor-SwiftTickets abwickelt!

  • Vorbereitung vor einer Software-Einführung: Es ist notwendig, Standorte, die voraussichtlich in der Zukunft einer hohen Belastung oder Belastung ausgesetzt sein werden, einem Stresstest zu unterziehen.


Warum Stresstests wichtig sind


  • Stresstests stellen sicher, dass das System unter aussergewöhnlichen  Bedingungen ordnungsgemäß funktioniert.

  • Überprüft, ob das System sich selbst schützen und unter diesen Bedingungen weiter funktionieren kann. 

  • Bestätigt, dass in Stresssituationen entsprechende Fehlermeldungen angezeigt werden.

  • Verhindert erhebliche Umsatzverluste durch unerwartete Systemausfälle.

  • Überprüft, ob Last-Begrenzungssysteme korrekt funktionieren.


Arten von Stresstests

Im Folgenden sind die Arten von Stresstests aufgeführt, die wie folgt erläutert werden:


  1. Verteilter Stresstest:


    Distributed stress testing

    In verteilten Client-Server-Systemen werden Stresstests über mehrere Clients von einem zentralen Server aus durchgeführt. Der Server verteilt eine Reihe von Stresstests an verbundene Clients und überwacht deren Status. Wenn ein Client eine Verbindung herstellt, registriert der Server den Namen des Clients und sendet Testdaten.


    Während des Tests senden Client-Computer ein „Heartbeat“-Signal, um anzuzeigen, dass sie weiterhin verbunden sind. Wenn ein Server keine Signale mehr von einem Client empfängt, markiert er das Problem zur weiteren Untersuchung. In der Abbildung ist der Server beispielsweise mit Client1 und Client2 verbunden, kann jedoch nicht mit Client3 und Client4 kommunizieren.


    Die Durchführung dieser Stresstests während der Nacht ist eine gängige Praxis für effiziente Tests. Große Serverfarmen benötigen eine optimierte Methode, um zu ermitteln, auf welchen Maschinen stressbedingte Ausfälle aufgetreten sind und eine Analyse erforderlich ist.


  2. Anwendungsstresstest

    Konzentriert sich auf die Identifizierung von Problemen im Zusammenhang mit Datensperren, Datenblockierungen, Netzwerküberlastungen und Leistungsengpässen innerhalb einer Anwendung.


  3. Transaktionale Stresstests

    Testet eine oder mehrere Transaktionen zwischen zwei oder mehr Anwendungen. Dies hilft bei der Feinabstimmung und Optimierung des Systems für eine bessere Leistung unter Last.

  4. Systemischer Stresstest

    Wird auf mehreren Systemen durchgeführt, die auf demselben Server laufen. Es hilft dabei, Probleme zu identifizieren, bei denen Daten aus einer Anwendung Daten aus einer anderen Anwendung stören oder blockieren könnten.


  5. Explorativer Stresstest

    Testet das System mit ungewöhnlichen Parametern oder Szenarien, die in realen Situationen wahrscheinlich nicht auftreten. Es hilft, Fehler in unerwarteten Situationen aufzudecken, wie zum Beispiel:

    1. Eine große Anzahl von Benutzern, die sich gleichzeitig anmelden.

    2. Alle Maschinen starten gleichzeitig einen Virenscan.

    3. Datenbank wird offline geschaltet, während über eine Website darauf zugegriffen wird.

    4. Gleichzeitiges Einfügen einer großen Datenmenge in die Datenbank.


Wie führt man einen Stresstest durch?

Der Stresstestprozess umfasst fünf Hauptschritte:


Schritt 1: Planung des Stresstests

  • Sammeln Sie Systemdaten, analysieren Sie die aktuelle Leistung und definieren Sie die Ziele für den Stresstest.


Schritt 2: Erstellen Sie Automatisierungsskripte

  • Entwickeln Sie Automatisierungsskripte für die Stressszenarien und generieren Sie die notwendigen Testdaten.


Schritt 3: Skriptausführung

  • Führen Sie die Stresstestskripte aus und zeichnen Sie die Ergebnisse auf.


Schritt 4: Ergebnisanalyse

  • Überprüfen Sie die Testergebnisse, um Leistungsengpässe und Verbesserungsmöglichkeiten zu identifizieren.

Schritt 5: Anpassung und Optimierung

  • Optimieren Sie das System, indem Sie Konfigurationen anpassen, den Code verfeinern und notwendige Änderungen vornehmen, um die gewünschten Leistungsbenchmarks zu erfüllen.


Metriken für Stresstests


Metriken helfen bei der Bewertung der Leistung eines Systems und werden normalerweise am Ende eines Stresstests analysiert. Zu den häufig verwendeten Metriken gehören:


1. Skalierbarkeit und Leistungsmetriken


  • Seiten pro Sekunde: Misst, wie viele Seiten pro Sekunde angefordert werden.

  • Durchsatz: Gibt die Datenmenge (in Bytes) an, die pro Sekunde verarbeitet wird. Es hilft, die Kapazität des Systems zu verstehen.

  • Runden: Vergleicht die Anzahl der geplanten Testszenarien mit der Häufigkeit, mit der ein Client sie ausgeführt hat.


2. Anwendungsreaktionsmetriken



  • Trefferzeit: Die durchschnittliche Zeit, die zum Abrufen eines einzelnen Bildes oder einer einzelnen Seite benötigt wird.

  • Zeit bis zum ersten Byte (TTFB): Die Zeit, die benötigt wird, um das erste Datenbyte vom Server zu empfangen.

  • Seitenladezeit: Die Gesamtzeit, die zum Abrufen und Anzeigen aller Elemente auf einer Webseite benötigt wird.


3. Fehlermetriken


  • Fehlgeschlagene Verbindungen: Die Anzahl der vom Client abgelehnten Verbindungen (z. B. aufgrund schwacher Signale oder Serverüberlastung).

  • Fehlgeschlagene Runden: Die Anzahl der Testrunden, die nicht erfolgreich abgeschlossen werden konnten.

  • Fehlgeschlagene Zugriffe: Die Anzahl der vom System fehlgeschlagenen Versuche (z. B. aufgrund defekter Links, fehlender Bilder oder Serverfehler).


Abschluss


Das Ziel von Stresstests besteht darin, die Leistung eines Systems unter extremen Bedingungen zu bewerten. Es überwacht kritische Systemressourcen wie Speicher, CPU und Netzwerk und bewertet die Fähigkeit des Systems, wieder in den Normalbetrieb zurückzukehren. Es prüft außerdem, ob sich das System wie erwartet verhält und zeigt im Fehlerfall entsprechende Fehlermeldungen an.


Letztendlich sollte ein gutes System oder eine gute Webanwendung in der Lage sein, extreme Belastungen problemlos zu bewältigen, weiter zu funktionieren, sich aber auch selbst zu schützen, wenn die Grenze über die Designbedingungen hinaus überschritten wird.


Dieser Artikel verweist auf Informationen von Guru99 zu Stresstesttechniken und Best Practices.


bottom of page