Tutorial zum Leistungstest

Load Testing

Was ist Leistungstest?

Performance Testing ist ein Softwaretestprozess, der zum Testen der Geschwindigkeit, Reaktionszeit, Stabilität, Zuverlässigkeit, Skalierbarkeit und Ressourcennutzung einer Softwareanwendung unter einer bestimmten Arbeitslast verwendet wird. Der Hauptzweck von Leistungstests besteht darin, Leistungsengpässe in der Softwareanwendung zu identifizieren und zu beseitigen. Es ist eine Teilmenge des Performance Engineering und wird auch als bezeichnet „Perf-Tests“.

Der Schwerpunkt des Leistungstests liegt auf der Überprüfung eines Softwareprogramms

  • Schnelligkeit – Bestimmt, ob die Anwendung schnell reagiert
  • Skalierbarkeit – Bestimmt die maximale Benutzerlast, die die Softwareanwendung bewältigen kann.
  • Stabilität – Bestimmt, ob die Anwendung unter wechselnden Lasten stabil ist

Warum Leistungstests durchführen?

Die von einem Softwaresystem unterstützten Merkmale und Funktionen sind nicht das einzige Problem. Die Leistung einer Softwareanwendung wie Reaktionszeit, Zuverlässigkeit, Ressourcennutzung und Skalierbarkeit ist von Bedeutung. Das Ziel von Leistungstests besteht nicht darin, Fehler zu finden, sondern Leistungsengpässe zu beseitigen.

Leistungstests werden durchgeführt, um Stakeholdern Informationen über ihre Anwendung hinsichtlich Geschwindigkeit, Stabilität und Skalierbarkeit bereitzustellen. Noch wichtiger ist, dass Leistungstests aufdecken, was verbessert werden muss, bevor das Produkt auf den Markt kommt. Ohne Leistungstests kann die Software unter folgenden Problemen leiden: Sie läuft langsam, während mehrere Benutzer sie gleichzeitig verwendenneoNormalerweise gibt es Inkonsistenzen zwischen verschiedenen operating-Systeme und schlechte Benutzerfreundlichkeit.

Performance Testing

Mithilfe von Leistungstests wird ermittelt, ob die Software die Geschwindigkeits-, Skalierbarkeits- und Stabilitätsanforderungen unter den erwarteten Arbeitslasten erfüllt. Anwendungen, die aufgrund nicht vorhandener oder schlechter Leistungstests mit schlechten Leistungsmetriken auf den Markt gebracht werden, werden wahrscheinlich einen schlechten Ruf erlangen und die erwarteten Verkaufsziele nicht erreichen.

Ebenfalls, geschäftskritische Anwendungen B. Weltraumstartprogramme oder lebensrettende medizinische Geräte, sollten auf ihre Leistung getestet werden, um sicherzustellen, dass sie über einen langen Zeitraum ohne Abweichungen funktionieren.

Laut Dunn & Bradstreet erleben 59 % der Fortune-500-Unternehmen schätzungsweise 1.6 hours jede Woche Ausfallzeit. Wenn man davon ausgeht, dass ein durchschnittliches Fortune-500-Unternehmen mit mindestens 10,000 Mitarbeitern 56 US-Dollar pro Stunde zahlt, würde der Arbeitsanteil der Ausfallkosten für ein solches Unternehmen 896,000 US-Dollar pro Woche betragen, was mehr als 46 Millionen US-Dollar pro Jahr entspricht.

Nur ein 5 Minuten Ausfallzeit von Google.com (19) wird den Suchriesen schätzungsweise so viel kosten $ 545,000.

Es wird geschätzt, dass Unternehmen Umsatzeinbußen hinnehmen mussten 1100 USD pro Sekunde aufgrund eines kürzlich erfolgten Amazon Ausfall des Webdienstes.

Daher sind Leistungstests wichtig. Um Ihnen bei diesem Prozess zu helfen, sehen Sie sich diese Liste an Leistungstest-Tools.

Arten von Leistungstests

