load testing complete guide
Ein vollständiger Leitfaden für Lasttests für Anfänger:
In diesem Tutorial erfahren Sie, warum wir Lasttests durchführen, was daraus erreicht wird, Architektur, wie Sie einen Lasttest erfolgreich ausführen, wie Sie eine Lasttestumgebung einrichten, Best Practices und die besten auf dem Markt erhältlichen Lasttestwerkzeuge.
Wir haben sowohl von funktionalen als auch von nicht funktionalen Testtypen gehört. Bei nicht funktionalen Tests gibt es verschiedene Arten von Tests wie Leistungstests, Sicherheitstests, Tests der Benutzeroberfläche usw.
Daher ist Lasttest ein nicht funktionaler Testtyp, der eine Teilmenge des Leistungstests ist.
Wenn wir also sagen, dass wir eine Anwendung auf Leistung testen, was testen wir dann alle hier? Wir testen die Anwendung auf Last, Volumen, Kapazität, Spannung usw.
Was du lernen wirst:
- Was ist Lasttest?
- Lasttestarchitektur
- Warum Lasttests?
- Umgebung
- Ansatz
- Empfohlene Vorgehensweise
- Fazit
- Literatur-Empfehlungen
Was ist Lasttest?
Lasttests sind eine Teilmenge von Leistungstests, bei denen wir die Reaktion des Systems unter verschiedenen Lastbedingungen testen, indem wir simulieren, dass mehrere Benutzer gleichzeitig auf die Anwendung zugreifen. Dieser Test misst normalerweise die Geschwindigkeit und Kapazität der Anwendung.
Wenn wir also die Last ändern, überwachen wir das Verhalten des Systems unter verschiedenen Bedingungen.
Beispiel ::Nehmen wir an, dass unsere Client-Anforderung für eine Anmeldeseite 2 bis 5 Sekunden beträgt und diese 2 bis 5 Sekunden durchgehend konsistent sein sollten, bis die Last 5000 Benutzer beträgt. Was sollen wir also hören hören? Ist es nur die Lasthandhabungsfähigkeit des Systems oder ist es nur die Reaktionszeitanforderung?
Die Antwort ist beides. Wir wollen ein System, das eine Last von 5000 Benutzern mit einer Antwortzeit von 2-5 Sekunden für alle gleichzeitigen Benutzer bewältigen kann.
Was versteht man unter einem gleichzeitigen Benutzer und einem virtuellen Benutzer?
Gleichzeitige Benutzer sind diejenigen, die sich bei der Anwendung anmelden und gleichzeitig eine Reihe von Aktivitäten gemeinsam ausführen und die Anwendung gleichzeitig abmelden. Auf der anderen Seite springen virtuelle Benutzer unabhängig von den anderen Benutzeraktivitäten einfach in das System ein und aus.
Lasttestarchitektur
In der folgenden Abbildung sehen wir, wie verschiedene Benutzer auf die Anwendung zugreifen. Hier stellt jeder Benutzer eine Anfrage über das Internet, die später über eine Firewall weitergeleitet wird.
Nach der Firewall haben wir einen Load Balancer, der die Last auf einen der Webserver verteilt und dann an den Anwendungsserver und später an den Datenbankserver weiterleitet, wo er die erforderlichen Informationen basierend auf der Benutzeranforderung abruft.
Lasttests können sowohl manuell als auch mit einem Werkzeug durchgeführt werden. Manuelle Lasttests werden jedoch nicht empfohlen, da wir die Anwendung nicht auf eine geringere Last testen.
Beispiel: Nehmen wir an, wir möchten eine Online-Einkaufsanwendung testen, um die Antwortzeit der Anwendung für jeden Benutzer zu sehen. Klicken Sie auf Schritt 1 - URL starten, Antwortzeit, Anmelden bei der Anwendung und notieren Sie die Antwortzeit usw. wie bei der Auswahl von a Produkt, in den Warenkorb legen, bezahlen und abmelden. All dies muss für 10 Benutzer durchgeführt werden.
Wenn wir nun die Anwendungslast für 10 Benutzer testen müssen, können wir dies erreichen, indem wir die Last von 10 physischen Benutzern von verschiedenen Computern manuell einstellen, anstatt ein Tool zu verwenden. In diesem Szenario ist es ratsam, einen manuellen Belastungstest durchzuführen, anstatt in ein Werkzeug zu investieren und eine Umgebung für das Werkzeug einzurichten.
Stellen Sie sich vor, wenn wir einen Lasttest für 1500 Benutzer benötigen, müssen wir den Lasttest mit einem der verfügbaren Tools automatisieren, die auf den Technologien basieren, in denen die Anwendung erstellt wurde, und auch auf dem Budget, das wir für das Projekt haben.
Wenn wir ein Budget haben, können wir uns für kommerzielle Tools wie Load Runner entscheiden. Wenn wir jedoch nicht viel Budget haben, können wir uns für Open Source-Tools wie JMeter usw. entscheiden.
was dbms läuft auf einem pc
Unabhängig davon, ob es sich um ein kommerzielles Tool oder ein Open Source-Tool handelt, müssen die Details dem Kunden mitgeteilt werden, bevor wir das Tool fertigstellen. In der Regel wird ein Proof of Concept erstellt, in dem wir mit dem Tool ein Beispielskript erstellen und dem Kunden die Beispielberichte zur Genehmigung des Tools anzeigen, bevor wir es fertigstellen.
Beim automatisierten Lasttest ersetzen wir die Benutzer mithilfe eines Automatisierungstools, das die Echtzeit-Benutzeraktionen nachahmt. Durch die Automatisierung der Last können wir sowohl Ressourcen als auch Zeit sparen.
Das folgende Diagramm zeigt, wie die Benutzer mithilfe eines Tools ersetzt werden.
Warum Lasttests?
Nehmen wir an, dass es eine Online-Shopping-Website gibt, die an normalen Geschäftstagen ziemlich gut funktioniert, dh Benutzer können sich bei der Anwendung anmelden, die verschiedenen Produktkategorien durchsuchen, Produkte auswählen, Artikel in den Warenkorb legen, auschecken und sich abmelden ein akzeptabler Bereich und es gibt keine Seitenfehler oder großen Antwortzeiten.
In der Zwischenzeit kommt ein Spitzentag, dh der Dankeschön-Tag, und es gibt Tausende von Benutzern, die am System angemeldet sind. Das System stürzt plötzlich ab und die Benutzer reagieren sehr langsam, einige konnten nicht einmal Melden Sie sich auf der Website an, einige konnten nicht in den Warenkorb gelegt und einige konnten nicht ausgecheckt werden.
Daher musste das Unternehmen an diesem großen Tag einen großen Verlust hinnehmen, da es viele Kunden und auch viel Geschäft verlor. All dies geschah nur, weil sie die Benutzerlast für Spitzentage nicht vorhergesagt hatten, selbst wenn sie vorhergesagt hätten, dass auf der Unternehmenswebsite kein Lasttest durchgeführt wurde. Daher wissen sie nicht, wie viel Last die Anwendung verarbeiten kann an den Spitzentagen.
Um mit solchen Situationen umzugehen und enorme Einnahmen zu erzielen, ist es daher ratsam, einen Belastungstest für solche Anwendungen durchzuführen.
- Lasttests helfen beim Aufbau starker und zuverlässiger Systeme.
- Der Engpass im System wird frühzeitig erkannt, bevor die Anwendung live geschaltet wird.
- Es hilft bei der Identifizierung der Kapazität der Anwendung.
Was wird bei einem Belastungstest erreicht?
Mit einem richtigen Belastungstest können wir Folgendes genau verstehen:
- Die Anzahl der Benutzer, die das System verarbeiten oder auf die es skalieren kann.
- Die Antwortzeit jeder Transaktion.
- Wie verhält sich jede Komponente des gesamten Systems unter Laden, d. H. Anwendungsserverkomponenten, Webserverkomponenten, Datenbankkomponenten usw.
- Welche Serverkonfiguration ist am besten geeignet, um die Last zu bewältigen?
- Ob die vorhandene Hardware ausreicht oder zusätzliche Hardware benötigt wird.
- Engpässe wie CPU-Auslastung, Speichernutzung, Netzwerkverzögerungen usw. werden erkannt.
Umgebung
Wir benötigen eine dedizierte Lasttestumgebung, um unsere Tests durchzuführen. Da die Lasttestumgebung meistens mit der Produktionsumgebung identisch ist und auch die in der Lasttestumgebung verfügbaren Daten mit der Produktion identisch sind, obwohl es sich nicht um dieselben Daten handelt.
Es wird mehrere Testumgebungen wie SIT-Umgebung, QS-Umgebung usw. geben. Diese Umgebungen sind nicht dieselbe Produktion, da sie im Gegensatz zu Lasttests nicht so viele Server oder so viele Testdaten benötigen, um Funktionstests oder Integrationstests durchzuführen.
Beispiel:
In einer Produktionsumgebung verfügen wir über 3 Anwendungsserver, 2 Webserver und 2 Datenbankserver. In der Qualitätssicherung haben wir nur 1 Anwendungsserver, 1 Webserver und 1 Datenbankserver. Wenn wir also einen Belastungstest in der QS-Umgebung durchführen, der nicht der Produktion entspricht, sind unsere Tests nicht gültig und auch falsch. Daher können wir diese Ergebnisse nicht verwenden.
Versuchen Sie daher immer, eine dedizierte Umgebung für Lasttests zu haben, die der einer Produktionsumgebung ähnelt.
Manchmal haben wir auch Anwendungen von Drittanbietern, die unser System aufruft. In solchen Fällen können wir daher Stubs verwenden, da wir nicht immer mit den Drittanbietern zusammenarbeiten können, um Daten zu aktualisieren oder andere Probleme oder Unterstützung zu erhalten.
Versuchen Sie, einen Snapshot der Umgebung zu erstellen, sobald diese fertig ist. Wenn Sie die Umgebung neu erstellen möchten, können Sie diesen Snapshot verwenden, der bei der Zeitverwaltung hilfreich ist. Es gibt einige Tools, die auf dem Markt verfügbar sind, um die Umgebung einzurichten, wie Puppet, Docker usw.
Ansatz
Bevor wir mit dem Lasttest beginnen, müssen wir verstehen, ob bereits ein Lasttest auf dem System durchgeführt wurde oder nicht. Wenn früher Lasttests durchgeführt wurden, müssen wir wissen, wie lange die Antwortzeit, die gesammelten Client- und Server-Metriken, die Ladekapazität des Benutzers usw. waren.
Außerdem benötigen wir Informationen darüber, wie hoch die aktuelle Fähigkeit zur Anwendungsbearbeitung ist. Wenn es sich um eine neue Anwendung handelt, müssen wir die Anforderungen verstehen, wie hoch die Ziellast ist, wie hoch die erwartete Antwortzeit ist und ob sie wirklich erreichbar ist oder nicht.
Wenn es sich um eine vorhandene Anwendung handelt, können Sie die Ladeanforderungen und die Benutzerzugriffsmuster aus den Serverprotokollen abrufen. Wenn es sich jedoch um eine neue Anwendung handelt, müssen Sie sich an das Geschäftsteam wenden, um alle Informationen zu erhalten.
Sobald wir die Anforderungen haben, müssen wir identifizieren, wie wir den Belastungstest ausführen werden. Wird es manuell oder mit Werkzeugen gemacht? Das manuelle Ausführen eines Auslastungstests erfordert viele Ressourcen und ist auch sehr teuer. Auch das wiederholte Wiederholen des Tests wird schwierig.
Um dies zu überwinden, können wir entweder Open Source-Tools oder kommerzielle Tools verwenden. Open Source-Tools sind kostenlos verfügbar. Diese Tools verfügen möglicherweise nicht über alle Funktionen wie die anderen kommerziellen Tools. Wenn das Projekt jedoch eine Budgetbeschränkung aufweist, können wir uns für Open Source-Tools entscheiden.
Während kommerzielle Tools viele Funktionen haben, unterstützen sie viele Protokolle und sind sehr benutzerfreundlich.
Unser Lasttest-Ansatz lautet wie folgt:
# 1) Identifizieren Sie die Akzeptanzkriterien für den Belastungstest
Zum Beispiel::
- Die Antwortzeit auf der Anmeldeseite sollte auch bei maximaler Last nicht länger als 5 Sekunden sein.
- Die CPU-Auslastung sollte nicht mehr als 80% betragen.
- Der Durchsatz des Systems sollte 100 Transaktionen pro Sekunde betragen.
# 2) Identifizieren Sie die Geschäftsszenarien, die getestet werden müssen.
Testen Sie nicht alle Abläufe, sondern versuchen Sie, die wichtigsten Geschäftsabläufe zu verstehen, die in der Produktion erwartet werden. Wenn es sich um eine vorhandene Anwendung handelt, können wir seine Informationen aus den Serverprotokollen der Produktionsumgebung abrufen.
Wenn es sich um eine neu erstellte Anwendung handelt, müssen wir mit den Geschäftsteams zusammenarbeiten, um die Ablaufmuster, die Anwendungsnutzung usw. zu verstehen. Manchmal führt das Projektteam Workshops durch, um einen Überblick oder Details zu jeder Komponente der Anwendung zu geben.
Wir müssen am Anwendungsworkshop teilnehmen und alle erforderlichen Informationen notieren, um unseren Belastungstest durchzuführen.
# 3) Modellierung der Arbeitslast
Sobald wir die Details zu den Geschäftsabläufen, Benutzerzugriffsmustern und der Anzahl der Benutzer haben, müssen wir die Arbeitslast so gestalten, dass sie die tatsächliche Benutzernavigation in der Produktion nachahmt oder wie erwartet in der Zukunft nach der Anwendung wird in Produktion sein.
Die wichtigsten Punkte, die Sie beim Entwerfen eines Workload-Modells beachten sollten, sind, wie viel Zeit ein bestimmter Geschäftsablauf für die Fertigstellung benötigt. Hier müssen wir die Denkzeit so zuweisen, dass der Benutzer realistischer durch die Anwendung navigiert.
Das Arbeitslastmuster besteht normalerweise aus einer Rampe nach oben, einer Rampe nach unten und einem stabilen Zustand. Wir sollten das System langsam laden und daher Rampe hoch und Rampe runter verwendet werden. Der stationäre Zustand ist normalerweise ein einstündiger Belastungstest mit einem Anstieg von 15 Minuten und einem Abfall von 15 Minuten.
Nehmen wir ein Beispiel für das Workload-Modell:
Übersicht über die Anwendung - Nehmen wir einen Online-Einkauf an, bei dem sich die Benutzer bei der Anwendung anmelden und eine Vielzahl von Kleidern zum Einkaufen haben und über jedes Produkt navigieren können.
Um die Details zu jedem Produkt anzuzeigen, müssen sie auf das Produkt klicken. Wenn ihnen die Kosten und die Marke des Produkts gefallen, können sie sie in den Warenkorb legen und das Produkt kaufen, indem sie auschecken und die Zahlung vornehmen.
Nachstehend finden Sie eine Liste von Szenarien:
- Durchsuche - Hier startet der Benutzer die Anwendung, meldet sich bei der Anwendung an, durchsucht verschiedene Kategorien und meldet sich bei der Anwendung ab.
- Durchsuchen, Produktansicht, In den Warenkorb - Hier meldet sich der Benutzer bei der Anwendung an, durchsucht verschiedene Kategorien, zeigt Produktdetails an, fügt das Produkt dem Warenkorb hinzu und meldet sich ab.
- Durchsuchen, Produktansicht, In den Warenkorb legen und auschecken - In diesem Szenario meldet sich der Benutzer bei der Anwendung an, durchsucht verschiedene Kategorien, zeigt Produktdetails an, fügt das Produkt dem Warenkorb hinzu, checkt aus und meldet sich ab.
- Durchsuchen, Produktansicht, In den Warenkorb Zum Auschecken und Bezahlen - Hier meldet sich der Benutzer bei der Anwendung an, durchsucht verschiedene Kategorien, zeigt Produktdetails an, fügt das Produkt dem Warenkorb hinzu, checkt aus, führt Zahlungen durch und meldet sich ab.
S.No. | Geschäftsablauf | Anzahl der Transaktionen | Laden des virtuellen Benutzers | Reaktionszeit (Sek.) | % Ausfallrate erlaubt | Transaktionen pro Stunde |
---|---|---|---|---|---|---|
1 | Durchsuche | 17 | 1600 | 3 | Weniger als 2% | 96000 |
zwei | Durchsuchen, Produktansicht, In den Warenkorb | 17 | 200 | 3 | Weniger als 2% | 12000 |
3 | Durchsuchen, Produktansicht, In den Warenkorb legen und auschecken | 18 | 120 | 3 | Weniger als 2% | 7200 |
4 | Durchsuchen, Produktansicht, In den Warenkorb Zum Auschecken und Bezahlen | zwanzig | 80 | 3 | Weniger als 2% | 4800 |
Die obigen Werte wurden basierend auf den folgenden Berechnungen abgeleitet:
- Transaktionen pro Stunde = Anzahl der Benutzer * Transaktionen, die von einem einzelnen Benutzer in einer Stunde durchgeführt wurden.
- Die Anzahl der Benutzer = 1600.
- Die Gesamtzahl der Transaktionen im Durchsuchen-Szenario = 17.
- Antwortzeit für jede Transaktion = 3.
- Gesamtzeit für einen einzelnen Benutzer, um 17 Transaktionen abzuschließen = 17 * 3 = 51, gerundet auf 60 Sekunden (1 Minute).
- Transaktionen pro Stunde = 1600 * 60 = 96000 Transaktionen.
# 4) Entwerfen Sie die Belastungstests- - Der Auslastungstest sollte mit den Daten erstellt werden, die wir bisher erfasst haben, d. H. Den Geschäftsabläufen, der Anzahl der Benutzer, den Benutzermustern und den zu erfassenden und zu analysierenden Metriken. Darüber hinaus sollten die Tests sehr realistisch gestaltet sein.
# 5) Lasttest ausführen - Stellen Sie vor dem Ausführen des Auslastungstests sicher, dass die Anwendung aktiv ist. Die Lasttestumgebung ist bereit. Die Anwendung ist funktionsgeprüft und stabil.
Überprüfen Sie die Konfigurationseinstellungen der Lasttestumgebung. Es sollte mit der Produktionsumgebung identisch sein. Stellen Sie sicher, dass alle Testdaten verfügbar sind. Stellen Sie sicher, dass Sie die erforderlichen Zähler hinzufügen, um die Systemleistung während der Testausführung zu überwachen.
Beginnen Sie immer mit einer geringen Last und erhöhen Sie die Last allmählich. Beginnen Sie niemals mit der vollen Last und brechen Sie das System.
# 6) Analysieren Sie die Lasttestergebnisse - Führen Sie einen Basistest durch, um ihn immer mit den anderen Testläufen zu vergleichen. Sammeln Sie die Metriken und Serverprotokolle nach dem Testlauf, um die Engpässe zu ermitteln.
Einige Projekte verwenden Tools zur Überwachung der Anwendungsleistung, um das System während des Testlaufs zu überwachen. Diese APM-Tools helfen dabei, die Grundursache einfacher zu identifizieren und viel Zeit zu sparen. Diese Tools sind sehr einfach, um die Grundursache des Engpasses zu finden, da sie eine breite Sicht haben, um genau zu bestimmen, wo das Problem liegt.
Einige der APM-Tools auf dem Markt umfassen DynaTrace, Wily Introscope, App Dynamics usw.
# 7) Berichterstattung - Sammeln Sie nach Abschluss des Testlaufs alle Messdaten und senden Sie den Testzusammenfassungsbericht mit Ihren Beobachtungen und Empfehlungen an das betreffende Team.
Empfohlene Vorgehensweise
Nachfolgend sind einige der Best Practices für Lasttests aufgeführt:
# 1) Überprüfen Sie immer die Anwendungsstabilität, bevor Sie einen Belastungstest starten. Die Anwendung sollte vom Funktionstestteam funktionsstabil signiert werden, und alle wichtigen Fehler sollten behoben und getestet werden, bevor der Build in die Lasttestumgebung kopiert wird.
#zwei) Stellen Sie sicher, dass die Load-Testumgebung ein Replikat ist oder sich in der Nähe der Produktionsumgebung befindet, einschließlich der Anzahl der Server, Load Balancer, Serverkonfigurationen und Firewalls.
#3) Überprüfen Sie, ob die Testdaten eindeutig sind und alle Testdaten in die Lastumgebung kopiert wurden, bevor Sie einen Lasttest durchführen.
# 4) Entwerfen Sie die Testszenarien so, dass sie die Echtzeit-Benutzeraktion in der Produktion nachahmen.
# 5) Entwerfen Sie die Arbeitslast basierend auf den Produktionsbenutzerlasten und Geschäftsabläufen. Prüfen Sie im Fall einer alten Anwendung, ob es sich um ein neues Gespräch mit dem Geschäftsteam über die Geschäftsabläufe und die Benutzerlast handelt.
# 6) Sammeln Sie alle wichtigen Messdaten wie Antwortzeit, Treffer pro Sekunde, Durchsatz, CPU, Speicher, Netzwerk und laufende Benutzer.
Empfohlenes Lesen => Liste der auf dem Markt verfügbaren Leistungstest-Tools zur Durchführung exklusiver Lasttests.
Fazit
In diesem Tutorial haben wir gelernt, wie Lasttests beim Leistungstest einer Anwendung eine wichtige Rolle spielen, wie es hilft, die Effizienz und Leistungsfähigkeit der Anwendung zu verstehen usw.
Wir haben auch erfahren, wie es hilfreich ist, vorherzusagen, ob für eine Anwendung zusätzliche Hardware, Software oder Optimierung erforderlich ist.
Fröhliches Lesen!!
Literatur-Empfehlungen
- Lasttests mit HP LoadRunner-Tutorials
- Alpha-Tests und Beta-Tests (eine vollständige Anleitung)
- Testhandbuch für die Sicherheit von Webanwendungen
- Stresstest-Leitfaden für Anfänger
- Leitfaden für Anfänger zum Testen der Penetration von Webanwendungen
- Ein vollständiger Leitfaden für nichtfunktionale Tests für Anfänger
- Vollständige Anleitung zum Erstellen von Verifikationstests (BVT-Tests)
- Leistungstests vs Lasttests vs Stresstests (Unterschied)