Lernen

Performancetests, Best Practices, Metriken und mehr

Autor:

Tricentis Staff

Various contributors

Datum: Jan. 04, 2024

Was steckt hinter Performancetests?

Bei Performancetests wird die Leistung eines Systems hinsichtlich Reaktionsfähigkeit und Stabilität unter einer bestimmten Arbeitslast bewertet. Solche Tests werden in der Regel durchgeführt, um Geschwindigkeit, Robustheit, Zuverlässigkeit und Anwendungsgröße zu untersuchen. Der Prozess umfasst Leistungsindikatoren wie:

  • Reaktionszeiten von Browser, Webseiten und Netzwerk
  • Verarbeitungszeiten von Serveranfragen
  • Gleichzeitige Benutzervolumina
  • Speicherverbrauch des Prozessors; Anzahl und Art der Fehler, die bei der App auftreten können

Warum sollten Sie die Leistung Ihres Systems testen?

Kurz gesagt geht es darum sicherzustellen, dass ein System im Live-Betrieb die erwarteten Serviceniveaus erfüllt und ein positives Benutzererlebnis bietet. Die Leistung einer Anwendung ist hierfür ein entscheidender Faktor für Akzeptanz, Erfolg und Produktivität.

Ein Problem in Sachen Leistung im Live-Betrieb zu beheben, kann teuer werden. Deshalb ist die Optimierung der Performanceteststrategie ein wesentlicher Bestandteil einer effektiven digitalen Strategie.

Bevor Sie jedoch mit dem Performancetestprozess beginnen, ist mit Blick auf die weitere Zukunft wichtig, über folgende Punkte nachzudenken:

Warum sind Systemperformancetests wichtig?

Performancetests stellen sicher, dass Ihre Software die erwarteten Serviceniveaus erfüllt und eine positive Benutzererfahrung bietet. Sie zeigen Ihnen, wo Sie Ihre Anwendung verbessern sollten, bevor sie diese ausrollen –insbesondere in Bezug auf Geschwindigkeit, Stabilität und Skalierbarkeit. Anwendungen, die ohne Tests live gehen, können unterschiedliche Probleme aufweisen, die zu einer – in manchen Fällen unwiderruflichen – Schädigung der Marke führen.

Akzeptanz, Erfolg und Produktivität einer Anwendung hängt damit auch von der ordnungsgemäßen Implementierung von Performancetests ab.

Wann ist der richtige Zeitpunkt, um Performancetests durchzuführen?

Ob für Web- oder mobile Anwendungen, der Lebenszyklus einer Anwendung umfasst zwei Phasen: Entwicklung und Bereitstellung. Und in beiden Phasen wird die Anwendung den Endusern der Produktarchitektur während Tests zur Verfügung gestellt.
Performancetests in der Entwicklung konzentrieren sich auf Komponenten einer Anwendung (Webservices, Microservices, APIs). Je früher diese getestet werden, desto früher kann eine Anomalie erkannt werden – und desto geringer sind in der Regel die Kosten für deren Behebung.

Wenn die Anwendung konkrete Gestalt annimmt, sollten die Performancetests umfangreicher werden. In einigen Fällen können sie auch während der Bereitstellung durchgeführt werden, beispielsweise wenn es schwierig oder teuer ist, eine Produktionsumgebung im Entwicklungslabor zu replizieren.

Welche verschiedenen Arten von Performancetests gibt es?

Es gibt viele verschiedene Arten von Leistungstests. Zu den wichtigsten gehören Last-, Unit-, Stress-, Soak- und Spike-Tests.

Lasttests

Lasttests simulieren die Anzahl der virtuellen Benutzer, die eine Anwendung nutzen könnten. Durch die Reproduktion realistischer Nutzungs- und Lastbedingungen auf der Grundlage von Antwortzeiten können sie helfen, potenzielle Engpässe zu ermitteln. Außerdem können Sie mithilfe von Lasttests feststellen, ob die Größe der Anwendungsarchitektur angepasst werden muss.

Unit-Tests

Unit-Tests simulieren die Transaktionsaktivität einzelner Funktionalitäten; Ziel ist es, diejenigen Transaktionen zu isolieren, die das System stören könnten.

Stresstests

Stresstests bewerten das Verhalten von Systemen, wenn diese Höchstlasten ausgesetzt sind. Bei diesen Tests wird die Anzahl der Nutzer während des Testzeitraums signifikant und kontinuierlich erhöht.

Soak-Tests

