Was ist STRESS-Test beim Softwaretest?

โšก Intelligente Zusammenfassung

Bei einem Stresstest wird eine Anwendung รผber ihre normalen Betriebsgrenzen hinaus belastet, um den Bruchpunkt zu finden, zu bestรคtigen, dass Fehler ordnungsgemรครŸ behandelt werden, und nachzuweisen, dass sich das System nach dem Wegfall der extremen Last sauber erholt.

  • ๐Ÿ”˜ Definition: Stresstests messen Robustheit und Fehlerbehandlung unter einer Last, die weit รผber die Belastung im Produktionsbetrieb hinausgeht.
  • โ˜‘๏ธ Ziel: Der Test lokalisiert die genaue Fehlerstelle und รผberprรผft die Wiederherstellbarkeit, sobald die Last wieder auf Normalniveau sinkt.
  • โœ… Umfang: Verteilte, anwendungsbezogene, transaktionale, systemische und explorative Varianten betonen jeweils eine andere Ebene des Systems.
  • ๐Ÿงช Verarbeiten: Planen, skripten, ausfรผhren, analysieren und dann optimieren โ€“ in der Regel รผber drei oder vier vollstรคndige Zyklen, bis die Zielvorgaben erreicht sind.
  • ๏ธ Werkzeug: LoadRunner, Apache JMeter, StressTester und NeoEs werden gleichzeitig virtuelle Benutzer generiert und Antwortdaten erfasst.
  • ๐Ÿ“Š Metriken: Durchsatz, Seiten pro Sekunde, Trefferzeit, Zeit bis zum ersten Byte und fehlgeschlagene Verbindungen quantifizieren das Ergebnis.

Stresstests im Softwaretest

Was ist Stresstest?

Belastbarkeitstest Stresstests sind eine Art Softwaretest, der die Stabilitรคt und Zuverlรคssigkeit einer Softwareanwendung รผberprรผft. Ziel von Stresstests ist es, die Robustheit und Fehlerbehandlungsfรคhigkeit der Software unter extremen Lastbedingungen zu messen und sicherzustellen, dass sie in kritischen Situationen nicht abstรผrzt. Dabei werden die normalen Betriebspunkte gezielt รผberschritten und das Verhalten der Software unter extremen Bedingungen bewertet.

Beim Stresstest wird die zu testende Anwendung (AUT) kurzzeitig stark belastet, um ihre Belastbarkeit zu ermitteln. Der hรคufigste Anwendungsfall von Stresstests ist die Bestimmung der Belastungsgrenze, an der das System, die Software oder die Hardware ausfรคllt. AuรŸerdem wird geprรผft, ob das System nach รœberschreiten dieser Grenze ein effektives Fehlermanagement aufweist.

In Software EngineeringStresstests werden oft zusammen mit AusdauertestsDie beiden Verfahren unterscheiden sich jedoch: Beim Stresstest wird eine ungewรถhnlich hohe Last in einem kurzen Moment angewendet, um den Bruchpunkt zu ermitteln, wรคhrend beim Dauertest (Einwirktest) eine moderate Last รผber Stunden gehalten wird, um eine allmรคhliche Verschlechterung aufzudecken.

Der untenstehende Screenshot zeigt, wie ein groรŸer Datenblock von einer Webseite kopiert wird.

Kopieren eines sehr groรŸen Datenblocks von einer Webseite, um eine Desktop-Anwendung zu belasten

Die zu testende Anwendung wird รผberlastet, indem 5 GB Daten von der Website kopiert und in Notepad eingefรผgt werden. Notepad reagiert nun nicht mehr wie erwartet und gibt die Fehlermeldung โ€žKeine Rรผckmeldungโ€œ aus, wie im nรคchsten Screenshot dargestellt.

Notepad zeigt nach dem Einfรผgen von 5 GB Daten die Fehlermeldung โ€žKeine Rรผckmeldungโ€œ an.

Das gleiche Prinzip lรคsst sich direkt auf serverseitige Systeme รผbertragen.

Notwendigkeit von Stresstests

