Was sind Leistungstests?
Ein nicht-funktionales Testverfahren zur Bestimmung der Leistung von Software. So können wir die Geschwindigkeit, Reaktionszeit, Stabilität, Belastbarkeit und Ressourcennutzung der Anwendung unter verschiedenen Arbeitslasten testen. Es ist wichtig zu beachten, dass es sinnvoll ist, Leistungstests bereits in einer frühen Entwicklungsphase durchzuführen, da dies dazu beiträgt, Leistungsprobleme zu einem Zeitpunkt zu erkennen, zu dem sie leichter und zu geringeren Kosten behoben werden können.
Warum sind Leistungstests wichtig?
Im Grunde spart es Zeit und Geld. Wenn Sie schon früh in der Entwicklung mit Leistungstests beginnen - wenn die Anwendung in der Entwicklungsumgebung bereits stabil ist - können Sie potenzielle Zuverlässigkeitsprobleme früher erkennen.
Nach der Durchführung des Tests können wir aus den Berichten schließen, ob die Anwendung über ausreichende Ressourcen verfügt, um den vordefinierten KPI (Key Performance Indicator) zu erfüllen, oder ob sie Hardware-Upgrades oder eine Entwicklungsoptimierung benötigt.
Welche Arten von Leistungstests gibt es?
Leistungstests sind ein allgemeiner Begriff, es gibt viele Arten, aber die 3 häufigsten sind erwähnenswert.
- Belastungstest: Hier wird untersucht, wie sich das System bei normaler oder höherer Belastung verhält. Solche Belastungen können gleichzeitige Benutzerzahlen, Api-Aufrufe oder Datenbankoperationen usw. sein. Mögliche Engpässe werden bei diesem Testtyp sichtbar. Dies könnte z.B. die Kommunikation mit der Datenbank oder einem externen System sein oder ressourcenintensive Operationen aufgrund von Programmierfehlern oder Unaufmerksamkeiten.
- Stresstest: Mit diesem Test soll überprüft werden, wie das System reagiert, indem eine höhere als die normale Belastung auf das System ausgeübt wird. Die Belastung wird kontinuierlich erhöht, bis das System kollabiert. Dadurch sollen Anzeichen eines Systemzusammenbruchs erkannt, Erfahrungen für einen möglichen scharfen Zusammenbruch gesammelt und die Grenzen des in der Entwicklung befindlichen Systems kennengelernt werden.
- Einweich-Test: Dabei handelt es sich um eine Art Belastungstest, bei dem das System über einen längeren Zeitraum hinweg einer bestimmten Belastung ausgesetzt wird. Auf diese Weise können Sie feststellen, ob die Anwendung unter einer kontinuierlichen Last ordnungsgemäß funktioniert. Sie können auch mögliche Speicherlecks, einen Anstieg der Systemreaktionszeit oder eine Verschlechterung anderer Leistungskennzahlen beobachten.
Wie führt man einen Leistungstest durch?
Bevor Sie mit dem Testen eines Systems beginnen, müssen Sie eine Reihe von Fragen zur Testumgebung klären. Über welche Hardwareressourcen verfügt der Server? (An dieser Stelle sei erwähnt, dass eine valide Leistung in einer Testumgebung gemessen werden kann, die einer Live-Umgebung ähnlich ist). Wie viele Benutzer werden ihn nutzen? Wie wird der Zugriff erfolgen? Wie ist die Netzwerkverbindung zwischen den Komponenten? Und so könnte man weitermachen.
Sobald die Antworten auf die Fragen gefunden wurden, besteht der nächste Schritt vor dem Testen darin, die Ausstiegspunkte anhand von Leistungsindikatoren (KPIs) zu bestimmen, z. B. kann es gleichzeitig 4000 gleichzeitige Datenbankoperationen pro Sekunde durchführen.
Es ist auch wichtig, dass die Tester die Geschäftsprozesse der Anwendung kennen, um Testfälle für Leistungstests auswählen zu können.
Zum Testen benötigen wir verschiedene Werkzeuge, um Testfälle oder Benutzerinteraktionen zu simulieren. Die Palette der Tools umfasst sowohl lizenzierte als auch Open-Source-Software. Zur letzteren Gruppe gehören z. B. Jmeter, Grinder oder Heuschrecke.io.
Sobald alles vorbereitet ist, führen die Tester die Tests durch, überwachen die Testläufe und analysieren und bewerten sie schließlich. Die Erkennung von Fehlern in einem frühen Stadium des Software-Lebenszyklus kann die Kosten erheblich senken.