Leistungstest-Tutorial: Was ist, Typen, Metriken & Beispiel

Inhaltsverzeichnis:

Anonim

Leistungstest

Leistungstests sind Softwaretests, mit denen Geschwindigkeit, Reaktionszeit, Stabilität, Zuverlässigkeit, Skalierbarkeit und Ressourcennutzung einer Softwareanwendung unter bestimmten Arbeitslasten getestet werden. Der Hauptzweck von Leistungstests besteht darin, die Leistungsengpässe in der Softwareanwendung zu identifizieren und zu beseitigen. Es ist eine Teilmenge des Performance Engineering und wird auch als „Perf Testing“ bezeichnet.

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

  • Geschwindigkeit - Legt fest, ob die Anwendung schnell reagiert
  • Skalierbarkeit - Bestimmt die maximale Benutzerlast, die die Softwareanwendung verarbeiten kann.
  • Stabilität - Bestimmt, ob die Anwendung unter verschiedenen Belastungen stabil ist

In diesem Tutorial lernen Sie:

  • Was ist Leistungstest?
  • Warum Leistungstests durchführen?
  • Arten von Leistungstests
  • Häufige Leistungsprobleme
  • Leistungstestprozess
  • Metriken für Leistungstests: Überwachte Parameter
  • Beispiel für Leistungstestfälle
  • Leistungstest-Tools
  • FAQ

Warum Leistungstests durchführen?

Von einem Softwaresystem unterstützte Merkmale und Funktionen sind nicht das einzige Problem. Die Leistung einer Softwareanwendung wie Reaktionszeit, Zuverlässigkeit, Ressourcennutzung und Skalierbarkeit spielen eine Rolle. 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 in Bezug auf 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 Software unter folgenden Problemen leiden: langsame Ausführung bei gleichzeitiger Verwendung durch mehrere Benutzer, Inkonsistenzen zwischen verschiedenen Betriebssystemen und schlechte Benutzerfreundlichkeit.

Durch Leistungstests wird festgestellt, ob die Software die Anforderungen an Geschwindigkeit, Skalierbarkeit und Stabilität unter den erwarteten Workloads erfüllt. Anwendungen, die aufgrund nicht vorhandener oder schlechter Leistungstests mit schlechten Leistungskennzahlen auf den Markt gebracht werden, werden wahrscheinlich einen schlechten Ruf erlangen und die erwarteten Verkaufsziele nicht erreichen.

Außerdem sollten geschäftskritische Anwendungen wie Weltraumstartprogramme oder lebensrettende medizinische Geräte auf Leistung getestet werden, um sicherzustellen, dass sie über einen langen Zeitraum ohne Abweichungen ausgeführt werden.

Laut Dunn & Bradstreet haben 59% der Fortune 500-Unternehmen jede Woche geschätzte 1,6 Stunden Ausfallzeit. Wenn man bedenkt, 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 eine solche Organisation 896.000 US-Dollar pro Woche betragen, was mehr als 46 Millionen US-Dollar pro Jahr entspricht.

Nur eine 5-minütige Ausfallzeit von Google.com (19. August 13) kostet den Suchriesen schätzungsweise 545.000 US-Dollar.

Es wird geschätzt, dass Unternehmen aufgrund eines kürzlich aufgetretenen Ausfalls des Amazon Web Service einen Umsatzverlust von 1100 US-Dollar pro Sekunde verzeichneten.

Daher sind Leistungstests wichtig.

Arten von Leistungstests

  • Lasttest - Überprüft die Fähigkeit der Anwendung, unter erwarteten Benutzerlasten zu arbeiten. Ziel ist es, Leistungsengpässe zu identifizieren, bevor die Softwareanwendung live geschaltet wird.
  • Stresstest - beinhaltet das Testen einer Anwendung unter extremen Arbeitslasten, um festzustellen, wie sie mit hohem Datenverkehr oder Datenverarbeitung umgeht. Ziel ist es, die Bruchstelle einer Anwendung zu identifizieren.
  • Dauertests - werden durchgeführt, um sicherzustellen, dass die Software die erwartete Last über einen langen Zeitraum hinweg bewältigen kann.
  • Spike-Test - Testet die Reaktion der Software auf plötzliche große Spitzen in der von Benutzern erzeugten Last.
  • Volumentest - Unter Volumentest groß Nr. von. Die Daten werden in einer Datenbank gespeichert und das Verhalten des gesamten Softwaresystems wird überwacht. Ziel ist es, die Leistung der Softwareanwendung unter verschiedenen Datenbankvolumina zu überprüfen.
  • Skalierbarkeitstests - Das Ziel von Skalierbarkeitstests besteht darin, die Effektivität der Softwareanwendung beim "Skalieren" zu bestimmen, um eine Erhöhung der Benutzerlast zu unterstützen. Es hilft bei der Planung der Kapazitätserweiterung Ihres Softwaresystems.

