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: