Viele Arten von Softwaretests werden im Verlauf des Softwareentwicklungszyklus durchgeführt, um sicherzustellen, dass die Software, die du deinen Kunden bereitstellst, stabil ist und wie erwartet funktioniert.

Erfahre mehr: Smoke Testing und User Acceptance Testing

Eine dieser Testarten ist das Leistungstesting, das darauf abzielt, die Leistungsfähigkeit des Systems zu validieren und sicherzustellen, dass deine Anwendung ein optimales Benutzererlebnis bietet. Es soll ermitteln, wie die Komponenten eines Systems unter bestimmten Bedingungen und verschiedenen Arbeitslasten funktionieren.

Leistungstests zeigen vor allem Verbesserungen auf, die du an deiner Software vornehmen musst, um deren Stabilität, Reaktionsfähigkeit und Geschwindigkeit sicherzustellen, bevor sie in die Produktion geht.

In diesem Artikel konzentrieren wir uns auf eine Unterkategorie des Leistungstests, die als Soak Testing bekannt ist.

Was ist Soak Testing?

Soak Testing, manchmal auch als Ausdauertests bezeichnet, ist eine Art von Leistungs- und Lasttest, der bewertet, wie eine Software-Anwendung mit einer zunehmenden Anzahl von Nutzern über einen längeren Zeitraum umgeht.

Das Ziel dieses Tests ist es, sicherzustellen, dass die Software-Anwendung eine große Last bewältigen kann und zu überprüfen, ob sie unter solchen Bedingungen abnormales Verhalten zeigt oder sogar abstürzt.

Mit anderen Worten: Die Software wird über einen festgelegten Zeitraum einer hohen Last ausgesetzt.

Soak Testing kann Probleme aufdecken, die erst nach Stunden oder sogar Tagen der Nutzung auftreten, und beobachten, was außerhalb der Designannahmen geschieht.

Soak Testing wird normalerweise vor der Bereitstellung des Builds durchgeführt. Die Anwendung durchläuft dann eine Reihe von Lasttests, nach denen das Soak Testing durchgeführt wird. Soak Testing stellt dann den letzten Schritt dar, um die Zuverlässigkeit deiner Software zu gewährleisten.

Da dieser Test über einen langen Zeitraum durchgeführt wird, sollte er am Wochenende oder über Nacht durchgeführt werden, um minimale Störungen für das Entwicklungsteam zu gewährleisten.

Aufgrund der langen Dauer dieses Tests muss er mithilfe eines geeigneten Automatisierungstools durchgeführt werden, und dein Team muss über die technische Expertise verfügen, um solche Tools erfolgreich einzusetzen.

Warum ist Soak Testing notwendig?

Dieser Test wird durchgeführt, um zu überprüfen, wie sich das System bei kontinuierlicher Nutzung und unter anhaltender Last verhält. Das Hauptziel dieses Tests ist es, das Systemverhalten bei langfristiger Nutzung in der Produktion zu validieren.

Die Hauptprobleme, die Soak Testing aufdecken soll, umfassen:

  • Speicherlecks, die nach längerer Nutzung auftreten können – Entwickler können potenzielle Lecks finden, die die Leistung negativ beeinflussen könnten, und diese beheben.
  • Verzögerung der Reaktionszeit – um sicherzustellen, dass die Reaktionszeit nach kontinuierlicher Nutzung gleich bleibt und so gut wie zu Beginn des Tests ist.
  • Verschlechterung der Systemressourcen, die normalerweise bei einem Test über einen langen Zeitraum sichtbar wird.
  • Datenbankverbindungsprobleme – das Versäumnis, Datenbank-Cursor unter bestimmten Bedingungen zu schließen, kann dazu führen, dass die Anwendung abstürzt.
  • Fehler bei den Schichtverbindungen – Soak Testing zeigt, ob es Fehler beim Schließen der Verbindungen zwischen den Schichten des Systems gibt, die die Module des Systems unterbrechen könnten.

Die Anwendung mag in anderen Phasen des Softwaretests für einige Stunden normal funktionieren, aber Soak Testing zeigt, ob das System stabil bleibt, wenn es über einen längeren Zeitraum genutzt wird, oder ob es abstürzt oder abnormales Verhalten zeigt.

Bei diesen Tests werden also Probleme wie Speicherlecks oder Leistungsverringerung aufgedeckt, die im Laufe der Zeit durch kontinuierliche Nutzung auftreten können.

Daher versuchen die Teams bei diesem Test, die reale Nutzung zu simulieren.

Das bedeutet, dass Soak Testing Developern die Gewissheit gibt, dass das System auch über längere Zeiträume hinweg reibungslos läuft, ohne dass Wartung erforderlich ist. Das vermeidet Wartungskosten, die auftreten würden, wenn Probleme während der Testphasen nicht erkannt werden.

Wie bei anderen Testarten gibt es auch einige Nachteile bei Soak Testing. Zum einen kann dieser Test aufgrund seiner langen Dauer ein zeitaufwändiger (und kostspieliger) Prozess sein, der die Veröffentlichung der Software verzögern kann.

Es kann auch schwierig sein, genau festzulegen, wie lange der Test laufen sollte. Du kannst ihn für einen gewissen Zeitraum laufen lassen und er besteht den Test. Natürlich weißt du nicht, ob die Anwendung abgestürzt wären, wenn du nur eine Stunde länger gewartet hättest. Kurz gesagt, Soak Testing erfordert eine sehr sorgfältige Planung.

Zusätzlich gibt es das Problem, diesen Test in einer separaten Umgebung statt in der Live-Umgebung durchzuführen, um größere Probleme wie Datenverlust zu vermeiden, was zusätzliche Ressourcen und Kosten erfordert.

Soak Testing vs. Load Testing vs. Stress Testing

Es gibt viele verschiedene Arten von Leistungstests. In diesem Abschnitt werden die Unterschiede zwischen Soak Testing und anderen Testarten wie Load Testing und Stress Testing erläutert, da sie auf den ersten Blick ähnlich erscheinen mögen, aber nicht genau dasselbe sind.

Load Testing testet, wie sich ein System bei einer großen Anzahl von Nutzern verhält. Das System wird getestet, indem schrittweise mehr Last hinzugefügt wird, bis es den Grenzwert erreicht. Load Testing wird verwendet, um herauszufinden, wie viele Nutzer ein System ohne Leistungseinbußen bewältigen kann.

Stress Testing hingegen untersucht, wie sich ein System unter extremen Bedingungen und hoher Belastung verhält. Stress Testing kann die Grenzen des Systems überschreiten, die in Load Testing abgedeckt sind, und es absichtlich zum Absturz bringen. Es testet die Stabilität des Systems jenseits seiner Bandbreitenkapazität.

Soak Testing konzentriert sich hingegen auf die Systemzuverlässigkeit über einen längeren Zeitraum. Es dient dazu, zu überwachen und zu überprüfen, ob das System kontinuierlich hohe Lasten tragen kann.

Zusammengefasst:

  • Soak Testing fokussiert sich darauf, die Zuverlässigkeit eines Systems über einen längeren Zeitraum zu bestimmen.
  • Load Testing überwacht die Leistung des Systems unter zunehmender Last bis zu einem bestimmten Grenzwert.
  • Stress Testing misst die Stabilität des Systems über seine maximale Kapazität hinaus, unter extrem hoher Last.

 

The following graphs illustrate the aforementioned points:

Load Testing: Last wird allmählich erhöht, bis der Spitzenwert erreicht wird, der nur für kurze Zeit gehalten wird.

Load Testing

Soak Testing: Allmähliche Last über einen längeren Zeitraum.

Soak Testing

Stress testing (increasing load until the breaking point)

Fazit

Wie wir gesehen haben, ist Soak Testing eine leistungsstarke Form von Last- und Leistungstests, die hilft, die Zuverlässigkeit deiner Software sicherzustellen.

Obwohl es ein zeitaufwändiger Prozess sein kann und sorgfältige Planung erfordert, ist es nützlich, um Leistungsprobleme zu identifizieren, die während der kontinuierlichen Nutzung einer Anwendung auftreten können, und um festzustellen, ob eine Anwendung eine kontinuierliche Last bewältigen kann.

Wie wichtig Soak Testing für dich ist, hängt von deiner Situation ab. Wenn du zum Beispiel eine E-Commerce-Website betreibst, die einen Online-Verkauf für einige Tage veranstaltet, wäre es wichtig, in diesem Szenario einen Soak Test durchzuführen, um sicherzustellen, dass deine Website auf unerwartet hohe Lasten vorbereitet ist, ohne abzustürzen.

Wie bei jeder Art von Softwaretest ist es immer am besten, alle zugrunde liegenden Probleme und Bugs aufzudecken, bevor die Software in Produktion geht, da es danach kostspieliger wird, diese Probleme zu beheben.

Schneller wachsen
mit ABTasty

Erhalten Sie eine individuelle Komplettlösung für die Plattform

Demo anfordern