Häufige Leistungsprobleme

Die meisten Leistungsprobleme betreffen Geschwindigkeit, Reaktionszeit, Ladezeit und schlechte Skalierbarkeit. Geschwindigkeit ist oft eines der wichtigsten Attribute einer Anwendung. Eine langsam laufende Anwendung verliert potenzielle Benutzer. Leistungstests werden durchgeführt, um sicherzustellen, dass eine App schnell genug ausgeführt wird, um die Aufmerksamkeit und das Interesse eines Benutzers aufrechtzuerhalten. Sehen Sie sich die folgende Liste häufig auftretender Leistungsprobleme an und stellen Sie fest, dass Geschwindigkeit in vielen Fällen ein häufiger Faktor ist:

  • Lange Ladezeit - Die Ladezeit ist normalerweise die Anfangszeit, die eine Anwendung zum Starten benötigt. Dies sollte generell 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 einigen Sekunden gehalten werden.
  • Schlechte Antwortzeit - Die Antwortzeit ist die Zeit, die ein Benutzer benötigt, um Daten in die Anwendung einzugeben, bis die Anwendung eine Antwort auf diese Eingabe ausgibt. Im Allgemeinen sollte dies sehr schnell gehen. Wenn ein Benutzer zu lange warten muss, verliert er das Interesse.
  • Schlechte Skalierbarkeit - Ein Softwareprodukt leidet unter einer schlechten Skalierbarkeit, wenn es die erwartete Anzahl von Benutzern nicht verarbeiten kann oder wenn es nicht genügend Benutzer anpasst. Lasttests sollten durchgeführt werden, um sicherzustellen, dass die Anwendung die erwartete Anzahl von Benutzern verarbeiten kann.
  • Engpässe - Engpässe sind Hindernisse in einem System, die die Gesamtsystemleistung beeinträchtigen. Ein Engpass liegt vor, wenn entweder Codierungsfehler oder Hardwareprobleme unter bestimmten Belastungen zu einer Verringerung 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. Einige häufige Leistungsengpässe sind
    • CPU-Auslastung
    • Speicherauslastung
    • Netzwerkauslastung
    • Einschränkungen des Betriebssystems
    • Festplattennutzung

Leistungstestprozess

Die für Leistungstests angewandte Methodik kann stark variieren, das Ziel für Leistungstests bleibt jedoch dasselbe. Dies kann zeigen, dass Ihr Softwaresystem bestimmte vordefinierte Leistungskriterien erfüllt. Oder es kann helfen, die Leistung von zwei Softwaresystemen zu vergleichen. Es kann auch dabei helfen, Teile Ihres Softwaresystems zu identifizieren, die die Leistung beeinträchtigen.

Im Folgenden finden Sie einen allgemeinen Prozess zum Durchführen von Leistungstests

  1. Identifizieren Sie Ihre Testumgebung - Kennen Sie Ihre physische Testumgebung, Produktionsumgebung und die verfügbaren Testtools. Informieren Sie sich über Details der Hardware-, Software- und Netzwerkkonfigurationen, die während des Tests verwendet werden, bevor Sie mit dem Testprozess beginnen. Es wird Testern helfen, effizientere Tests zu erstellen. Es hilft auch dabei, mögliche Herausforderungen zu identifizieren, denen Tester während der Leistungstestverfahren begegnen können.
  2. Identifizieren der Leistungsakzeptanzkriterien - Dies umfasst Ziele und Einschränkungen für Durchsatz, Antwortzeiten und Ressourcenzuweisung. 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 nicht genügend verschiedene Leistungsbenchmarks enthalten. Manchmal kann es überhaupt keine geben. Wenn möglich, ist das Finden einer ähnlichen Anwendung zum Vergleichen eine gute Möglichkeit, Leistungsziele festzulegen.
  3. Planen und Entwerfen von Leistungstests - Bestimmen Sie, wie wahrscheinlich die Nutzung zwischen den Endbenutzern variiert, und identifizieren Sie Schlüsselszenarien, die für alle möglichen Anwendungsfälle getestet werden sollen. Es ist erforderlich, eine Vielzahl von Endbenutzern zu simulieren, Leistungstestdaten zu planen und zu skizzieren, welche Metriken erfasst werden.
  4. Konfigurieren der Testumgebung - Bereiten Sie die Testumgebung vor der Ausführung vor. Ordnen Sie auch Tools und andere Ressourcen an.
  5. Testdesign implementieren - Erstellen Sie die Leistungstests gemäß Ihrem Testdesign.
  6. Führen Sie die Tests aus - Führen Sie die Tests aus und überwachen Sie sie.
  7. Analysieren, optimieren und erneut testen - Konsolidieren, analysieren und teilen Sie Testergebnisse. Feineinstellung und erneutes Testen, um festzustellen, ob sich die Leistung verbessert oder verringert. Da Verbesserungen im Allgemeinen mit jedem erneuten Test kleiner werden, hören Sie auf, wenn die CPU einen Engpass verursacht. Dann haben Sie möglicherweise die Möglichkeit, die CPU-Leistung zu erhöhen.

Metriken für Leistungstests: Überwachte Parameter

Die grundlegenden Parameter, die während der Leistungstests überwacht werden, umfassen:

  • Prozessornutzung - Eine Zeit, die der Prozessor für die Ausführung von nicht inaktiven Threads benötigt.
  • Speichernutzung - Größe des physischen Speichers, der für Prozesse auf einem Computer verfügbar ist.
  • Festplattenzeit - Zeitspanne, in der die Festplatte beschäftigt ist, um eine Lese- oder Schreibanforderung auszuführen.
  • Bandbreite - Zeigt die von einer Netzwerkschnittstelle verwendeten Bits pro Sekunde an.
  • Private Bytes - Anzahl der von einem Prozess zugewiesenen Bytes, die nicht von anderen Prozessen gemeinsam genutzt werden können. Diese werden verwendet, um Speicherlecks und -nutzung zu messen.
  • Festgeschriebener Speicher - Menge des verwendeten virtuellen Speichers.
  • Speicherseiten / Sekunde - Anzahl der Seiten, die auf die Festplatte geschrieben oder von dieser gelesen werden, um Fehler bei harten Seiten zu beheben. Hardpage-Fehler treten auf, 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 der Durchschnitt. Anzahl der Hardware-Interrupts, die ein Prozessor pro Sekunde empfängt und verarbeitet.
  • Festplattenwarteschlangenlänge - ist der Durchschnitt. Nein. von Lese- und Schreibanforderungen, die während eines Abtastintervalls für die ausgewählte Festplatte in die Warteschlange gestellt wurden.
  • Länge der Netzwerkausgabewarteschlange - Länge der Ausgabepaketwarteschlange in Paketen. Mehr als zwei bedeuten, dass eine Verzögerung und ein Engpass gestoppt werden müssen.
  • Netzwerkbytes insgesamt pro Sekunde - Rate, welche Bytes auf der Schnittstelle gesendet und empfangen werden, einschließlich Rahmenzeichen.
  • Antwortzeit - Zeit von der Eingabe einer Anforderung durch einen Benutzer bis zum Empfang des ersten Zeichens der Antwort.
  • Durchsatzrate - Ein Computer oder ein Netzwerk empfängt Anforderungen pro Sekunde.
  • Anzahl der Verbindungspools - Die Anzahl der Benutzeranforderungen, die von gepoolten Verbindungen erfüllt werden. Je mehr Anforderungen von Verbindungen im Pool erfüllt werden, desto besser ist die Leistung.
  • Maximale Anzahl aktiver Sitzungen - Die maximale Anzahl von Sitzungen, die gleichzeitig aktiv sein können.
  • Trefferquoten - Dies hängt mit der Anzahl der SQL-Anweisungen zusammen, die von zwischengespeicherten Daten anstelle teurer E / A-Vorgänge verarbeitet werden. Dies ist ein guter Ausgangspunkt für die Lösung von Engpässen.
  • Treffer pro Sekunde - die Nr. Anzahl der Treffer auf einem 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
  • Thread-Anzahl - Der Zustand einer Anwendung kann anhand der Nr. Gemessen werden. von Threads, die ausgeführt werden und derzeit aktiv sind.
  • Speicherbereinigung - Dies hat mit der Rückgabe nicht verwendeten Speichers an das System zu tun. Die Speicherbereinigung muss auf Effizienz überwacht werden.

Beispiel für Leistungstestfälle

  • Stellen Sie sicher, dass die Antwortzeit nicht mehr als 4 Sekunden beträgt, wenn 1000 Benutzer gleichzeitig auf die Website zugreifen.
  • Stellen Sie sicher, dass die Antwortzeit der Anwendung unter Last innerhalb eines akzeptablen Bereichs liegt, wenn die Netzwerkverbindung langsam ist
  • Überprüfen Sie die maximale Anzahl von Benutzern, die die Anwendung verarbeiten kann, bevor sie abstürzt.
  • Überprüfen Sie die Ausführungszeit der Datenbank, wenn 500 Datensätze gleichzeitig gelesen / geschrieben werden.
  • Überprüfen Sie die CPU- und Speichernutzung der Anwendung und des Datenbankservers unter Spitzenlastbedingungen
  • Überprüfen Sie die Reaktionszeit der Anwendung unter Bedingungen mit niedriger, normaler, mittlerer und schwerer Last.

Während der tatsächlichen Durchführung des Leistungstests werden vage Begriffe wie akzeptabler Bereich, schwere Last usw. durch konkrete Zahlen ersetzt. Leistungsingenieure legen diese Zahlen gemäß den Geschäftsanforderungen und der technischen Landschaft der Anwendung fest.

Leistungstest-Tools

Auf dem Markt ist eine Vielzahl von Tools für Leistungstests erhältlich. Das Tool, das Sie zum Testen auswählen, hängt von vielen Faktoren ab, z. B. von den unterstützten Protokolltypen, den Lizenzkosten, den Hardwareanforderungen, der Plattformunterstützung usw. Nachfolgend finden Sie eine Liste der am häufigsten verwendeten Testtools.

  • LoadNinja - revolutioniert die Art und Weise, wie wir Tests laden. Mit diesem Cloud-basierten Lasttest-Tool können Teams umfassende Lasttests ohne komplexe dynamische Korrelation aufzeichnen und sofort wiedergeben und diese Lasttests in echten Browsern in großem Maßstab ausführen. Teams können die Testabdeckung erhöhen. & Verkürzung der Lasttestzeit um über 60%.
  • NeoLoad - ist die für DevOps entwickelte Plattform für Leistungstests, die sich nahtlos in Ihre vorhandene Continuous Delivery-Pipeline integriert. Mit NeoLoad testen Teams 10-mal schneller als mit herkömmlichen Tools, um die neuen Anforderungen über den gesamten Lebenszyklus der agilen Softwareentwicklung hinweg zu erfüllen - von der Komponente bis zum vollständigen systemweiten Auslastungstest.
  • HP LoadRunner - ist das derzeit beliebteste Leistungstest- Tool auf dem Markt. Dieses Tool ist in der Lage, Hunderttausende von Benutzern zu simulieren und Anwendungen unter realen Belastungen zu setzen, um ihr Verhalten unter erwarteten Belastungen zu bestimmen. Loadrunner verfügt über einen virtuellen Benutzergenerator, der die Aktionen von lebenden menschlichen Benutzern simuliert.
  • Jmeter - eines der führenden Tools für Lasttests von Web- und Anwendungsservern.

FAQ

Welche Anwendungen sollten wir auf Leistung testen?

Leistungstests werden immer nur für Client-Server-basierte Systeme durchgeführt. Dies bedeutet, dass für jede Anwendung, die keine Client-Server-basierte Architektur ist, keine Leistungstests erforderlich sind.

Beispielsweise ist Microsoft Calculator weder Client-Server-basiert noch führt es mehrere Benutzer aus. Daher ist es kein Kandidat für Leistungstests.

Was ist der Unterschied zwischen Leistungstests und Performance Engineering?

Es ist wichtig, den Unterschied zwischen Leistungstests und Leistungstechnik zu verstehen. Ein Verständnis wird unten geteilt:

Leistungstests sind eine Disziplin, die sich mit dem Testen und Berichten der aktuellen Leistung einer Softwareanwendung unter verschiedenen Parametern befasst.

Performance Engineering ist der Prozess, mit dem Software getestet und optimiert wird, um die erforderliche Leistung zu erzielen. Dieser Prozess zielt darauf ab, das wichtigste Merkmal der Anwendungsleistung, dh die Benutzererfahrung, zu optimieren.

In der Vergangenheit waren Testen und Optimieren deutlich voneinander getrennt und konkurrierten häufig miteinander. In den letzten Jahren haben jedoch mehrere Taschen von Testern und Entwicklern unabhängig voneinander zusammengearbeitet, um Tuning-Teams zu bilden. Da diese Teams erhebliche Erfolge erzielt haben, hat sich das Konzept der Kopplung von Leistungstests mit Leistungsoptimierung durchgesetzt, und jetzt nennen wir es Performance Engineering.

Fazit

In der Softwareentwicklung sind Leistungstests erforderlich, bevor ein Softwareprodukt vermarktet wird. Es stellt die Kundenzufriedenheit sicher und schützt die Investition eines Anlegers vor Produktversagen. Die Kosten für Leistungstests werden in der Regel durch eine verbesserte Kundenzufriedenheit, Loyalität und Kundenbindung mehr als wettgemacht.