Betrachten Sie die folgenden Echtzeitbeispiele, in denen der Nutzen von Stresstests deutlich wird:

  • Wรคhrend der Festivalzeit, ein Online-Shopping Die Website kann einen Anstieg des Datenverkehrs verzeichnen oder wenn ein Sonderangebot angekรผndigt wird.
  • Wenn ein Blog in einer fรผhrenden Zeitung erwรคhnt wird, kommt es zu einem plรถtzlichen Anstieg des Traffics.

Um solche ungewรถhnlichen Verkehrsspitzen bewรคltigen zu kรถnnen, sind Stresstests unerlรคsslich. Wird diese plรถtzliche Verkehrsbelastung nicht bewรคltigt, kann dies zu UmsatzeinbuรŸen und Reputationsschรคden fรผhren.

Stresstests sind auch aus folgenden Grรผnden รคuรŸerst wertvoll:

  • Es prรผft, ob das System auch unter anormalen Bedingungen funktioniert.
  • Es bestรคtigt, dass eine angemessene Fehlermeldung angezeigt wird, wรคhrend das System unter Last steht.
  • Ein Systemausfall unter extremen Bedingungen kรถnnte zu enormen Einnahmeverlusten fรผhren.
  • Es ist besser, sich durch die Durchfรผhrung von Stresstests im Voraus auf extreme Bedingungen vorzubereiten.

Im nรคchsten Abschnitt wird dargelegt, was ein erfolgreicher Stresstest nachweisen muss.

Ziele des Stresstests

Ziel eines Stresstests ist die Analyse des Systemverhaltens nach einem Fehler. Fรผr einen erfolgreichen Stresstest muss das System unter Extrembedingungen eine aussagekrรคftige Fehlermeldung anzeigen.

Fรผr Stresstests werden mitunter groรŸe Datensรคtze verwendet, die bei einem Systemausfall verloren gehen kรถnnen. Tester sollten daher sicherstellen, dass sicherheitsrelevante Daten wรคhrend der Stresstests nicht verloren gehen.

Der Hauptzweck von Stresstests besteht darin, sicherzustellen, dass sich das System nach einem Ausfall erholt; diese Eigenschaft wird als Wiederherstellbarkeit bezeichnet. Wiederherstellungstests AnschlieรŸend รผberprรผft er den Restaurierungsprozess im Detail.

Lastprรผfung vs. Stressprรผfung

Beide Techniken gehรถren zu den Performance Testing Da sie Familienmitglieder sind, kรถnnen sie leicht verwechselt werden. Das folgende Diagramm veranschaulicht die beiden Lastprofile.

Diagramm zum Vergleich des konstanten Lastprofils bei der Belastungsprรผfung mit dem ansteigenden Lastprofil bei der Spannungsprรผfung

Load Testing Belastbarkeitstest
Load Testing testet das Systemverhalten unter normalen Arbeitslastbedingungen; es simuliert die tatsรคchlich zu erwartende Arbeitslast. Bei einem Stresstest wird das Systemverhalten unter extremen Bedingungen geprรผft. Er wird so lange durchgefรผhrt, bis das System ausfรคllt.
Lasttests bringen das System nicht zum Absturz. Beim Stresstest wird das System bewusst zum Zusammenbruch gebracht, indem es entweder mit Daten รผberflutet oder ihm Ressourcen entzogen werden.

Zugehรถrige Profile umfassen Spike-Test (ein plรถtzlicher, kurzer Ausbruch), Volumentest (groรŸe Datenmengen statt vieler Benutzer) und Skalierbarkeitstests (Wachstumsspielraum).

Arten von Stresstests

Nachfolgend werden die verschiedenen Arten von Stresstests einzeln erlรคutert.

Verteiltes Stresstesting

In verteilten Client-Server-Systemen werden Tests vom Server aus auf allen Clients durchgefรผhrt. Die Aufgabe des Stressservers besteht darin, eine Reihe von Stresstests an alle Stressclients zu verteilen und diese durchzufรผhren. tracDer Server speichert den Status jedes Clients. Sobald ein Client den Server kontaktiert, speichert der Server den Namen des Clients und beginnt mit dem Senden von Testdaten. Die folgende Abbildung zeigt, wie der Stresstest-Server einige Clients erreicht, andere jedoch nicht.

Verteiltes Stresstest-Setup, bei dem ein Stressserver Client1 und Client2 erreicht, aber die Verbindung zu Client3 und Client4 verliert.

Wรคhrenddessen senden die Client-Rechner ein Signal, einen sogenannten Heartbeat, um zu bestรคtigen, dass sie weiterhin mit dem Server verbunden sind. Empfรคngt der Server kein Signal von einem Client-Rechner, muss dieser zur Fehlerbehebung genauer untersucht werden. In der Abbildung kann der Server zwar mit zwei Clients (Client1 und Client2) eine Verbindung herstellen, aber er kann weder von Client3 noch von Client4 ein Signal senden oder empfangen.

Fรผr diese Stresstestszenarien ist ein Testlauf รผber Nacht die beste Option. GroรŸe Serverfarmen benรถtigen eine effizientere Methode, um festzustellen, welche Computer unter Belastung ausgefallen sind und untersucht werden mรผssen.

Anwendungsstresstest

Bei diesem Test liegt der Fokus auf der Suche nach Fehlern im Zusammenhang mit Datensperrungen und -blockierungen, Netzwerkproblemen und Leistungsengpรคssen in einer einzelnen Anwendung.

Transaktions-Stresstests

Es fรผhrt Stresstests an einer oder mehreren Transaktionen zwischen zwei oder mehr Anwendungen durch. Es dient der Feinabstimmung und Optimierung des Systems.

Systemischer Stresstest

Dies ist ein integrierter Stresstest, der auf mehreren Systemen auf demselben Server ausgefรผhrt werden kann. Er dient dazu, Fehler zu finden, bei denen eine Anwendung die Daten einer anderen Anwendung blockiert.

Exploratives Stresstesting

Dies ist eine Art Stresstest, der das System unter ungewรถhnlichen Parametern oder Bedingungen prรผft, die in der Realitรคt unwahrscheinlich sind. Er dient dazu, Fehler in unerwarteten Situationen aufzudecken, wie zum Beispiel:

  • Eine groรŸe Anzahl von Benutzern hat sich gleichzeitig eingeloggt.
  • Ein Virenscanner startet gleichzeitig auf allen Rechnern.
  • Eine Datenbank geht offline, wรคhrend รผber eine Website auf sie zugegriffen wird.
  • Eine groรŸe Datenmenge wird gleichzeitig in die Datenbank eingefรผgt.

Unabhรคngig davon, welche Variante zutrifft, bleibt die Ausfรผhrungsreihenfolge gleich.

Wie fรผhrt man Stresstests durch?

Der Stresstestprozess kann in 5 Hauptschritten durchgefรผhrt werden:

  • Schritt 1) โ€‹โ€‹Planung des Stresstests: Hier werden die Systemdaten erfasst, das System analysiert und die Ziele des Stresstests definiert.
  • Schritt 2) Automatisierungsskripte erstellen: In dieser Phase erstellen Sie die Skripte zur Automatisierung der Stresstests und generieren die Testdaten fรผr die Stressszenarien.
  • Schritt 3) Skriptausfรผhrung: In dieser Phase fรผhren Sie die Skripte zur Automatisierung der Stresstests aus und speichern die Ergebnisse.
  • Schritt 4) Ergebnisanalyse: In dieser Phase analysieren Sie die Ergebnisse des Stresstests und identifizieren Engpรคsse.
  • Schritt 5) Feinabstimmung und Optimierung: In dieser Phase nehmen Sie die Feinabstimmung des Systems vor, รคndern Konfigurationen und optimieren den Code mit dem Ziel, den gewรผnschten Benchmark zu erreichen.

AbschlieรŸend wird der gesamte Zyklus erneut ausgefรผhrt, um festzustellen, ob die Anpassungen die gewรผnschten Ergebnisse erzielt haben. Beispielsweise sind drei bis vier Durchlรคufe des Stresstests nicht ungewรถhnlich, bevor die Leistungsziele erreicht werden. Daher werden die Skripte รผblicherweise parallel dazu gepflegt. Regression Suite.