Es gibt PrimariBeim Softwaretest gibt es sechs Arten von Leistungstests, die im Folgenden erläutert werden.
  • Belastungstest – Überprüft die Fähigkeit der Anwendung, unter der erwarteten Benutzerlast zu funktionieren. Ziel ist es, Leistungsengpässe zu identifizieren, bevor die Softwareanwendung live geht.
  • Belastbarkeitstest - Dabei wird eine Anwendung unter extremer Arbeitslast getestet, um zu sehen, wie sie mit hohem Datenverkehr oder hoher Datenverarbeitung umgeht. Das Ziel besteht darin, den Bruchpunkt einer Anwendung zu identifizieren.
  • Dauertest – wird durchgeführt, um sicherzustellen, dass die Software die erwartete Last über einen langen Zeitraum bewältigen kann.
  • Spike-Test – testet die Reaktion der Software auf plötzliche große Lastspitzen, die von Benutzern erzeugt werden.
  • Volumentest – Unter Volumentest große Nr. von. Die Daten werden in eine Datenbank eingetragen und das Verhalten des gesamten Softwaresystems überwacht. Ziel ist es, die Leistung von Softwareanwendungen bei unterschiedlichen Datenbankvolumina zu überprüfen.
  • Skalierbarkeitstests – Das Ziel des Skalierbarkeitstests besteht darin, die Wirksamkeit der Softwareanwendung bei der „Skalierung“ zur Unterstützung einer erhöhten Benutzerlast zu bestimmen. Es hilft bei der Planung der Kapazitätserweiterung Ihres Softwaresystems.

Häufige Leistungsprobleme

Die meisten Leistungsprobleme hängen mit Geschwindigkeit, Reaktionszeit, Ladezeit und schlechter Skalierbarkeit zusammen. Geschwindigkeit ist oft eines der wichtigsten Attribute einer Anwendung. Eine langsam laufende Anwendung wird potenzielle Benutzer verlieren. Leistungstests stellen sicher, dass eine App schnell genug ausgeführt wird, um die Aufmerksamkeit und das Interesse eines Benutzers aufrechtzuerhalten. Schauen Sie sich das Folgende anwing Liste häufiger Leistungsprobleme und beachten Sie, dass die Geschwindigkeit bei vielen von ihnen ein gemeinsamer Faktor ist:

  • Lange Ladezeit – Die Ladezeit ist normalerweise die Zeit, die eine Anwendung zum Starten benötigt. Dies sollte grundsätzlich auf ein Minimum beschränkt werden. Während einige Anwendungen nicht in weniger als einer Minute geladen werden können, sollte die Ladezeit nach Möglichkeit unter ein paar Sekunden gehalten werden.
  • Schlechte Reaktionszeit – Die Antwortzeit ist die Zeit, die von der Dateneingabe eines Benutzers in die Anwendung bis zur Ausgabe einer Antwort auf diese Eingabe durch die Anwendung vergeht. Im Allgemeinen sollte dies sehr schnell gehen. Auch hier verliert ein Benutzer das Interesse, wenn er zu lange warten muss.
  • Schlechte Skalierbarkeit – Ein Softwareprodukt leidet unter schlechter Skalierbarkeit, wenn es die erwartete Anzahl von Benutzern nicht verarbeiten kann oder wenn es nicht einem ausreichend breiten Benutzerspektrum gerecht wird. Load Testing Dies sollte durchgeführt werden, um sicherzustellen, dass die Anwendung die erwartete Anzahl von Benutzern verarbeiten kann.
  • Engpass – Engpässe sind Hindernisse in einem System, die die Gesamtleistung des Systems beeinträchtigen. Von einem Engpass spricht man, wenn entweder Codierungsfehler oder Hardwareprobleme unter bestimmten Lasten zu einem Rückgang des Durchsatzes führen. Engpässe werden häufig durch einen fehlerhaften Codeabschnitt verursacht. Der Schlüssel zur Behebung eines Engpassproblems besteht darin, den Codeabschnitt zu finden, der die Verlangsamung verursacht, und zu versuchen, ihn dort zu beheben. Engpässe werden im Allgemeinen behoben, indem entweder schlecht laufende Prozesse behoben oder zusätzliche Hardware hinzugefügt werden. Manche häufige Leistungsengpässe sind
    • CPU-Auslastung
    • Speicherauslastung
    • Netzwerkauslastung
    • Operating Systemeinschränkungen
    • Festplattennutzung

