Was ist Skalierbarkeitstest? Lernen Sie mit Beispielen

โšก Intelligente Zusammenfassung

Skalierbarkeitstests messen, wie sich eine Anwendung verhรคlt, wenn die Benutzerlast, das Datenvolumen oder die Transaktionsrate steigen oder fallen. Sie zeigen den genauen Punkt auf, an dem die Leistung nicht mehr skaliert, und identifizieren den dafรผr verantwortlichen Engpass.

  • ๐Ÿ”˜ Definition: Ein nicht-funktionaler Test, der รผberprรผft, ob ein System auch bei steigender Nachfrage noch zufriedenstellend funktioniert.
  • โ˜‘๏ธ Zwei Richtungen: Vertikale Skalierung erhรถht die Leistung einer Maschine; horizontale Skalierung fรผgt weitere Maschinen hinter einem Balancer hinzu.
  • โœ… Schlรผsselkennzahlen: Reaktionszeit, Durchsatz, CPU- und Speicherauslastung sowie Netzwerkauslastung sind tracbei jedem Ladeschritt geked.
  • ๐Ÿงช Anleitung: Die Last wird in geplanten Schritten erhรถht, bis ein Messwert seinen Schwellenwert รผberschreitet, was die Skalierbarkeitsgrenze markiert.
  • ๏ธ Werkzeug: JMeterk6, Gatling, Locust und LoadRunner erzeugen automatisch verteilte Lasten und protokollieren die Ergebnisse.
  • ๐Ÿ“ˆ Ergebnis: Die Kapazitรคtsplanung basiert nun auf Fakten statt auf Vermutungen, sodass Releases auch Lastspitzen รผberstehen.

Was ist Skalierbarkeitstesting?

Was ist Skalierbarkeitstest?

Skalierbarkeitstests Skalierbarkeitstests sind eine nicht-funktionale Testmethode, die die Leistungsfรคhigkeit eines Systems oder Netzwerks bei steigender oder sinkender Anzahl von Benutzeranfragen misst. Ziel dieser Tests ist es, sicherzustellen, dass das System einen prognostizierten Anstieg des Benutzerverkehrs, des Datenvolumens und der Transaktionshรคufigkeit bewรคltigen kann. Sie prรผfen die Fรคhigkeit des Systems, der wachsenden Nachfrage gerecht zu werden.

Skalierbarkeitstests sind eine Unterart von LeistungstestDaher konzentriert es sich auf das Verhalten einer Anwendung, wenn diese in einem grรถรŸeren System eingesetzt oder unter รœberlastung getestet wird. Software EngineeringSkalierbarkeitstests messen den Punkt, an dem eine Anwendung aufhรถrt zu skalieren, und ermitteln die Grรผnde dafรผr.

Warum Skalierbarkeitstests durchfรผhren?

Kapazitรคtsprobleme treten selten wรคhrend funktionaler Tests auf. Sie zeigen sich meist am umsatzstรคrksten Handelstag des Jahres, beim Start einer Marketingkampagne oder wenn ein Datensatz, der zwei Jahre lang unauffรคllig gewachsen ist, plรถtzlich jede Abfrage verlangsamt. Skalierbarkeitstests decken diese Grenzen zunรคchst in einer kontrollierten Umgebung auf. Konkret helfen sie Ihnen dabei:

  • Ermitteln Sie, wie die Anwendung mit zunehmender Arbeitslast skaliert und wo diese Kurve abflacht.
  • Ermitteln Sie die maximale Anzahl gleichzeitiger Benutzer fรผr die Webanwendung, bevor die Antwortzeiten inakzeptabel werden.
  • Ermitteln Sie die clientseitige Leistungsminderung und die Benutzererfahrung unter Last, z. B. langsame Bildschirmdarstellung.
  • Ermitteln Sie die Robustheit und LeistungseinbuรŸen auf Serverseite, einschlieรŸlich CPU-Auslastung, Speicherlecks und Erschรถpfung des Verbindungspools.

Am einfachsten lรคsst sich der Zusammenhang als Kurve veranschaulichen: Der Durchsatz steigt mit der zusรคtzlichen Last, bis eine Ressource gesรคttigt ist; danach verlรคngern zusรคtzliche Benutzer nur noch die Warteschlange.

Skalierbarkeitstests messen die Systemleistung bei steigender Arbeitslast.

Arten von Skalierbarkeitstests

