Last- und Performance-Tests

Anwendung unter Last

Dieter Wulz

Last- und Performancetests leisten einen wesentlichen Beitrag zur Leistungsfähigkeit und Zuverlässigkeit von IT-Systeme und sind insbesondere dort unerlässlich, wo es um den Aufbau, den Betrieb und die Weiterentwicklung von webbasierten, mehrschichtigen Anwendungen geht.

Ein systematisches Last- und Performancemanagement zielt darauf ab, IT-Ressourcen in den Hardware- und Softwarekomponenten so zu nutzen, dass eine bestmögliche Anpassung der Anwendung an Kriterien wie Dienstgüte, Performance, Verfügbarkeit und Leistung ermöglicht wird. Dieser Optimierungsprozess spielt eine zentrale Rolle beim Aufbau, Betrieb und bei der Weiterentwicklung von webbasierten, mehrschichtigen Anwendungen. Hier werden alle beteiligten IT-Systemkomponenten wie Client-Rechner, Applikationserversysteme, Webserver, Netzwerke, Datenbank- und Hostsysteme als Bestandteile eines Gesamtsystems betrachtet und bewertet, um Aussagen über Antwortzeiten, Durchsatz und die Stabilität von IT-Systemen treffen zu können. Dies geschieht über unterschiedliche, aufeinander aufbauende Arbeitsschritte. Sie umfassen das Planen, Überwachen, Analysieren und Optimieren des IT-Systems sowie die Bestimmung des zukünftigen Systemverhaltens, um die Hochverfügbarkeit des Systems zu gewährleisten.

Wege zu stabilen IT-Systemen
  • IT-Systeme bestehen aus dynamisch ineinander greifenden, sich permanent verändernden Komponenten. Je heterogener und verteilter ein IT-System ist, desto höher ist die Anzahl der Faktoren, die das Verhalten des Systems beeinflussen. In modernen IT-Systemen bestehen im Wesentlichen Abhängigkeiten zwischen:
  • der Verfügbarkeit: d.h. eine Anwendung muss aus Sicht des Endbenutzers ein Maximum an verfügbarer Betriebszeit bereitstellen
  • der Zuverlässigkeit: d.h. eine Anwendung sollte korrekt und vorhersehbar hinsichtlich ihrer Funktionalitäten reagieren
  • des Antwortzeitverhaltens: d.h. eine Anwendung muss entsprechend des Geschäftsvorfalls unterhalb eines definierten zeitlichen Schwellwerts reagieren
  • der Skalierbarkeit: d.h. der Ressourcenbedarf der Anwendung (Software) und der Systemkomponenten (Hardware) muss sich bei steigenden Eingabemengen linear verhalten

Vielfach wird versucht, Last- und Performanceprobleme mit zusätzlichem Einsatz von Hardware zu lösen. Diesen Lösungsansatz als Lösungsweg zu beschreiten, ist allerdings nur bedingt sinnvoll. Der Ansatz, schlecht skalierende Applikationserversysteme durch Hinzunahme von weiteren Serverkomponenten performancetechnisch zu verbessern, Engpässe im Speichermanagement durch zusätzliche CPU-Ressourcen oder neue, besser performende Prozessoren zu lösen oder veraltete Systeme durch Austausch von neuen, schnellen Systemen abzulösen, ist dabei nur zeitlich und kurzfristig gültig. Webbasierte, serviceorientierte Anwendungen sind hinsichtlich ihrer Skalierfähigkeit nicht immer klar und eindeutig einschätzbar. Grund hierfür ist, dass das Systemverhalten keinem linearen Verlauf folgt. Antwortzeiten können beispielsweise bei Normallast linear verlaufen, aber unter Hochlast schnell in einen exponentiellen Anstieg übergehen. Allein durch vermehrten Hardwareeinsatz ist es nicht möglich, Ineffizienzen, Fehler und Engpässe bei der Performance in der Softwareimplementierung zu erkennen und im Fehlermanagement zu beheben.

Funktionen und Bereiche der Last- und Performancetests

Last- und Performancetests definieren die systematische Belastung eines Anwendungssystems nach vorgegebenen Kriterien, um das Systemverhalten oder die Infrastruktur des jeweiligen Anwendungssystems zu bestimmen, beziehungsweise um Fehler oder Engpässe in diesem Anwendungssystem aufzuzeigen. Hierbei analysieren die Tests die Verfügbarkeit, die Zuverlässigkeit, das Antwortzeitverhalten und die Skalierbarkeit.

Entsprechend der unterschiedlichen Anforderungen an das Last- und Performancemanagement lassen sich unterschiedliche Testarten einsetzen. So gibt es Last- und Performancetests, die darauf ausgelegt sind, die maximal mögliche Benutzerzahl in einem Anwendungssystem zu ermitteln. Andere Last- und Performancetests dienen dazu, das Systemverhalten zu bestimmen oder ein spezielles Verhalten des Systems zu einem Spitzenzeitpunkt der Nutzung festzustellen. Darüber hinaus lassen sich Last- und Performancetests einsetzen, um die Systemkennzahlen von einzelnen Systemkomponenten eines kompletten Anwendungssystems, z.B. von Datenbanken, LoadBalancer und Application Server, zu ermitteln oder um Systemkennzahlen einer speziellen Applikationskomponente wie eines Web Services zu bestimmen. Ziel aller Last- und Performancetests ist es, aufzuzeigen, in welchen Komponenten einer Anwendung, zu welchen Zeitpunkten der Nutzung und mit welcher Menge von durchgeführten Geschäftsvorfällen ein Anwendungssystem überlastet ist oder die komplette Funktionalität nicht mehr fehlerfrei zur Verfügung steht. So lassen sich Engpässe oder Einbrüche erkennen sowie funktionelle Fehler ermitteln, die erst unter Last entstehen. Die Tests liefern somit die entscheidenden Informationen über die Bedingungen, unter denen sich ein IT-System stabil betreiben lässt. Auf diese Weise stellen sie eine wichtige Ergänzung zu funktionalen Tests dar, die die jeweilige Anwendung hinsichtlich der geforderten fachlichen Kriterien prüfen. Das Last- und Performancemanagement umfasst folgende Arbeitsschritte:

  1. Festlegen der Anforderungen an die auszuführenden Geschäftsvorfälle
  2. Entwerfen der Testskripte
  3. Aufbau eines Last erzeugenden Systems
  4. Durchführung eines Lasttests
  5. Monitoring der Systemkomponenten
  6. Analyse der Ergebnisse und die Performanceoptimierung
  7. Reporting der Ergebnisse
Festlegen der Anforderungen

Bei der Planung von Last- und Performancetests geht es darum, die Geschäftsvorfälle hinsichtlich ihrer fachlichen Durchführung festzulegen. Des Weiteren werden die Anforderungen an die auszuführenden Geschäftsvorfälle hinsichtlich Benutzeranzahl und Antwortzeitverhalten der Benutzer definiert. Hierbei empfiehlt es sich, mit denjenigen Personen im Unternehmen zusammenzuarbeiten, die das Anwendungsnutzungsverhalten der Benutzer genau kennen. Je exakter sich die Geschäftsvorfälle hinsichtlich des tatsächlichen Benutzerverhaltens in den Lasttests durchspielen lassen, desto eher lässt sich aus den Testergebnissen das zu erwartende Benutzerverhalten im Echtbetrieb der Anwendung unter Last ermitteln.

Entwerfen der Testskripte

Im nächsten Schritt geht es darum, einen fachlichen (logischen) Geschäftsvorfall in einem technischen (physischen) Testskript abzubilden. Dies geschieht meist in einer speziellen Skriptsprache, mit der ein Geschäftsvorfall aufgezeichnet und in einem Testskript erfasst wird. Dieses Testskript bildet damit die Basis für eine wiederholte Testdurchführung und wird entsprechend verschiedener Eingangsparameter angepasst, z.B. verschiedene Vor- und Nachnamen, Geburtsdaten, Adressdaten, Telekommunikationsdaten bei der Erfassung eines Kunden. Damit kann in einem Lasttest ein verteiltes Benutzerverhalten bei der Ausführung eines bestimmten Geschäftsvorfalls simuliert werden.

Geschrieben von
Dieter Wulz
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.