So führen Sie Leistungstests durch

Die für Leistungstests verwendete Methodik kann stark variieren, das Ziel der Leistungstests bleibt jedoch dasselbe. Es kann dabei helfen, nachzuweisen, dass Ihr Softwaresystem bestimmte vordefinierte Leistungskriterien erfüllt. Oder es kann helfen, die Leistung zweier Softwaresysteme zu vergleichen. Es kann auch dabei helfen, Teile Ihres Softwaresystems zu identifizieren, die dessen Leistung beeinträchtigen.

Nachfolgend finden Sie einen allgemeinen Prozess zur Durchführung von Leistungstests

Leistungstestprozess
Leistungstestprozess

Schritt 1) ​​Identifizieren Sie Ihre Testumgebung

Kennen Sie Ihre physische Testumgebung, Produktionsumgebung und welche Testtools verfügbar sind. Verstehe details Informieren Sie sich über die während des Tests verwendeten Hardware-, Software- und Netzwerkkonfigurationen, bevor Sie mit dem Testprozess beginnen. Es wird Testern helfen, effizientere Tests zu erstellen. Es hilft auch dabei, mögliche Herausforderungen zu erkennen, denen Tester während der Leistungstestverfahren begegnen können.

Schritt 2) Identifizieren Sie die Leistungsakzeptanzkriterien

Dazu gehören Ziele und Einschränkungen für Durchsatz, Reaktionszeiten und Ressourcenzuteilung. Es ist auch notwendig, Projekterfolgskriterien außerhalb dieser Ziele und Einschränkungen zu identifizieren. Tester sollten befugt sein, Leistungskriterien und -ziele festzulegen, da die Projektspezifikationen häufig keine ausreichend große Auswahl an Leistungsbenchmarks enthalten. Manchmal kann es sein, dass es überhaupt keine gibt. Wenn möglich, ist die Suche nach einer ähnlichen Anwendung als Vergleich eine gute Möglichkeit, Leistungsziele festzulegen.

Schritt 3) Leistungstests planen und entwerfen

Bestimmen Sie, wie sich die Nutzung voraussichtlich zwischen den Endbenutzern unterscheiden wird, und identifizieren Sie Schlüsselszenarien, die für alle möglichen Anwendungsfälle getestet werden sollen. Es ist notwendig, eine Vielzahl von Endbenutzern zu simulieren, Leistungstestdaten zu planen und zu skizzieren, welche Metriken erfasst werden.

Schritt 4) Konfigurieren der Testumgebung

Bereiten Sie die Testumgebung vor der Ausführung vor. Ordnen Sie außerdem Werkzeuge und andere Ressourcen an.

Schritt 5) Testdesign implementieren

Erstellen Sie die Leistungstests entsprechend Ihrem Testdesign.

Schritt 6) Führen Sie die Tests durch

Führen Sie die Tests durch und überwachen Sie sie.

Schritt 7) Analysieren, optimieren und erneut testen

Konsolidieren, analysieren und teilen Sie Testergebnisse. Nehmen Sie dann eine Feinabstimmung vor und testen Sie erneut, um festzustellen, ob sich die Leistung verbessert oder verringert. Da die Verbesserungen im Allgemeinen mit jedem erneuten Test geringer werden, sollten Sie aufhören, wenn ein Engpass durch die CPU verursacht wird. Dann haben Sie möglicherweise die Möglichkeit, die CPU-Leistung zu erhöhen.

Leistungstestmetriken: Überwachte Parameter

Zu den grundlegenden Parametern, die während des Leistungstests überwacht werden, gehören:

