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.
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.
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
- Definieren Sie einen wiederholbaren Prozess zur Durchführung von Skalierbarkeitstests während des gesamten Anwendungslebenszyklus.
- Bestimmen Sie die Kriterien für die Skalierbarkeit
- Wählen Sie die Softwaretools aus, die zum Ausführen des Auslastungstests erforderlich sind
- Richten Sie die Testumgebung ein und konfigurieren Sie die Hardware, die zum Ausführen von Skalierbarkeitstests erforderlich ist
- Planen Sie die Testszenarien sowie die Skalierbarkeitstests.
- Virtuelles Benutzerskript erstellen und überprüfen
- Erstellen und überprüfen Sie die Lasttestszenarien
- Führen Sie die Tests durch
- Bewerten Sie die Ergebnisse
- 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.