Skalierbarkeit ist keine einheitliche Eigenschaft, daher umfasst ein Testplan รผblicherweise mehrere Dimensionen. Die vier unten aufgefรผhrten Typen werden von den meisten Teams gemessen, wobei die ersten beiden die Struktur der Testumgebung selbst bestimmen.

Typ Was wird skaliert? Was der Test beweist
Vertikale Skalierbarkeit (vergrรถรŸern) CPU, Arbeitsspeicher oder Speicherplatz wurden einem einzelnen Server hinzugefรผgt. Wie viel zusรคtzliche Last eine aufgerรผstete Maschine aufnimmt und wo die maximale Auslastung eines einzelnen Knotens liegt
Horizontale Skalierbarkeit (verkleinern) Zusรคtzliche Server, Container oder Knoten hinter einem Load Balancer Ob der Durchsatz annรคhernd proportional zur Anzahl der hinzugefรผgten Knoten steigt oder ob gemeinsam genutzte Ressourcen ihn begrenzen
Funktionale Skalierbarkeit Neue Funktionen, Module oder Dienste Ob zusรคtzliche Funktionen integriert werden kรถnnen, ohne bestehende Transaktionen zu beeintrรคchtigen
Administrative Skalierbarkeit Benutzer, Mandanten, Teams oder Umgebungen zu verwalten Ob Onboarding, Berechtigungen und รœberwachung auch bei wachsendem Unternehmen noch praktikabel bleiben.

Vertikale Skalierung ist einfacher, da sich die Architektur selten รคndert, doch stรถรŸt jede einzelne Maschine an ihre Grenzen. Horizontale Skalierung beseitigt diese Grenzen und verbessert die Fehlertoleranz, allerdings auf Kosten von Netzwerklatenz, Datenkonsistenz und Koordinationsaufwand โ€“ Faktoren, die im Test gemessen und nicht nur angenommen werden dรผrfen.

Was beim Skalierbarkeitstest geprรผft werden sollte

Skalierbarkeit wird anhand von Messwerten, nicht von subjektiven Eindrรผcken, beurteilt. Erfassen Sie die folgenden Attribute bei jedem Ladeschritt, damit der Trend und nicht nur das Endergebnis sichtbar wird.

Attribut Was es dir sagt
Reaktionszeit Die Zeitspanne zwischen einer Benutzeranfrage und der Systemantwort sollte sich bei steigender Anzahl gleichzeitiger Anfragen nicht verรคndern.
Bildschirmรผbergang Wie schnell eine Seite oder Ansicht unter Last zur nรคchsten wechselt
Durchsatz Anzahl der pro Zeiteinheit verarbeiteten Anfragen; ein Plateau markiert die Skalierbarkeitsgrenze
Zeitmessungen Sitzungszeit, Neustartzeit, Druckzeit, Transaktionszeit und Aufgabenausfรผhrungszeit
Leistung im Verhรคltnis zur Benutzerzahl Wie sich die einzelnen Kennzahlen verรคndern, wenn die Anzahl gleichzeitiger Nutzer schrittweise erhรถht wird
Tarife anfragen Anfragen pro Sekunde, Transaktionen pro Sekunde und Treffer pro Sekunde
Netzwerknutzung Bandbreitenverbrauch und Paketlatenz zwischen den Ebenen
CPU- und Speicherauslastung Ressourcenkosten pro Transaktion; ein stetig steigender Wert deutet oft auf ein Leck hin.
Webserver-Zรคhler Anfragen und Antworten pro Sekunde, Warteschlangenlรคnge und abgelehnte Verbindungen
Leistung unter Last Kombiniertes Verhalten, sobald alle Kennzahlen gleichzeitig zum Spitzenwert erfasst werden.

Teststrategie fรผr Skalierbarkeitstests

Die Teststrategie fรผr Skalierbarkeitstests unterscheidet sich je nach Art der zu testenden Anwendung. Wenn eine Anwendung auf eine DatenbankZu den Testparametern gehรถren unter anderem die GrรถรŸe der Datenbank im Verhรคltnis zur Anzahl der Benutzer.

Voraussetzungen fรผr Skalierbarkeitstests

  • Lastverteilungsfรคhigkeit โ€” Prรผfen Sie, ob das Lasttesttool es ermรถglicht, die Last von mehreren Maschinen zu erzeugen und von einem zentralen Punkt aus zu steuern.
  • Betriebssystem โ€” รœberprรผfen Sie, was Betriebssysteme Die Lastgenerierungsagenten und der Lasttest-Master laufen unter.
  • Prozessor โ€” Prรผfen Sie, welcher CPU-Typ fรผr den virtuellen Benutzeragenten und den Lasttestmaster erforderlich ist.
  • Memory โ€” Prรผfen Sie, wie viel Speicherplatz fรผr den virtuellen Benutzeragenten und den Lasttest-Master ausreicht.
  • Test Umgebung โ€” รœberprรผfen Sie, ob die Test Umgebung Die Produktion wird so genau abgebildet, dass die Ergebnisse รผbertragbar sind.

So fรผhren Sie Skalierbarkeitstests durch

  1. Definieren Sie einen wiederholbaren Prozess zur Durchfรผhrung von Skalierbarkeitstests wรคhrend des gesamten Anwendungslebenszyklus.
  2. Bestimmen Sie die Kriterien fรผr die Skalierbarkeit
  3. Wรคhlen Sie die Softwaretools aus, die zum Ausfรผhren des Auslastungstests erforderlich sind
  4. Richten Sie die Testumgebung ein und konfigurieren Sie die Hardware, die zum Ausfรผhren von Skalierbarkeitstests erforderlich ist
  5. Planen Sie die Testszenarien sowie die Skalierbarkeitstests.
  6. Virtuelles Benutzerskript erstellen und รผberprรผfen
  7. Erstellen und รผberprรผfen Sie die Lasttestszenarien
  8. Fรผhren Sie die Tests durch
  9. Bewerten Sie die Ergebnisse
  10. Erstellen Sie die erforderlichen Berichte

Skalierbarkeitstestplan

Bevor Sie die eigentlichen Tests erstellen, entwickeln Sie einen detaillierten Testplan. Dies ist ein wichtiger Schritt, um sicherzustellen, dass der Test den Anwendungsanforderungen entspricht.

Im Folgenden sind die Attribute fรผr die Erstellung eines wohldefinierten Versuchsplan fรผr Skalierbarkeitstests.

  • Schritte fรผr SkripteDas Testskript sollte detaillierte Schritte enthalten, die genau die Aktionen festlegen, die ein Benutzer ausfรผhren wรผrde.
  • LaufzeitdatenDer Testplan sollte alle Laufzeitdaten ermitteln, die fรผr die Interaktion mit der Anwendung erforderlich sind.
  • Datengesteuerte TestsWenn die Skripte zur Laufzeit unterschiedliche Daten benรถtigen, mรผssen Sie alle Felder kennen, die diese Daten benรถtigen.

Beispiel fรผr Skalierbarkeitstests

Stellen Sie sich einen Online-Shop vor, der wรคhrend eines saisonalen Schlussverkaufs 2,000 gleichzeitige Kรคufer erwartet. Das Team einigt sich zunรคchst auf ein Kriterium: Die Bezahltransaktion muss fรผr 95 Prozent der Nutzer in weniger als drei Sekunden abgeschlossen sein, mit einer Fehlerrate von unter einem Prozent.

Der Test fรผhrt das gleiche Skript (Browse-Search-Cart-Checkout) mit 250, 500, 1,000, 1,500 und 2,000 virtuellen Benutzern aus. Die Antwortzeit bleibt bis zu 1,000 Benutzern bei etwa zwei Sekunden, steigt bei 1,500 Benutzern auf 2.8 Sekunden und erreicht bei 2,000 Benutzern neun Sekunden, wรคhrend die CPU-Auslastung der Datenbank bei 98 Prozent liegt. Die Skalierbarkeitsgrenze liegt daher bei etwa 1,500 Benutzern, und der Flaschenhals ist die Datenbankebene โ€“ nicht die Anwendungsserver, die das Team ursprรผnglich hinzufรผgen wollte.

Skalierbarkeitstestwerkzeuge

Fรผr Skalierbarkeitstests wird ein Tool benรถtigt, das Lasten von mehreren Maschinen gleichzeitig generieren und die Ergebnisse zentral auswerten kann. Die Wahl des Tools richtet sich รผblicherweise nach der primรคren Programmiersprache des Teams und den zu testenden Protokollen.