Leistungstestmetriken

  • Prozessornutzung – eine Menge Zeit, die der Prozessor mit der Ausführung nichtidle Threads.
  • Speichernutzung – Menge an physischem Speicher, der für Prozesse auf einem Computer verfügbar ist.
  • Festplattenzeit – Zeitspanne, die die Festplatte mit der Ausführung einer Lese- oder Schreibanforderung beschäftigt ist.
  • Bandbreite - zeigt die Bits pro Sekunde an, die von einer Netzwerkschnittstelle verwendet werden.
  • Private Bytes – Anzahl der Bytes, die ein Prozess zugewiesen hat und die nicht von anderen Prozessen gemeinsam genutzt werden können. Diese werden verwendet, um Speicherlecks und -nutzung zu messen.
  • Engagiertes Gedächtnis – Menge des verwendeten virtuellen Speichers.
  • Speicherseiten/Sekunde – Anzahl der Seiten, die auf die Festplatte geschrieben oder von ihr gelesen werden, um Hardpage-Fehler zu beheben. Von Hardpage-Fehlern spricht man, wenn Code, der nicht aus dem aktuellen Arbeitssatz stammt, von einer anderen Stelle aufgerufen und von einer Festplatte abgerufen wird.
  • Seitenfehler/Sekunde – die Gesamtrate, mit der Fehlerseiten vom Prozessor verarbeitet werden. Dies tritt erneut auf, wenn ein Prozess Code von außerhalb seines Arbeitssatzes benötigt.
  • CPU-Interrupts pro Sekunde – lernen muss die avg. Anzahl der Hardware-Interrupts, die ein Prozessor pro Sekunde empfängt und verarbeitet.
  • Länge der Festplattenwarteschlange – lernen muss die avg. NEIN. der Lese- und Schreibanforderungen, die während eines Stichprobenintervalls für die ausgewählte Festplatte in der Warteschlange standen.
  • Länge der Netzwerkausgabewarteschlange – Länge der Ausgabepaketwarteschlange in Paketen. Alles über zwei bedeutet eine Verzögerung und Engpässe müssen gestoppt werden.
  • Netzwerkbytes insgesamt pro Sekunde – Rate, welche Bytes auf der Schnittstelle gesendet und empfangen werden, einschließlich Rahmenzeichen.
  • Reaktionszeit - Zeit von der Eingabe einer Anfrage durch einen Benutzer bis zum Empfang des ersten Zeichens der Antwort.
  • Durchsatz – Rate, mit der ein Computer oder ein Netzwerk pro Sekunde Anfragen erhält.
  • Umfang der Verbindung pooling - die Anzahl der Benutzeranforderungen, die von gepoolten Verbindungen erfüllt werden. Je mehr Anfragen von Verbindungen im Pool erfüllt werden, desto besser ist die Leistung.
  • Maximale aktive Sitzungen – die maximale Anzahl von Sitzungen, die gleichzeitig aktiv sein können.
  • Trefferquoten – Das hängt mit der Anzahl zusammen SQL Anweisungen, die durch zwischengespeicherte Daten statt durch teure E/A verarbeitet werden operationen. Dies ist ein guter Ausgangspunkt für die Lösung von Engpässen.
  • Treffer pro Sekunde – Das Nein. der Zugriffe auf einen Webserver während jeder Sekunde eines Auslastungstests.
  • Rollback-Segment – die Datenmenge, die zu jedem Zeitpunkt zurückgesetzt werden kann.
  • Datenbanksperren – Das Sperren von Tabellen und Datenbanken muss überwacht und sorgfältig abgestimmt werden.
  • Top Wartezeiten – werden überwacht, um festzustellen, welche Wartezeiten verkürzt werden können, wenn es darum geht, wie schnell Daten aus dem Speicher abgerufen werden
  • Fadenzahlen – Der Zustand einer Anwendung kann anhand der Anzahl gemessen werden. Anzahl der laufenden und derzeit aktiven Threads.
  • Müllabfuhr – Dabei geht es darum, ungenutzten Speicher an das System zurückzugeben. Müllabfuhr muss auf Effizienz überwacht werden.

