Methoden und Werkzeuge zur Softwareproduktion WS 2003/04 Karsten Beyer Dennis Dietrich Überblick Einleitung / Motivation Stresstest Lasttest Tools The Grinder Zusammenfassung 2
Motivation Funktionstest wurden ausführlich behandelt Wie verhält sich das Programm unter Belastung? Wie könnte man testen was bei starker Nutzung passiert? Performance Fragen besonders bei Java wichtig Was passiert in unvorhergesehen Situationen? 3 Einordnung s gehören zu den Systemtests Nicht funktionale Tests Verhalten unter Last bzw. unter unnormalen Bedingungen 4
Definition Stresstest Test des Verhaltens eines Systems unter abnormalen Bedingungen 5 Einsatzbereich Stresstest Robustheit Arbeitet das System nach einer Ausnahmesituation normal weiter? Fehlertoleranz Werden korrekte Fehlermeldungen ausgegeben oder stürzt das Programm einfach ab oder ist nicht erreichbar? 6
Vorgehen Stresstest Bestimmung der Systemgrenzen Erstellung von Testfällen/Testdaten die Systemgrenzen überschreiten Auswertung und Bewertung der Ergebnisse Gegebenfalls Rücksprache mit Marketing oder Projektleitung 7 Bewertung Stresstest Bewertung in Bezug auf: Fehlermeldungen Datenkonsistenz Systemzustand nach Testende 8
Beispiele Stresstest Denial of Service Attacken (Würmer, Viren etc.) Stromausfälle 11. September Hardwareausfälle (Festplattencrash, etc. ) Jahreswechsel 9 Definition Lasttest Messung des Systemverhaltens in Abhängigkeit steigender Systemlast 10
Einsatzbereich Lasttest Test der Zuverlässigkeit des Systems unter zunehmender Last Zum Bespiel bei Web-Applikationen Eingebettete Systeme Datenbanken Verteilte System etc. 11 Vorgehen Lasttest Hardware und Software intensive Tests Festlegen der geplanten Belastungsstufen z.b.: Datenvolumen, Benutzeranzahl Bestimmung der akzeptablen Performanz aus Spezifikation oder Marketingabteilung Untersuchung der Ergebnisse 12
Bewertung Lasttest Bewertung der Kennzahlen: Antwortzeit Auslastung Durchsatz Erhebungsmethoden Hardware Monitoring Software Monitoring Benchmarking 13 Ziel Lasttest Erreichen der in der Spezifikation geforderten Werte für: Antwortzeit Datenvolumen Zuverlässigkeit Nutzerzahlen 14
Stresstest vs. Lasttest Stresstest testet punktuell außerhalb der Systemgrenze Lasttest testet kontinuierlich ansteigend bis zur Systemgrenze 15 Tools Einleitung JMeter LoadRunner WAS (Web Application Stress Tool) P6Spy The Grinder 16
Einleitung Tools Last- & Stresstests manuell kaum durchführbar aufgrund beschränkter Ressourcen Tool Make or Buy Sehr unübersichtlicher Markt unzählige freie und kommerzielle Produkte 17 Tool Auswahl Bestimmung der Leistungsfähigkeit Festlegung der Bewertungskriterien Erste Auswahl + Demonstration Endgültige Auswahl Einführung in ein Pilotprojekt Schulung der Mitarbeiter Einführung in das Unternehmen 18
JMeter Apache Jakarta Projekt (Open Source) http://jakarta.apache.org/jmeter/ Leicht bedienbare Oberfläche Weitestgehend Deutsch Lasttest für Client-Server Anwendungen HTTP,HTTPS,FTP,SOAP,JDBC Requests Testpläne Logik-Komponenten Listener Timer 19 Loadrunner I Mercury Interactive (kommerziell) http://www.mecuryinteractive.de Vorherbestimmung von Systemverhalten und Systemleistung Performance Monitore Netzwerk, Datenbank, Webserver und Applicationserver Automatische Speicherung der Testergebnisse in einer Datenbank 20
Loadrunner II www.mecuryinteractive.de 21 Web Application Stress Tool Microsoft Tool (frei downloadbar) www.microsoft.com Einfach zu handhaben HTTP/HTTPS Requests Aufzeichnung der Tests durch Browser Beliebige Server, beliebig viele simulierte Anwender, frei wählbare Übertragungsgeschwindigkeit Nur ein Server gleichzeitig testbar! 22
P6Spy Sourceforge.net Projekt (Open Source) www.p6spy.com Lasttool für Datenbanktraffic in JDBC Anwedungen Überwacht und protokolliert alle Datenbank Operationen (P6Log) Filtert lang laufende JDBC Statements heraus (P6Outage) Lässt sich ohne Codeveränderung integrieren Integration in Jboss, WebLogic, WebSphere & Tomcat 23 The Grinder Plattform: Java, Python http://grinder.sourceforge.net OpenSource (BSD-style Lizenz) Nebenprodukt eines Buches 24
The Grinder Load-Test Tool zum Testen von J2EE- Applikationen Lasterzeugung durch Simulation von Client- Requests Benutzung von aufnehmbaren Testscripten 25 The Grinder TCPProxy Feature zur Aufnahme von kompletten Testscripten Proxy zwischen Browser und Server, der POST/ GET-Requests als Test aufzeichnet 26
The Grinder Console Visualisierung der Testergebnisse: Durchsatz Dauer Fehler Transaktionsanzahl 27 The Grinder Beispiel Streßtest einer Java-Webapplikation Testszenario: Login und abrufen von Emails von 1000 Benutzern, wobei das System nur für 300 Benutzer ausgelegt ist. Erwartetes Ergebnis: Absturz der Applikation 28
The Grinder Bewertung Nicht optimale Visualisierung der Ergebnisse Gute Erweiterbarkeit und Anpassung möglich (aufgrund OpenSource) Leichte Erstellung von Testscripten Session Unterstützung noch nicht implementiert 29 Zusammenfassung Was leisten die Tests? Untersuchen des Verhaltens von Applikationen unter Belastung bzw. unter unnormalen Bedingungen Was leisten sie NICHT!! Funktionales Testen 30
Vielen Dank für die Aufmerksamkeit Fragen??? 31