Werkzeug Scripting am besten geeignet fรผr
Apache JMeter GUI- und XML-Testplรคne, Java basierend Umfassende Protokollabdeckung einschlieรŸlich JDBC, JMS, LDAP und SOAP
Grafana k6 JavaSkript oder TypeScript API- und Microservice-Tests sind in eine CI/CD-Pipeline integriert.
Gatling Java, Kotlin- oder Scala-DSL Hohe Anzahl virtueller Benutzer pro Injektor mit detaillierten HTML-Berichten
Heuschrecke Ebene Python Python Teams, die den Client รผber HTTP hinaus erweitern mรผssen
LoadRunner C-รคhnliche Skripte, die in VuGen aufgezeichnet wurden GroรŸe Unternehmensnetzwerke mit Legacy- und Standardanwendungen

Cloud-basierte Runner wie z. B. BlazeMeterLoadView und Gatling Enterprise basieren auf mehreren dieser Engines und sind empfehlenswert, sobald ein Test Zehntausende virtuelle Benutzer oder Datenverkehr aus mehreren geografischen Regionen erfordert. Eine umfassendere รœbersicht dieser Kategorie finden Sie im Leitfaden zu Leistungstest-Tools.

Herausforderungen und bewรคhrte Verfahren beim Skalierbarkeitstest

Die meisten enttรคuschenden Skalierbarkeitsergebnisse tracKehren wir zum Testaufbau zurรผck, anstatt zur Anwendung. Das sind die Probleme, die immer wieder auftreten, und die Gewohnheiten, die sie verhindern.

Gemeinsame Herausforderungen

  • Unterdimensionierte Umgebungen โ€” Ein Testsystem mit der Hรคlfte des Produktionsspeichers meldet einen Engpass, der in der Produktion nicht existiert.
  • Unrealistische Arbeitslastmodelle โ€” Skripte ohne Denkzeit oder Datenvariation treffen auf Caches, die echte Benutzer nicht bemerken wรผrden.
  • Rauschende Ergebnisse โ€” Automatische Skalierung, Speicherbereinigung und gemeinsam genutzte Cloud-Hardware fรผhren dazu, dass zwei identische Ausfรผhrungen zu unterschiedlichen Ergebnissen fรผhren.
  • Dรผnne Beobachtbarkeit โ€” Ohne serverseitige Metriken zeigt ein langsames Ergebnis zwar, dass etwas kaputtgegangen ist, aber nicht, was.
  • Kosten โ€” Die Erzeugung einer sehr hohen Parallelitรคt erfordert eine eigene Flotte von Lastgeneratoren, deren Budget leicht unterschรคtzt werden kann.

bewรคhrte Vorgehensweisen

  • Die Bestehenskriterien, wie beispielsweise ein Perzentil der Reaktionszeit und eine maximale Fehlerrate, sollten vor dem ersten Durchlauf vereinbart werden.
  • Erhรถhen Sie die Last in geplanten Schritten und halten Sie jeden Schritt so lange, bis sich das System stabilisiert hat.
  • Variieren Sie die Testdaten fรผr jeden virtuellen Benutzer, damit die Zwischenspeicherung die Ergebnisse nicht verfรคlscht.
  • Erfassen Sie neben den clientseitigen Kennzahlen auch Anwendungs-, Datenbank- und Infrastrukturmetriken.
  • Speichern Sie die Testskripte in der Versionskontrolle und fรผhren Sie bei jedem Build einen kurzen Skalierbarkeitscheck durch, anschlieรŸend vor der Verรถffentlichung einen vollstรคndigen Testlauf.
  • Vergleichen Sie die Trends รผber verschiedene Builds hinweg, anstatt einen einzelnen Bericht isoliert zu beurteilen.

Skalierbarkeitstests vs. Lasttests

Die beiden werden oft verwechselt, da beide eine Lastverteilung anwenden. Der Unterschied liegt in der Frage, die jeder Test beantwortet: Skalierbarkeitstests untersuchen, wie weit das System wachsen kann, wรคhrend Lastprรผfung fragt, ob es die bereits erwartete Last bewรคltigen kann.

