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 den Beteiligten Informationen über ihre Anwendung in Bezug auf Geschwindigkeit, Stabilität und Skalierbarkeit zu liefern. Noch wichtiger ist, dass Leistungstests aufdecken, was verbessert werden muss, bevor das Produkt auf den Markt kommt. Ohne Leistungstests leidet die Software wahrscheinlich unter Problemen wie: Sie läuft langsam, wenn mehrere Benutzer sie gleichzeitig verwenden, es treten Inkonsistenzen zwischen verschiedenen Betriebssystemen auf und die Benutzerfreundlichkeit ist schlecht.

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 haben 59 % der Fortune 500-Unternehmen schätzungsweise 1.6 Stunden Ausfallzeit pro Woche. Wenn man bedenkt, dass ein durchschnittliches Fortune 500-Unternehmen mit mindestens 10,000 Mitarbeitern 56 US-Dollar pro Stunde zahlt, würden die Arbeitskosten für die Ausfallzeit eines solchen Unternehmens 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

Beim Softwaretesten gibt es im Wesentlichen 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 drehen sich um Geschwindigkeit, Reaktionszeit, Ladezeit und schlechte Skalierbarkeit. Geschwindigkeit ist oft eines der wichtigsten Attribute einer Anwendung. Eine langsam laufende Anwendung verliert potenzielle Benutzer. Leistungstests stellen sicher, dass eine App schnell genug läuft, um die Aufmerksamkeit und das Interesse eines Benutzers aufrechtzuerhalten. Werfen Sie einen Blick auf die folgende Liste häufiger Leistungsprobleme und beachten Sie, dass 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

Machen Sie sich mit Ihrer physischen Testumgebung und Produktionsumgebung vertraut und erfahren Sie, welche Testwerkzeuge verfügbar sind. Informieren Sie sich vor Beginn des Testvorgangs über die Details der während des Tests verwendeten Hardware-, Software- und Netzwerkkonfigurationen. So können Tester effizientere Tests erstellen. Außerdem können Sie so mögliche Herausforderungen erkennen, auf die Tester während der Leistungstests stoßen 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 – die Zeit, die der Prozessor mit der Ausführung nicht inaktiver Threads verbringt.
  • 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 – ist die durchschnittliche Anzahl der Hardware-Interrupts, die ein Prozessor pro Sekunde empfängt und verarbeitet.
  • Länge der Festplattenwarteschlange – ist die durchschnittliche Anzahl der Lese- und Schreibanforderungen, die während eines Stichprobenintervalls für die ausgewählte Festplatte in die Warteschlange gestellt wurden.
  • 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 des Verbindungspoolings – 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 von zwischengespeicherten Daten statt von teuren E/A-Operationen verarbeitet werden. Dies ist ein guter Ausgangspunkt zur Lösung von Engpassproblemen.
  • 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. Die Garbage Collection muss auf ihre Effizienz hin überwacht werden.

Beispiel für Leistungstest-Testfälle

  • Testfall 01: Stellen Sie sicher, dass die Reaktionszeit nicht mehr als 4 Sekunden beträgt, wenn 1000 Benutzer gleichzeitig auf die Website zugreifen.
  • 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 Datenbankausführungszeit, wenn 500 Datensätze gleichzeitig gelesen/geschrieben werden.
  • 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.

Während der eigentlichen Ausführung des Leistungstests werden vage Begriffe wie akzeptabler Bereich, hohe Belastung usw. durch konkrete Zahlen ersetzt. Leistungsingenieure legen diese Zahlen entsprechend den Geschäftsanforderungen und der technischen Landschaft der Anwendung fest.

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.

  • 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 Benutzergenerator, der die Aktionen echter 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. Das bedeutet, dass für Anwendungen, die keine Client-Server-Architektur haben, keine Leistungstests erforderlich sind.

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.

Fazit

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.