Beispiel für Leistungstest-Testfälle

  • Testfall 01: Stellen Sie sicher, dass die Antwortzeit nicht mehr als 4 Sekunden beträgt, wenn 1000 Benutzer gleichzeitig auf die Website zugreifenneogewöhnlich.
  • Testfall 02: Stellen Sie sicher, dass die Reaktionszeit der Anwendung unter Last bei langsamer Netzwerkverbindung in einem akzeptablen Bereich liegt
  • Testfall 03: Überprüfen Sie die maximale Anzahl von Benutzern, die die Anwendung verarbeiten kann, bevor sie abstürzt.
  • Testfall 04: Überprüfen Sie die Ausführungszeit der Datenbank, wenn 500 Datensätze gleichzeitig gelesen/geschrieben werdenneogewöhnlich.
  • Testfall 05: Überprüfen Sie die CPU- und Speicherauslastung der Anwendung und des Datenbankservers unter Spitzenlastbedingungen
  • Testfall 06: Überprüfen Sie die Reaktionszeit der Anwendung unter Bedingungen niedriger, normaler, mittlerer und hoher Last.

Bei der eigentlichen Durchführung des Leistungstests werden vage Begriffe wie akzeptabler Bereich, hohe Belastung usw. durch Beton ersetzt numbers. Leistungsingenieure legen diese fest numbers entsprechend den Geschäftsanforderungen und der technischen Landschaft der Anwendung.

Leistungstest-Tools

Auf dem Markt ist eine Vielzahl von Leistungstesttools erhältlich. Welches Tool Sie zum Testen auswählen, hängt von vielen Faktoren ab, z. B. den unterstützten Protokolltypen, Lizenzkosten, Hardwareanforderungen, Plattformunterstützung usw. Nachfolgend finden Sie eine Liste häufig verwendeter Testtools.

  • BlazeMeter – ist die einzige vollständige, kontinuierliche Testplattform auf dem Markt. Dieses leistungsstarke Leistungstesttool unterstützt zuverlässige Apps. Tester können erweiterte Funktionen wie Mock-Services, synthetische Testdaten sowie API-Tests und -Überwachung nutzen. Skalierbar auf bis zu 2 Millionen Benutzer.
  • HP LoadRunner - ist heute das beliebteste Leistungstesttool auf dem Markt. Dieses Tool ist in der Lage, Hunderttausende Benutzer zu simulieren und Anwendungen realen Belastungen auszusetzen, um ihr Verhalten unter erwarteten Belastungen zu bestimmen. Ladeläufer verfügt über einen virtuellen Benutzer generator die die Aktionen lebender menschlicher Benutzer simuliert.
  • Jmeter – eines der führenden Tools für Lasttests von Web- und Anwendungsservern.

FAQ

Leistungstests werden immer nur für Client-Server-basierte Systeme durchgeführt. Damit ist jede Anwendung gemeint, die nicht auf einem Client-Server basiert archiDie Struktur darf keine Leistungstests erfordern.

Zum Beispiel, Microsoft Der Rechner ist weder Client-Server-basiert noch läuft er für mehrere Benutzer. Daher ist es kein Kandidat für Leistungstests.

Leistungstest

Es ist wichtig, den Unterschied zwischen Leistungstests und Leistungstechnik zu verstehen. Im Folgenden wird ein Verständnis geteilt:

Performance Testing ist eine Disziplin, die sich mit beschäftigt Testen und Berichten die aktuelle Leistung einer Softwareanwendung unter verschiedenen Parametern.

Leistungstechnik ist der Prozess, bei dem Software getestet und optimiert wird, um die erforderliche Leistung zu erzielen. Dieser Prozess zielt darauf ab, das wichtigste Leistungsmerkmal der Anwendung, nämlich die Benutzererfahrung, zu optimieren.

Historisch gesehen waren Testen und Tuning deutlich getrennte und oft konkurrierende Bereiche. In den letzten Jahren haben jedoch mehrere Gruppen von Testern und Entwicklern unabhängig voneinander zusammengearbeitet, um Tuning-Teams zu bilden. Da diese Teams erhebliche Erfolge erzielten, hat sich das Konzept der Kopplung von Leistungstests und Leistungsoptimierung durchgesetzt, und wir nennen es jetzt Leistungstechnik.

Zusammenfassung

In Software EngineeringVor der Vermarktung eines Softwareprodukts sind Leistungstests erforderlich. Es stellt die Kundenzufriedenheit sicher und schützt die Investition eines Anlegers vor Produktausfällen. Die Kosten für Leistungstests werden in der Regel durch eine verbesserte Kundenzufriedenheit, -treue und -bindung mehr als wettgemacht.