Soak-Tests erhöhen die Anzahl gleichzeitiger Benutzer und überwachen das Verhalten des Systems über einen längeren Zeitraum. Ziel ist es, zu beobachten, ob eine intensive und anhaltende Aktivität über einen längeren Zeitraum einen potenziellen Leistungsabfall zeigt, der die Ressourcen des Systems übermäßig beansprucht.

Spike-Tests

Das Ziel von Spike-Tests ist es, die Auswirkungen auf den Betrieb von Systemen zu verstehen, wenn das Aktivitätsniveau über dem Durchschnitt liegt. Im Gegensatz zu Stresstests berücksichtigen Spike-Tests die Anzahl der Benutzer und die Komplexität der durchgeführten Aktionen (daher auch die Zunahme mehrerer generierter Geschäftsprozesse).

Was messen Performancetests?

Mithilfe von Performancetests können verschiedene Erfolgsfaktoren wie Reaktionszeiten und die rasche Erkennung potenzieller Fehler analysiert werden. So lassen sich Engpässe, Bugs und Fehler sicher identifizieren – und Sie können schnell und sicher Entscheidungen treffen, wie Sie Ihre Anwendung optimieren. Die häufigsten Probleme, die bei Leistungstests aufgedeckt werden, beziehen sich dabei auf Geschwindigkeit, Reaktionszeiten, Ladezeiten und Skalierbarkeit.

Lange Ladezeiten

Die Ladezeit ist die Zeit, die zum Starten einer Anwendung benötigt wird. Jede Verzögerung sollte so kurz wie möglich sein – höchstens ein paar Sekunden, um das bestmögliche Benutzererlebnis zu bieten.

Lange Reaktionszeiten

Die Reaktionszeit ist die Zeit, die zwischen der Eingabe von Informationen durch einen Benutzer in eine Anwendung und der Reaktion auf diese Aktion vergeht. Lange Reaktionszeiten reduzieren das Interesse der Nutzer an der Anwendung deutlich.

Begrenzte Skalierbarkeit

Eine eingeschränkte Skalierbarkeit stellt ein Problem bei der Anpassungsfähigkeit einer Anwendung an unterschiedliche Benutzerzahlen dar. So beispielsweise kann eine Anwendung mit nur wenigen gleichzeitigen Benutzern gut funktionieren, während die Leistung jedoch mit zunehmender Benutzerzahl nachlässt.

Engpässe

Engpässe sind Hindernisse im System, die die Gesamtleistung einer Anwendung beeinträchtigen. Sie werden normalerweise durch Hardwareprobleme oder schlechten Code verursacht.

Wie laufen Performancetests ab?

Während die Testmethodik durchaus variieren kann, gibt es dennoch ein allgemeines Framework, das Sie anwenden können, um sicherzustellen, dass Sie mit den Performancetests das herausfinden, was Sie wollen – nämlich ob bei Ihrer Anwendung alles unter verschiedenen Umständen ordnungsgemäß funktioniert.

1 – Identifizieren Sie die Testumgebung

Bevor Sie mit dem Testprozess beginnen, ist es wichtig, die Details der Hardware-, Software- und Netzwerkkonfigurationen zu verstehen, die Sie verwenden werden. Umfassende Kenntnisse dieser Umgebung erleichtern die Identifizierung von Problemen, auf die Tester stoßen können.

2 – Leistungsakzeptanzkriterien identifizieren

Bevor Sie Tests durchführen, müssen Sie die Erfolgskriterien für Ihre Anwendung klar definieren, da diese nicht immer für jedes Projekt gleich sein werden. Wenn Sie Ihre Erfolgskriterien nicht ermitteln können, empfiehlt es sich, eine ähnliche Anwendung als Benchmark zu finden.

3 – Definieren Sie Planungs- und Performancetestszenarien

Um zuverlässige Tests durchführen zu können, muss ermittelt werden, wie verschiedene Benutzer Ihre Anwendung verwenden könnten. Um Tests so realitätsnah wie möglich durchführen zu können, ist die Identifizierung wichtiger Szenarien und Datenpunkte unerlässlich:

  1. Richten Sie die Testumgebung ein
  2. Erstellen Sie Ihr Testdesign
  3. Führen Sie Tests durch und überwachen Sie diese
  4. Analysieren Sie die Tests, passen Sie diese an und wiederholen Sie diese

Nachdem Sie Ihre Tests durchgeführt haben, müssen Sie die Ergebnisse analysieren und konsolidieren. Sobald die zur Behebung der Probleme erforderlichen Änderungen vorgenommen wurden, sollten die Tests wiederholt werden, um sicherzustellen, dass alle Probleme wirklich beseitigt wurden.