Verpflegung Skalierbarkeitstests Load Testing
Optik Im Fokus steht die Leistungsfรคhigkeit Ihrer Websites, Software, Hardware und Anwendungen, wenn ร„nderungen an der GrรถรŸe oder dem Umfang des Systems vorgenommen werden, um einem wachsenden Bedarf gerecht zu werden. Bei Lasttests geht es darum, eine Anwendung unter hoher Last zu testen, um festzustellen, ab welchem โ€‹โ€‹Punkt die Systemreaktionszeit abbricht.
Lastmuster Die Last wird schrittweise erhรถht, und zwischen den Schritten kรถnnen Ressourcen hinzugefรผgt werden. Die Last wird fรผr eine festgelegte Dauer auf einem erwarteten Spitzenwert gehalten.
Frage beantwortet Wie weit kann dieses System wachsen und was setzt ihm Grenzen? Erreicht dieses System heute seine vereinbarten Ziele?
Typische Ausgabe Eine Skalierbarkeitsgrenze, ein Engpass und ein Kapazitรคtsplan Bestanden oder Nichtbestehen der Reaktionszeit- und Durchsatzziele

Beide sitzen unter dem nicht-funktionale Tests Regenschirm neben Stress-Tests, Spike-Test, Ausdauertest und VolumenprรผfungEine ausgereifte Performance-Strategie lรคsst รผblicherweise mehrere davon gegen dieselben Skripte laufen.

Hรคufig gestellte Fragen

Maschinelle Lernmodelle analysieren historische Laufzeitdaten, um die erste Abweichung einer Metrik zu identifizieren, echte Regressionen von Stรถrungen zu trennen und die Auslastung vorherzusagen, bei der eine Ressource an ihre Grenzen stรถรŸt. Mehrere kommerzielle Plattformen bieten diese Funktion mittlerweile als automatisierte Nachbearbeitungsanalyse an.

Ja. Copilot und รคhnliche Agenten entwerfen k6 Oder Locust-Szenarien, um parametrisierte Testdaten zu generieren und CI-Pipeline-Schritte schnell zu erstellen. Ein Performance-Ingenieur muss weiterhin realistische Denkzeiten, Workload-Mischungen und Bestehenskriterien festlegen, da diese auf dem Produktionsverhalten basieren.

Skalierbarkeit bezeichnet die Fรคhigkeit, Ressourcen bei Bedarf โ€“ ob innerhalb von Minuten oder Monaten โ€“ zu erweitern. Elastizitรคt hingegen ermรถglicht es, Ressourcen je nach Bedarf automatisch hinzuzufรผgen und wieder freizugeben und anschlieรŸend wieder auf den ursprรผnglichen, kleineren Umfang zurรผckzukehren.

Beginnen Sie deutlich unterhalb des erwarteten Hรถchstwertes, oft zehn bis zwanzig Prozent, um die Funktion des Skripts und des Monitorings zu bestรคtigen. Erhรถhen Sie die Zรคhlung in gleichmรครŸigen Schritten auf den Zielwert und darรผber hinaus, da das interessante Verhalten eher zwischen zwei Schritten als bei einem einzelnen Wert auftritt.

Ein einzelner Bรผrorechner kann nicht Zehntausende von Sitzungen generieren und die Latenz, die ein Benutzer in einer anderen Region erlebt, nicht reproduzieren. Cloud-Testing Liefert Lastgeneratoren in verschiedenen Regionen nach Bedarf und gibt sie wieder ab, wenn der Betrieb abgeschlossen ist.

Fรผhren Sie bei jedem Build einen kurzen Test durch, damit Regressionen innerhalb eines Tages sichtbar werden, und einen vollstรคndigen Testlauf vor jeder Verรถffentlichung, die Architektur, Datenbankschema oder Traffic-Erwartungen รคndert. Wenn Sie bis zur Woche vor dem Launch warten, bleibt keine Zeit mehr, die gefundenen Fehler zu beheben.

Neben den entgangenen Transaktionen wรคhrend der Ausfallzeit treiben langsame Seiten Besucher zur Konkurrenz und beeintrรคchtigen das Suchmaschinenranking. Im Einzelhandel und Ticketing tritt der Ausfall meist am umsatzstรคrksten Tag des Jahres auf โ€“ also genau dann, wenn der Traffic am vorhersehbarsten ist.

Skripting in JavaSkript, Python or JavaFundierte Kenntnisse von HTTP und Datenbankverhalten, sicherer Umgang mit Server- und Containermetriken sowie ausreichendes Statistikwissen, um Perzentile von Durchschnittswerten zu unterscheiden, sind erforderlich. Erfahrung mit Cloud- und CI/CD-Prozessen ist nahezu unerlรคsslich.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: