Last- und Performancetester

Grundlagen eines Testers

Nur, weil etwas richtig gemacht ist, heißt das noch nicht, dass es gut gemacht wurde. Mit solidem Wissen in den Bereichen Qualitätsmanagement, Qualitätssicherung, Softwaretest und Softwareentwicklung wirke ich als Lasttester in Kundenprojekten mit. Die Tiefe der benötigten Kenntnisse ist stark vom Projektkontext, dem System under Test (SUT) und den eingesetzten Testwerkzeugen abhängig.

...weiter lesen

Das Durchführen von Last- und Performancetests ist ein wichtiger Bereich in der Qualitätssicherung von Software. Es handelt sich um eine Disziplin, bei der die technischen und nicht die funktionalen Aspekte untersucht werden. Dies betrifft sowohl einzelne Anwendungen als auch komplexe Systeme mit vielen Komponenten. Betrachtet werden das Zeitverhalten (Performance) und das Ressourcenverhalten (Effizienz) des zu prüfenden Systems während seiner Nutzung. Hier wird ermittelt, wie schnell Ergebnisse auf eine Anfrage geliefert werden und in welchem Umfang Zeit und Betriebsmittel zur Erfüllung einer Aufgabe benötigt werden. Die Grundlage bilden festgelegte Konfigurationen und Szenarien, um Anwendungen unter spezifischen kontrollierten Bedingungen zu testen. Dies erfordert den Einsatz spezieller Werkzeuge, um alle relevanten Aspekte betrachten zu können. Je nach Entwicklungsstand des zu realisierenden Systems können auch frühzeitig schon aussagekräftige Ergebnisse ermittelt werden. Erkannte Probleme können so bereits kurz nach deren Entstehung behoben werden, bevor sie eine unerwünschte Grundlage für die späteren Stufen bilden. So ist es sinnvoll und richtig, eine bereits existierende Service-Schnittstelle zu untersuchen, bevor die darauf aufbauenden Komponenten, wie z.B. eine Anwendungsoberfläche, erstellt werden. Grundsätzlich gilt zwar, dass bei Planung und Realisierung einer Anwendung berücksichtigt wird, was das System leisten muss und was ein Anwender bei dessen Nutzung erwarten darf. Aber wenn die Realität anders aussieht, ist mit hohen Kosten zu rechnen.
Last- und Performancetest

Performance, Last, Stress, Skalierbarkeit und Ressourcenverbrauch – für jeden Aspekt wird ein spezifisches Testverfahren verwendet. Im Performancetest wird untersucht, wieviel Zeit ein System benötigt, um auf eine Anforderung zu reagieren. Dies geschieht unter einem niedrigen Bearbeitungsvolumen. Das Ergebnis ist sozusagen die Bestzeit unter optimalen Bedingungen. Anhand dieses Benchmarks können dann die Messwerte aus den anderen Testverfahren in Relation gesetzt werden. Ressourcenprobleme sollten hierbei noch keine Rolle spielen. Bei einem Lasttest wird das Testobjekt unter einer realistischen, zu erwartenden Auslastung untersucht. Dies ist der wichtigste nicht-funktionale Test, denn hier zeigt sich das Systemverhalten im Normalbetrieb. Zentrale Elemente sind hier das Nutzungsprofil und die daraus entwickelten Lastprofile, die den Mix und die Menge der verschiedenen, gleichzeitig zu bewältigenden Aufgaben definieren. In dem Service Level Agreement werden die Ziele festgelegt, die die Messwerte zu erfüllen haben. Wenn es darum geht, eine Aussage des Verhaltens bei Überlast zu treffen, wird der Stresstest eingesetzt. Dies ist die Erweiterung eines Lasttests, bei der die Grenzen gesucht werden. Man erkennt, wie sich das Systemverhalten mit steigender Last verändert und wann und bei welcher Komponente es zuerst zu Einschränkungen oder Ausfällen kommt. Qualitativ ähnliche Aussagen liefert der Skalierbarkeitstest. Er wird durchgeführt, um die Frage zu klären, welche zusätzlichen Ressourcen eingesetzt werden müssen, um zukünftige Erwartungen und wachsende Anforderungen erfüllen zu können. Dies ist wichtig für die Planung von Änderungen und Erweiterungen. Die Untersuchung des Ressourcenverbrauchs kann bei allen zuvor aufgeführten Testarten parallel durchgeführt werden. Spezielle Werkzeuge erheben zahlreiche Metriken und zeigen so ein detailliertes Bild über vorhandene, genutzte und noch freie Ressourcen. Diese Aufzählung ist nicht vollständig, gibt aber einen guten Überblick der wichtigsten einzusetzenden Testmethoden. So gibt es zum Beispiel für Geduldige noch den Dauerlast-Test und für Nervöse den Bounce-Test, die ebenfalls wichtige Testverfahren darstellen.

Video

Qualitätsmanagement

Aufgaben des Last- und Performancetesters

Zu den typischen Tätigkeiten als Lasttestexperte gehören Analyse, Entwurf, Realisierung, Ausführung und Auswertung von Last- und Performancetests. Zusätzlich unterstütze ich die Projektleitung und das Testmanagement bei der Planung von Testaufgaben und der Überwachung der Aktivitäten.

Bei der Planung werden Konzepte und Empfehlungen zu geeigneten Testverfahren und den hierbei zu verwendenden Werkzeugen entwickelt. Dabei werden die erforderlichen Aufwände für Zeit, Personal, Software und weitere Ressourcen abgeschätzt und der Projektleitung sowie dem Testmanagement zur Verfügung gestellt.

Im Rahmen der Analyse erfolgt die Betrachtung der Einzelheiten eines Testobjektes. Gemeinsam mit Stakeholdern werden Testumfang und Inhalte festgelegt sowie Bedingungen definiert, unter denen die Tests durchgeführt werden sollen. Dabei werden Aspekte wie Testdaten, Testumgebung, Funktionsumfang sowie erforderliche Quell- und Zielsysteme betrachtet. Die Basis hierzu bilden Anforderungs- und Entwurfsdokumente, existierende Systeme, Mengengerüste und weitere verfügbare Informationen. Auch die erforderliche Testinfrastruktur mit ihren Elementen wird definiert. Gegebenenfalls müssen hierfür die Details für die technische Realisierbarkeit in einem Proof-of-Concept evaluiert werden.

Beim Entwurf werden die konkreten Testfälle und Testszenarien ausführlich dokumentiert. Dies beinhaltet die erforderlichen Eingaben und die erwarteten Ausgaben, notwendige Konfigurationen und die zu verwendenden Daten. Es können Varianten vorgesehen werden, die basierend auf den geplanten Nutzungsprofilen verschiedene Lastszenarien darstellen. Die Eigenschaften der Testumgebung werden berücksichtigt, so dass sodass sichergestellt werden kann, die beabsichtigten Tests auch wirklich durchführen zu können. Dabei werden auch Festlegungen getroffen, welche Messwerte während eines Tests erhoben werden sollen und wie dies zu ermöglichen ist.

Bei der Realisierung der Testfälle werden die Entwürfe in ein für das ausgewählte Testwerkzeug ausführbares Format transformiert. Dies erfolgt beispielsweise durch Capture-Mechanismen, die die vom Tester durchgeführten Benutzeraktivitäten aufzeichnen und daraus eine Vorlage generieren. Diese Vorlage muss gewöhnlich mittels programmatischer Anpassungen erweitert werden, so dass sodass die bei der Aufzeichnung geltenden Werte für z.B. eine Session-ID dynamisch aktualisiert werden. Eine andere Möglichkeit besteht darin, dass eine plattform-, programmiersprachen- und protokollunabhängige Beschreibungssprache für Dienste die zulässigen Operationen definiert und hieraus ein Katalog der einzelnen Aufrufe generiert werden kann. Weiterhin werden hier die Konfigurationen erstellt und Testdaten angelegt. Anschließend werden die einzelnen Bestandteile zu den komplexeren Szenarien und deren Varianten kombiniert, um die für den ausgewählten Testzyklus festgelegten Ziele zu erreichen.

Mit der Ausführung erfolgt der Eintritt in die Testphase. Hier werden die Anwendung und ihre Komponenten der zuvor definierten Last ausgesetzt und dabei überwacht. Der Ablauf erfolgt weitgehend automatisch, da Last- und Performancetests ausschließlich werkzeuggestützt durchgeführt werden können. Bei kontinuierlicher Beobachtung und Protokollierung des Testablaufs werden die Daten gesammelt, die anschließend bei der Auswertung verwendet werden. Diese Information kann auch während des Testablaufs genutzt werden, um darüber zu entscheiden, ob aufgrund von unerwartetem oder destruktivem Systemverhalten ein vorzeitiger Abbruch vorgenommen werden muss.

Im Rahmen der Auswertung werden die erhobenen Messwerte mit den Erwartungen verglichen. Abweichungen werden analysiert, um die möglichen Ursachen zu finden. Dies erfolgt gemeinsam mit Administratoren, Infrastruktur-Experten und Entwicklern. In einem Bericht werden die Informationen über den Test und die Ergebnisse in dem für die jeweilige Zielgruppe spezifischen Detaillierungsgrad dokumentiert. Darauf aufbauend werden die nachfolgenden Testiterationen geplant.
Lasttest
Lade...