Was sind die Merkmale effektiver Performancetests?

Realistische Tests, die eine hinreichende Analysetiefe bieten, sind wesentliche Bestandteile „guter“ Performancetests. Es geht nicht nur darum, eine große Anzahl von Transaktionen zu simulieren, sondern auch darum, reale Benutzerszenarien vorwegzunehmen, die einen Einblick in die Leistung Ihres Produkts im Live-Betrieb geben.

Performancetests erzeugen riesige Datenmengen. Die besten Tests sind diejenigen, die eine schnelle und genaue Analyse ermöglichen, um alle Leistungsprobleme und deren Ursachen zu identifizieren.

Erfolgskennzahlen für Performancetests

Die kritischen Kennzahlen, die Ihre Tests anzeigen sollen, müssen klar definiert sein, bevor Sie mit dem Testen beginnen. Zu diesen Parametern gehören im Allgemeinen:

  • Die Zeit, die der Prozessor mit der Ausführung unproduktiver Threads verbringt.
  • Der physische Speicher eines Computers, der zur Verarbeitung genutzt wird.
  • Die Anzahl der von der Netzwerkschnittstelle verwendeten Bits pro Sekunde (Bandbreite)
  • Die Zeit, in der die Festplatte mit Lese-/Schreibanforderungen beschäftigt ist.
  • Die Anzahl der von einem Prozess verwendeten Bytes, die nicht mit anderen geteilt werden können (zur Messung von Speicherleaks)
  • Der virtuelle Speicher, der verwendet wird.
  • Die Anzahl der Seiten, die auf die Festplatte geschrieben oder gelesen werden, um Hardware-Seitenfehler zu beheben.
  • Die Gesamtverarbeitungsrate fehlerhafter Seiten durch den Prozessor.
  • Die durchschnittliche Anzahl von Hardware-Unterbrechungen, die der Prozessor pro Sekunde empfängt/verarbeitet.
  • Die durchschnittliche Lese-/Schreibanforderungen, die während eines Stichprobenintervalls für die ausgewählte Festplatte in die Warteschlange gestellt wurden.
  • Die Länge der Warteschlange von Output-Paketen
  • Die Gesamtzahl der von der Schnittstelle pro Sekunde gesendeten/empfangenen Bytes
  • Die Reaktionszeit
  • Die Rate, mit der ein Computer/Netzwerk Anfragen pro Sekunde empfängt.
  • Die Anzahl der Benutzeranfragen, die durch gepoolte Verbindungen erfüllt werden.
  • Die maximale Anzahl an Sitzungen, die gleichzeitig aktiv sein können.
  • Die Anzahl der SQL-Anweisungen, die von Cache-Daten anstelle von teuren I/O-Operations verarbeitet werden.
  • Die Anzahl der Zugriffsanfragen auf eine Datei auf einem Webserver pro Sekunde
  • Die Datenmenge, die jederzeit wiederhergestellt werden kann.
  • Die Sperrqualität von Tabellen und Datenbanken
  • Maximale Wartezeiten
  • Die Anzahl der aktuell laufenden/aktiven Threads
  • Die Rücklaufquote des ungenutzten Speichers im System (Garbage Collector)

Agile Entwicklungsmethoden und DevOps- Prozesspraktiken verlangen, dass Performancetests selbst bei immer schnellerer Geschwindigkeit zuverlässig bleiben – sowohl in den Entwicklungs- als auch den Test- und Produktionszyklen. Um Schritt zu halten, setzen Unternehmen auf Automatisierung, und viele entscheiden sich für NeoLoad – das schnellste und am meisten automatisierte Performancetesttool zum Designen, Filtern und Analysieren von Testdaten.

Warum sollte ich Performancetests automatisieren? Für mehr Agilität!

Die digitale Transformation zwingt Unternehmen dazu, das Tempo bei der Entwicklung neuer Services, Anwendungen und Funktionen zu beschleunigen, in der Hoffnung, einen Wettbewerbsvorteil zu erlangen bzw. diesen aufrechtzuerhalten. Agile Entwicklungsmethoden können hier helfen.

Trotz der Einführung von Continuous Integration in Agile- und DevOps-Umgebungen sind Performancetests in der Regel ein manueller Prozess. Das Ziel jedes Leistungstesters besteht darin, die Entstehung von Engpässen im agilen Entwicklungsprozess zu verhindern. Um dies zu vermeiden, kann es hilfreich sein, möglichst viel Automatisierung in den Performancetestprozess zu integrieren. Dazu ist es notwendig, Tests im Rahmen der Continuous Integration automatisch durchzuführen und Design- und Wartungsaufgaben zu automatisieren, wo dies möglich ist.

Beim Komponententest ist eine vollständige Automatisierung von Performancetests möglich. Allerdings empfiehlt sich immer noch menschliches Zutun. So sollten Performance-Ingenieure anspruchsvolle Tests an zusammengesetzten Anwendungen durchführen. Die Zukunft von Performancetests liegt in der Automatisierung von Tests in allen Phasen des Anwendungslebenszyklus.

Wie automatisiere ich Performancetests mit NeoLoad?

NeoLoad ist eine Performancetestplattform zur Automatisierung des Designs, der Ausführung, der Aktualisierung sowie der Analyse von Testaufgaben.

Design

Beim Entwerfen von Performancetests automatisiert NeoLoad Korrelations- und Randomisierungsaufgaben, sodass Sie Tests zehnmal schneller als mit anderen Tools erstellen können. Außerdem können Sie vorhandene funktionale Selenium-Testskripte zur Verwendung für Leistungstests importieren.

Ausführung

Um Continuous Integration zu erreichen, lässt sich NeoLoad über ein API-Tool mit allen führenden CI-Servern wie Jenkins, Bamboo oder TeamCity integrieren. An dieser Stelle sind benutzerdefinierte Integrationen mit verschiedenen Tools in der kontinuierlichen Bereitstellungskette möglich.

Aktualisierung

Eine der größten Herausforderungen für Performance-Ingenieure besteht darin, Testfälle zu aktualisieren, wenn sich die Anwendung ändert. Dies gilt insbesondere beim Testen zusammengesetzter Anwendungen. NeoLoad bietet eine nahezu vollständig automatische Aktualisierungsfunktion für Szenarien, die im Lasttest-Tool erstellt wurden. Für aus Selenium importierte Situationen ist dies vollständig gegeben.

Analyse

Am schwierigsten zu automatisieren, insbesondere bei vollständigen Tests, ist die Analysephase bei zusammengesetzten Anwendungen, da Performanceprobleme hier auf unterschiedliche Faktoren zurückzuführen sein können. Um die Ursache zu identifizieren, ist oft menschliches Eingreifen erforderlich. NeoLoad bietet eine breite Palette an Performancetestfunktionen, die Ihnen helfen, die Ursachen solcher Probleme schnell und genau zu identifizieren, indem Sie kritische Daten isolieren.

Es ist jetzt möglich, einen Großteil der Analyse in einer agilen Umgebung zu automatisieren. Mit NeoLoad können Sie erwartete Service Levels (SLAs) definieren, die verwendet werden, um einem Test einen Pass/Fail-Status zuzuweisen. Diese Zuweisung kann vollständig automatisiert werden, um eine Automatisierung über den gesamten Leistungstestzyklus mit einem CI-Server zu ermöglichen. Beispielsweise kann ein agiles Team automatisierte Performancetests ohne Regression planen, die über Nacht ausgeführt werden. Der Vergleich zwischen den Ergebnissen der erwarteten Service-Level-Performancetests und den Testergebnissen der Vorgängerversion wird automatisch durchgeführt, sodass der automatische Integrationsprozess fortgesetzt werden kann, wenn der Test erfolgreich ist.

Kollaboratives Performance Engineering für das DevOps Mindset

Um den Anforderungen an Agilität und schnelleren Release-Zyklen gerecht zu werden, implementieren IT-Abteilungen DevOps– Strukturen. Diese Arbeitsweise eignet sich besonders für das Performance Engineering, da sie eine Performancevalidierung von den frühen Phasen des Entwicklungszyklus bis hin zum Live-Betrieb einer Anwendung ermöglicht.

NeoLoad unterstützt DevOps-Organisationen, bei denen Performance in der Verantwortung des gesamten Teams und nicht nur einiger weniger Spezialisten ist. Und zwar mit einer kollaborativen Plattform namens NeoLoad Web. Diese ist für Entwicklungs-, Qualitätssicherungs- und Betriebsteams gleichermaßen zugänglich, um DevOps in DevTestOps umzuwandeln.

Möchten Sie mehr erfahren? Lesen Sie unseren Artikel darüber, wie man das richtige Lasttest-Tool für sich wählt (En).

Author:

Tricentis Staff

Various contributors

Datum: Jan. 04, 2024