Empfohlene Werkzeuge fรผr Stresstests

Die vier unten aufgefรผhrten Tools decken die meisten Bedรผrfnisse ab, von Enterprise-Suiten bis hin zu einer kostenlosen Open-Source-Option.

LoadRunner

LoadRunner ist ein weit verbreitetes Lasttest-Tool, das jetzt von OpenText in den Professional-, Enterprise- und Cloud-Editionen nach dem Wechsel von HP zu Micro Focus zu OpenTextDie von LoadRunner erzeugten Lasttestergebnisse werden als Benchmark betrachtet.

JMeter

Apache JMeter ist ein Open-Source-Testtool. Es ist ein reines Java Die Anwendung dient der Durchfรผhrung von Belastungs- und Leistungstests und deckt Testarten wie Last-, Funktions- und Stresstests ab. Aktuelle Versionen 5.6.x Apache JMeter erfordern Java 8 oder spรคter, mit Java 17 empfohlen.

Stresstester

Dieses Tool bietet eine umfassende Analyse der Webanwendungsleistung, prรคsentiert die Ergebnisse grafisch und ist einfach zu bedienen. Es sind keine fortgeschrittenen Skriptsprachen erforderlich, wodurch der Return on Investment gering bleibt.tractativ fรผr kleinere Teams.

NeoLaden Sie

NeoLaden Sie, jetzt Teil der Tricentis Portfolio ist ein beliebtes Tool zum Testen von Webanwendungen. mobile AnwendungenEs kann Tausende von Benutzern simulieren, um die Anwendungsleistung unter Last zu bewerten und Antwortzeiten zu analysieren. Es unterstรผtzt auรŸerdem cloudintegrierte Leistungs-, Last- und Stresstests und ist gut skalierbar.

Weitere Optionen sind im Leitfaden aufgefรผhrt. Leistungstest-ToolsUnabhรคngig davon, welche Methode gewรคhlt wird, hat ihr Ergebnis nur im Hinblick auf die unten aufgefรผhrten Kennzahlen eine Aussagekraft.

Metriken fรผr Stresstests

Kennzahlen helfen bei der Bewertung der Systemleistung und werden รผblicherweise am Ende des Stresstests analysiert. Gรคngige Kennzahlen lassen sich in drei Gruppen einteilen.

Messung von Skalierbarkeit und Leistung

  • Seiten pro Sekunde: Misst, wie viele Seiten pro Sekunde angefordert wurden.
  • Durchsatz: Eine grundlegende Kennzahl โ€“ die GrรถรŸe der Antwortdaten pro Sekunde.
  • Runden: Die Anzahl der geplanten Testszenarien im Vergleich zur Anzahl der tatsรคchlichen Durchfรผhrungen durch einen Kunden.

Antwort der Anwendung

  • Trefferzeit: Durchschnittliche Zeit zum Abrufen eines Bildes oder einer Seite.
  • Zeit bis zum ersten Byte: Zeitaufwand fรผr die Rรผckgabe des ersten Bytes an Daten oder Informationen.
  • Seitenzeit: Zeitaufwand zum Abrufen aller Informationen auf einer Seite.

Fehler

  • Fehlgeschlagene Verbindungen: Anzahl der vom Client abgelehnten Verbindungsversuche (schwaches Signal).
  • Fehlgeschlagene Runden: Anzahl der fehlgeschlagenen Runden.
  • Fehlgeschlagene Treffer: Anzahl der fehlgeschlagenen Versuche des Systems (defekte Links oder nicht angezeigte Bilder).

Im Schlussteil werden die Situationen aufgefรผhrt, die am hรคufigsten einen Stresstest rechtfertigen.

Beispiele fรผr Stresstests

Stresstests sind immer dann angebracht, wenn ein Ereignis voraussichtlich den Datenverkehr deutlich รผber das tรคgliche Normalniveau hinaus ansteigen lรคsst:

  • Eine E-Commerce-Website kรผndigt einen Festivalverkauf an.
  • Eine Nachrichtenwebsite zum Zeitpunkt eines wichtigen Ereignisses.
  • Ein Schulamt verรถffentlicht Prรผfungsergebnisse.
  • Soziale Netzwerke, Blogs und mobile Apps wรคhrend eines viralen Moments.

Der Test รผberwacht in jedem Fall Ressourcen wie Speicher, Prozessor und Netzwerk, prรผft, ob unter Last die entsprechenden Fehlermeldungen angezeigt werden, und bestรคtigt, dass das System anschlieรŸend wieder normal funktioniert. Er passt in die Lebenszyklus von Softwaretests als nicht-funktionale รœberprรผfung zusammen Systemtest und die weitere Gruppe von Arten von Softwaretests.

Hรคufig gestellte Fragen

Nein. Bei einem Belastungstest wird kurzzeitig eine ungewรถhnlich hohe Last angewendet, um die Bruchgrenze zu ermitteln. Einweichen oder Ausdauertest Hรคlt eine realistische Last รผber viele Stunden aufrecht, um Speicherlecks und langsamen VerschleiรŸ aufzudecken.

Spike-Test Beim Stresstest wird das System kurzzeitig und mit einer plรถtzlichen Lastรผberlastung konfrontiert, um zu messen, wie schnell es reagiert und sich erholt. Der Stresstest erhรถht die Last stetig bis zum Ausfall und ermittelt somit die Belastungsgrenze, anstatt die Reaktionsgeschwindigkeit des Systems zu messen.

Fรผhren Sie einen solchen Test vor jedem grรถรŸeren Release, vor vorhersehbaren Traffic-Spitzen wie z. B. einem Sonderangebot oder einem Ergebnistag sowie nach architektonischen ร„nderungen an Caching, Connection Pooling oder Autoscaling durch. Viele Teams wiederholen ihn zudem vierteljรคhrlich als Basiswertprรผfung.

Verwenden Sie eine Umgebung, deren Dimensionierung der Produktionsumgebung so nahe wie mรถglich kommt, soweit es das Budget zulรคsst, da unterdimensionierte Hardware die Belastungsgrenze erhรถht. Verwenden Sie dafรผr maskierte oder synthetische Daten in ProduktionsgrรถรŸe und fรผhren Sie niemals einen destruktiven Stresstest mit Live-Kundendaten durch.

Maschinelle Lernmodelle analysieren Produktionstelemetriedaten, um realistische Spitzenlastprofile zu erstellen, anomale Antwortzeitkurven zu erkennen, die mit einem festen Schwellenwert nicht erfasst wรผrden, und Ressourcenkennzahlen zu korrelieren, um den Engpass zu identifizieren. Mehrere kommerzielle Plattformen generieren mittlerweile Lastszenarien aus beobachteten Nutzungsmustern.

Ja. Copilot-Entwรผrfe JMeter Testplรคne, k6- oder Gatling-Skripte, parametrisierte Datengeneratoren und CI-Pipeline-Schritte werden รผber eine einfache Spracheingabe generiert. Betrachten Sie die Ausgabe als ersten Entwurf: Bedenkzeiten, Tempo und Assertions mรผssen noch von einem Tester validiert werden.

Es deckt die tatsรคchliche Kapazitรคtsgrenze auf, beweist Fehlerbehandlung und reduziert das Ausfallrisiko in Spitzenzeiten. Die Einschrรคnkungen liegen in den Kosten โ€“ Produktionsumgebungen und Lizenzen sind teuer โ€“ sowie im Aufwand fรผr die Skripterstellung und den Ergebnissen, die sich bei Infrastrukturรคnderungen verรคndern.

Es wird von Performance-Ingenieuren oder spezialisierten Testern betrieben, in der Regel in Anwesenheit von Entwicklern und Betriebspersonal, die die Servermetriken auswerten. Es befindet sich nach dem funktionalen Test. SystemtestsSobald die Software so stabil ist, dass Fehler eher auf Kapazitรคtsgrenzen als auf Softwarefehler hinweisen, โ€ฆ

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: