Leistungsmessung- und bewertung
Transcription
Leistungsmessung- und bewertung
Westfälische Wilhelms-Universität Münster Seminararbeit Leistungsmessung- und bewertung im Rahmen des Seminars „Qualitätsmanagement in der Softwaretechnik“ Tobias Müller Themensteller: Prof. Dr. Herbert Kuchen Betreuer: Dipl.-Wirt.Inform. Roger Müller Institut für Wirtschaftsinformatik Praktische Informatik in der Wirtschaft Inhaltsverzeichnis 1 Qualitätsanforderungen an Software-Systeme.........................................................3 2 Grundlagen der Leistungsmessung- und bewertung ................................................3 3 2.1 Leistung als Qualitätsmerkmal.........................................................................3 2.2 Definition und Kenngrößen von Leistung .......................................................4 2.3 Norm DIN 66273.............................................................................................5 Methoden, Testverfahren und Werkzeuge...............................................................6 3.1 Methoden zur Leistungsbewertung ..................................................................6 3.2 Der Leistungstest .............................................................................................9 3.3 Testtools........................................................................................................16 4 Relevanz der Leistungsüberprüfung......................................................................20 5 Literaturverzeichnis..............................................................................................21 II Kapitel 1: Qualitätsanforderungen an Software-Systeme 1 Qualitätsanforderungen an Software-Systeme In der heutigen Zeit übernehmen Software-Systeme immer komplexere und verantwortungsvollere Aufgaben. Die Gesellschaft ist in vielen Lebensbereichen auf das fehlerfreie Funktionieren von Software angewiesen. Ausfälle, Fehler oder Leistungseinbußen von Software-Systemen in privaten Haushalten, Unternehmen oder beim Militär können nicht nur ärgerlich sein und das Ansehen des Herstellers negativ beeinflussen, sondern enorme wirtschaftliche Schäden verursachen und Gefahren bergen. Neben Büroanwendungen werden heute medizinische Geräte, Flugzeuge und Raketen, sowie Kraftwerke und chemische Anlagen durch Software gesteuert. Ein wichtiges Ziel der Softwareentwicklung und des Qualitätsmanagements sollte also die Herstellung fehlerfreier und qualitativ hochwertiger Software sein. Die Qualität einer Software leitet sich dabei nicht nur aus der Fehlerfreiheit ab, sondern bezieht sich auch auf Aspekte wie Zuverlässigkeit und Leistung. Die Leistungsmessung und –bewertung von Software ist Thema dieser Seminararbeit. Neben grundlegenden Definitionen und Einordnung des Leistungsbegriffes in Bezug auf Software wird besonders auf den Leistungstest eingegangen. Die verschiedenen Aspekte der Leistungsmessung werden in Bezug auf diesen Test dargestellt und anhand von Beispielen verdeutlicht. Abschließend wird eine Auswahl einsetzbarer Tools zur Unterstützung des Mess- und Bewertungsprozesses vorgestellt. 2 Grundlagen der Leistungsmessung- und bewertung 2.1 Leistung als Qualitätsmerkmal Allgemein ist Qualität definiert als „die Gesamtheit von Eigenschaften und Merkmalen eines Produkts oder einer Tätigkeit, die sich auf deren Eignung zur Erfüllung gegebener Erfordernisse bezieht“ [Ba98, S. 257]. Software-Qualität bezieht sich auf spezielle Merkmale sowie Eigenschaften eines Software-Produktes und lässt sich durch vielfältige Qualitätsmodelle beschreiben [z.B. Ba98, S. 257ff]. Häufig genannte Merkmale sind Funktionalität, Zuverlässigkeit, Benutzbarkeit und Leistung. Wie einleitend erläutert, bilden hohe Leistung und Zuverlässigkeit eine zentrale Rolle in der Softwareentwicklung. Die Leistungsanalyse kommt im wesentlichen in zwei Anwendungsgebieten zum Einsatz. Einerseits wird sie bei Entwurf, Optimierung und Weiterentwicklung von Software-Systemen eingesetzt, um verschiedene Versionen 3 Kapitel 2: Grundlagen der Leistungsmessung- und bewertung miteinander vergleichen zu können und Einflüsse ausfindig zu machen, die sich auf die Leistung auswirken. Zum anderen wird sie bei der Analyse, Auswahl und Konfiguration einbezogen, damit Software-Systeme anhand standardisierter Tests verglichen und Entscheidungen bezüglich des Einsatzes getroffen werden können. 2.2 Definition und Kenngrößen von Leistung Um eine quantitative Leistungsanalyse durchführen zu können, muss der Leistungsbegriff genauer abgegrenzt und in Leistungskenngrößen untergliedert werden. Die Analyse bezieht sowohl Prozessoren, Speichersysteme, Netzwerke, Betriebssysteme und die Software selbst mit in die Bewertung ein, da eine Software nicht isoliert betrachtet werden kann. Zur konkreten Messung und Bewertung müssen Kenngrößen in meß- und bewertbare Metriken untergliedert werden [LZ99]. Zur Definition von Leistung werden die folgenden Kenngrößen [Ba98, S. 538] genauer erläutert. Zunächst können verschiedene Arten des Zeitverhaltens unterschieden werden. Die Kenngröße Zeit wird dazu in messbare Größen unterteilt. Die Bedienzeit beschreibt in diesem Zusammenhang die Bearbeitungszeit eines Auftrages an einem System oder einer Stelle der Software. Unter Wartezeit ist die Zeit zu verstehen, die ein Auftrag an einer Stelle des Systems warten muss, bevor er dort bearbeitet wird. Auch die Summe aller Wartezeiten eines Auftrages fällt unter diesen Begriff. Die Verweil- oder auch Antwortzeit beschreibt die Zeitdauer vom Absenden eines Auftrages bis zum Eintreffen des Resultates. Sie lässt sich auch durch die Summe von Bedien- und Wartezeit abschätzen. Die reine Rechenzeit ist ein Hardware-bezogenes Leistungsmaß und ist als die Zeit zu verstehen, die ein Auftrag an einem Prozessor (CPU) verbringt. Alle Zeiten können dabei in Sekunden, Millisekunden oder weiteren Größeneinheiten gemessen werden. [MF03, S. 10, Fe03, He94] Eine weitere Kenngröße von Leistung ist der Durchsatz oder das Volumen. Sie beschreibt die Datenmengen und Dateigrößen, welche ein Software-Produkt und Rechnersysteme handhaben und verarbeiten können. Der Durchsatz wird genauer definiert als die Anzahl von Aufträgen pro Zeiteinheit. Im Laufe der Zeit haben sich verschiedene Größen etabliert. Beispielhaft sollen hier Million of Instructions Per Second (MIPS) und Million of Floating-Point-Operations per Second (MFLOPS) zur Messung von CPU-Durchsätzen, sowie Jobs pro Sekunde bei Batch-Systemen oder Bit pro Sekunde für die allgemeine Datenübertragung genannt werden [MF03, S. 10]. Weiterhin können Größen wie der Grenzdurchsatz und die Verlustrate betrachtet werden. Der Grenzdurchsatz beschreibt die maximal erreichbaren Durchsätze oder anders ausgedrückt, die Anzahl der Aufträge, für welche die Antwortzeit eine 4 Kapitel 2: Grundlagen der Leistungsmessung- und bewertung bestimmte obere Schranke nicht überschreitet. Als Verlustrate ist die Anzahl der Aufträge zu verstehen, die pro Zeiteinheit verloren gehen oder abgewiesen werden [Fe03, S. 14] . Die jeweiligen Maßeinheiten orientieren sich dabei an den zu messenden Merkmalen der jeweiligen Durchsatzgröße. Die Auslastung ist eine auf das Gesamtsystem bezogene Leistungskenngröße. Sie stellt das Verhältnis von tatsächlich erreichtem Durchsatz zum Grenzdurchsatz dar [Fe03]. Unterschieden werden dabei u. a. die Prozessorauslastung, die Systemauslastung und der Verwaltungsaufwand. Die Prozessorauslastung ist der relative Anteil der Aktivzeit einer CPU, die zur Bearbeitung von Aufträgen oder Mengen benötigt wird. Die gewichtete Summe der Auslastungen aller Systemkomponenten wird als Systemauslastung bezeichnet. Der Verwaltungsaufwand stellt schließlich den relativen Anteil der Systemprogramme an der CPU-Zeit dar [MF03, S.10; He94]. Eine letzte Kenngröße ist die Verfügbarkeit oder auch Zuverlässigkeit. Damit wird die Fähigkeit der Software, unter starker Belastung im Grenzbereich zu arbeiten, ausgedrückt. Zur Feststellung der Zuverlässigkeit wird die Wahrscheinlichkeit für das Auftreten eines Fehlers in einem bestimmten Zeitintervall, auch als Mean Time Between Errors (MTBE) bezeichnet, gemessen. Die Verfügbarkeit ist der Zeitanteil, in dem das System betriebsbereit ist [MF03, S.10]. Die Fehlertoleranz und -behandlung bei Überlast, Ressourcenausfall oder falscher Eingabedaten wird durch die Robustheit beschrieben. Die Leistungsmaße zur Auslastung und zum Durchsatz beschreiben die Leistung vorwiegend aus der Herstellersicht und werden als Effizienzmaße bezeichnet. Von Seiten des Kunden oder des Anwenders ist die Effektivität relevanter, welche in den Kenngrößen zur Zeit und Verfügbarkeit ausgedrückt wird [MF03, S. 6, 11]. Bei der Definition der einzelnen Messgrößen ist sowohl die Wahl einer angemessenen Skala (Nominal-, Ordinal-, Intervall-, Verhältnis- oder Absolutskala), als auch die je nach Skala eingeschränkte Auswahl sinnvoller statistischer Operationen zu beachten. So macht es keinen Sinn, Abstände zwischen Klassen ordinalskalierter Größen zu interpretieren, oder nominalskalierte Größen zu ordnen. Metriken sollten weiterhin zuverlässig, sensitiv, gültig und vergleichbar sein, um aussagekräftige Messungen durchführen zu können [BR03]. 2.3 Norm DIN 66273 Die nationale Norm DIN 66273 mit dem Titel „Messung und Bewertung der Leistung von DV-Systemen“ beschreibt ein Begriffssystem, sowie Bewertungs- und 5 Kapitel 3: Methoden, Testverfahren und Werkzeuge Messverfahren zur Leistungsanalyse. Dieses standardisierte Lasttestverfahren ermöglicht es, objektive Aussagen bezüglich des Zeitverhaltens im realistischen Betrieb eines IT-Systems zu machen. Das zu testende System wird dabei als Black-Box betrachtet, um die Optimierung von Kennzahlen durch Anpassung der Messverfahren und Benchmarks auf spezielle innere Funktionen und Eigenschaften der Software zu vermeiden [He94]. Werden alle Messungen nach den Norm-Vorschriften durchgeführt, sowie die eingesetzte Hardware und die Benutzerzahlen berücksichtigt, so sind die Ergebnisse jederzeit reproduzierbar und vergleichbar. Mit Leistungsgrößen wie dem Durchsatz, dem Antwortzeitverhalten und der Termintreue wird besonders das Verhalten des Systems an der Benutzerschnittstelle gemessen. Die Leistung, welche im realen Betrieb erbracht werden kann, wird somit auf realistische Weise eingestuft. [HU00; Sa02; Sa04]. 3 Methoden, Testverfahren und Werkzeuge 3.1 Methoden zur Leistungsbewertung Die Methoden zur Bewertung von Leistung lassen sich in drei Klassen unterteilen, diese drei Klassen sind die analytischen Methoden, die Messung und die Simulation. Abb. 3.1 verdeutlicht die Klassifizierung. Leistungsbewertung Analytische Modelle Messung Simulation Warteschlangen Monitoring Testtools Petri-Netze Benchmarking ... ... ... Abb. 3.1: Methoden zur Leistungsbewertung [MF03, S. 6]. Analytische Modelle Analytische Modelle versuchen die Leistung eines Systems in Form von Gleichungen abstrakt zu beschreiben. Der Aufwand und die Kosten, die mit dem Aufbau von realen Testszenarien verbunden sind, können auf diese Weise vermindert werden. Der Test von z. B. Multi-User-Systemen und großen Web-Anwendungen mit einer Vielzahl von zugreifenden Benutzern kann somit wesentlich einfacher durchgeführt werden. Im 6 Kapitel 3: Methoden, Testverfahren und Werkzeuge Rahmen der analytischen Modellierung kommen Formeln, Petri-Netze und Warteschlangenmodelle zum Einsatz. Die einzelnen Modellierungsmöglichkeiten stellen jeweils komplexe mathematische Themengebiete dar. Exemplarisch sollen hier die Warteschlangenmodelle näher betrachtet werden. Im einfachsten Fall bestehen solche Modelle aus einer einzigen Warteschlange und einer Bedieneinheit. In der Warteschlange befinden sich alle Aufträge, die noch nicht durch die Bedieneinheit bearbeitet wurden. Die Bedieneinheit repräsentiert Prozessoren, Server oder einzelne Prozesse eines Programms. Abb. 3.2 verdeutlicht den Sachverhalt. Warteschlange / Queue Ankunftsrate Bedieneinheit Abarbeitungsrate Abb. 3.2: Grundmodell M/M/1 Warteschlange. Neben der Anzahl der Bedieneinheiten und der Größe der Warteschlange müssen die in Abb. 3.2 dargestellten Ankunfts- und Abarbeitungsraten modelliert werden. Die Ankunftsrate beschreibt den zeitlichen Abstand zwischen zwei eintreffenden Aufträgen an der Warteschlange. Die Abarbeitungsrate ist die Bearbeitungsdauer, welche die Bedieneinheit zur Fertigstellung eines Auftrages benötigt. Die Abarbeitungs- und Ankunftsraten von Aufträgen sind in diesem Zusammenhang möglichst realistisch im Modell zu definieren. Dabei kann zwischen stochastischen und deterministischen Modellen unterschieden werden. Stochastische Modelle bedienen sich an Zufallsgrößen und können vereinfacht in der Kendall-Notation beschrieben werden. Das in Abb. 3.2 dargestellte M/M/1 Grundmodell besteht nach der Kendall-Notation aus einer exponential verteilten Ankunftsrate (M), einer exponential verteilten Abarbeitungszeit (M) und nur einer Bedieneinheit (1). Deterministische Modelle beziehen sich auf funktionales und zeitliches Verhalten von Systemen im realen Betrieb. Als Beispiel könnte nun eine Software betrachtet werden, die mehrere Prozesse einsetzt, um ankommende Aufträge zu Bearbeiten, wie etwa eine Kontoverwaltungssoftware, die Buchungen und Kontoabfragen bearbeitet. Gelingt eine realistische Modellierung der Ankunfts- und Abarbeitungsraten, können für ein solches Modell Verkehrsdichten, Auslastungen sowie Mittel- und Erwartungswerte berechnet werden. Engpässe und Schwachstellen bezüglich des Leistungsverhaltens können dann schnell lokalisiert werden. 7 Kapitel 3: Methoden, Testverfahren und Werkzeuge Messungen Die Messung als Methode zur Leistungsbewertung wird an vorhandenen Systemen durchgeführt. Sie dient der konkreten Beurteilung von realen Systemen. Jede Software läuft auf einer bestimmten Hardware, so dass Messungen nur für eine bestimmte Kombination von Soft- und Hardware gelten. Bei der Messung gibt es eine Unterscheidung zwischen Monitoring und Benchmarking. Das Monitoring dient der Überwachung einer Anwendung im aktiven Betrieb. Zur Laufzeit werden an wichtigen Punkten im System Messwerte protokolliert, die später überprüft und miteinander verglichen werden können. Engpässe können auf diese Weise aufgespürt und das Verhalten des Systems eingeschätzt werden. Überwachungsobjekte könnten z. B. Antwortzeiten sein. Dazu werden die zu untersuchenden Anwendungen an den relevanten Stellen instrumentiert, das heißt, es werden Codeanpassungen vorgenommen oder Kollektoren eingesetzt, welche Zeiten zwischen festgelegten Programmstücken und Ausführungsschritten messen und protokollieren. Das Benchmarking bedient sich standardisierter Messprogramme und dient der Erfassung der Leistung eines Systems. Die Standardisierung ermöglicht einen Vergleich mit ähnlichen Systemen und Software-Produkten und ist somit eine elementare Voraussetzung. Die in Kap. 2.3 beschriebene DIN ist in diesem Zusammenhang als Rahmenwerk zu sehen, bei dessen Verwendung eine standardisierte und somit vergleichbare Messung von Leistung sichergestellt werden kann. Bei jedem Vergleich ist darauf zu achten, dass die Bedingungen und das Umfeld der Benchmarks bezüglich Hard- und Software identisch oder sehr ähnlich sind, um aussagekräftige Schlüsse ziehen zu können. Es gibt eine Vielzahl an Benchmarks, die unterschiedlichste Leistungsmerkmale unterschiedlichster Komponenten messen. So werden zum Leistungsvergleich von Prozessoren beispielsweise der Whetstone, Dhrystone oder der SPEC-Benchmark eingesetzt. Prozessoren müssen im Rahmen dieser Benchmarks unter anderem umfangreiche Gleitkommaoperationen und komplexe Instruktionen ausführen. Die Leistung von Datenbanken kann ermittelt werden in dem auf vergleichbarer Hardware bei gleichem Füllstand der Datenbank z. B. mehrere Millionen Zeilen geschrieben oder ausgelesen werden [DB04]. Resultierende Antwortzeiten lassen dann auf die jeweilige Performance schließen. Eine umfangreiche Auflistung verfügbarer Benchmarks für unterschiedliche Systemkomponenten gibt das Schriftstück [MF03, S. 18]. [Ta02, S. 134] Simulation Die Simulation versucht Applikationen, Anwendungsszenarien, Konfigurationen und Datenbestände real nachzubilden. Wie oben erwähnt ist es oftmals aus Zeit- und Kostengründen nicht möglich, eine Vielzahl von Benutzern oder Computer in einen Systemtest einzubeziehen. Ein alleiniger Test am isolierten Einzelplatzsystem könnte 8 Kapitel 3: Methoden, Testverfahren und Werkzeuge jedoch dazu führen, dass Instabilitäten und Performance-Probleme solange unentdeckt bleiben, bis die Software im realen Betrieb integriert wird. Durch Simulation besteht die Möglichkeit, mit Hilfe von Lastgeneratoren und Testwerkzeugen eine realistische Auslastung zu erzeugen, ohne zu tief in die Gebiete der Mathematik einsteigen zu müssen [MF03]. Die Messung erfolgt genau und automatisch und wird nach Bedarf ausgewertet. Sowohl eine tabellarische Übersicht der Ergebnisse im Vergleich mit den Anforderungen, als auch eine grafische Auswertung, in der Größen wie Auslastung und Benutzerzahl, oder Auslastung und Datenmenge zueinander in Bezug gesetzt werden, ist denkbar. Mit der Beschreibung des Leistungstests in Kap. 3.2 und der Beschreibung unterstützender Werkzeuge in Kap. 3.3 soll im Rahmen dieser Seminararbeit der Bereich der Simulation exemplarisch genauer erläutert werden. Bewertung Sowohl durch den Einsatz analytischer Modelle, als auch durch die Simulation von Systemen können der Aufwand und die Kosten, die mit dem Aufbau und der Beobachtung eines realen Testszenarios für Multi-User-Systeme anfallen, stark reduziert werden. Im Rahmen des Monitoring müsste zur realistischen Einschätzung des Leistungsverhaltens ein wesentlich höherer Aufwand betrieben werden. Es ist angemessenen für den Test von Software, die nur durch einen Benutzer genutzt wird. Die generelle Schwierigkeit beim analytischen Vorgehen besteht in der Formulierung und Aufstellung der abstrakten mathematischen Modelle. Die Modellierung realistischer Ankunftsraten und des Benutzerverhaltens stellt sich sowohl beim analytischen Ansatz, als auch bei der Simulation als problematisch dar. Ist dies jedoch gelungen, kann die Leistungsbewertung schnell und genau erfolgen. Als Vorteil des Benchmarking und der Simulation ist weiterhin anzuführen, dass diese Leistungsbewertungen relativ einfach in der Anwendung sind. Ergebnisse können jederzeit genau reproduziert werden. Eine identische Abbildung des realen Betriebs kann allerdings nicht erreicht, sondern nur angenähert werden. Jede Vorgehensweise besitzt somit Vor- und Nachteile, womit die konkrete Auswahl von der individuellen Situation und den verfügbaren Ressourcen des Testers abhängig ist. 3.2 Der Leistungstest Nachdem in Kap. 3.1 die grundlegenden Methoden zur Messung und Bewertung von Leistung dargestellt wurden, soll nun der Leistungstest erläutert werden. Ausgehend von einer Einordnung des Leistungstest werden allgemeine Vorgehensweisen beim 9 Kapitel 3: Methoden, Testverfahren und Werkzeuge Testen sowie die spezifischen Bestandteile und Funktionsweisen des Leistungstest dargestellt. Bereits durch die Betrachtungsweise des zu testenden Objektes können verschiedene Arten des Testens voneinander abgegrenzt werden. Neben dem White-Box-Test, welcher interne Abläufe wie Daten- und Kontrollflüsse berücksichtigt, wird der Leistungstest als Black-Box-Test durchgeführt. Der Leistungstest ist also kein Strukturtest, sondern dient dem Testen quantifizierbarer Merkmale funktionaler Anforderungen. Die zu testenden Objekte werden in diesem Zusammenhang „von außen“ betrachtet [Tr93, S. 197]. Wird von der Betrachtung des Objektes abstrahiert, so können weiterhin verschiedene Testarten entlang des Softwareentwicklungsprozesses unterschieden werden. Das V-Modell als eines von vielen Modellen zur Strukturierung des Entwicklungsprozesses bietet eine übersichtliche Darstellung der anwendbaren Testarten in den unterschiedlichen Stadien der Softwareerstellung und wird zur besseren Einordnung des Leistungstests exemplarisch in Abb. 3.3 betrachtet. Anwendungsszenarien Anforderungsdefinition Abnahmetest Testfälle Grobentwurf Feinentwurf Modulimplementation Testfälle Testfälle Systemtest Integrationstest Modultest Abb. 3.3: Das V-Modell [Al94, S.101; Ba98, S. 101]. Für jede Stufe im Softwareentwicklungsprozess gibt es spezielle Ausprägungen des Testens. Das dargestellte V-Modell unterscheidet die Teststufen Modultest, Integrationstest, Systemtest und Abnahmetest. Der Leistungstest ist als ein spezieller Untertest des Systemtests einzuordnen und erfolgt somit erst am Ende des Entwicklungsprozesses, nachdem bereits Modul- und Integrationstests durchgeführt wurden. Neben dem Leistungstest setzt sich der Systemtest aus dem Funktionstest, dem Benutzbarkeitstest, dem Sicherheitstest und dem Interoperabilitätstest zusammen. Ziel des Systemtests ist es, nachdem die einzelnen Module der Software per Modultest und deren Zusammenspiel durch den Integrationstest sichergestellt wurden, das 10 Kapitel 3: Methoden, Testverfahren und Werkzeuge Gesamtsystem abschließend in der realen Umgebung zu testen. Unter realen Einsatzbedingungen werden Fehler gesucht und die Anforderungserfüllung überprüft. Auf diese Weise wird die Software-Qualität für den Endbenutzer sichergestellt. Die Überprüfung der Leistung nach den in Kap. 2.2 definierten Kriterien ist Aufgabe des Leistungstest. Als Basis für den System- und damit auch für den Leistungstest dient die Produktdefinition, wobei insbesondere im Pflichtenheft wichtige Qualitätsziele festgelegt sein sollten. Wie Abb. 3.3 zeigt, sind somit bereits aus dem Grobentwurf einzelne Testfälle abzuleiten. Neben der Überprüfung der ist auch eine Anwendung der Leistungsmessung Softwareentwicklungsprozesses denkbar, beispielsweise spätere Leistung kann dann frühzeitig abgeschätzt Leistung des Gesamtsystems in früheren Phasen des auf der Modulebene. Die und Handlungen bzw. Optimierungen eingeleitet werden [Ba98, S. 537ff]. Vorgehensweise beim Testen Ein Vorgehensmodell für den Leistungstest lässt sich aus dem allgemeinen Vorgehen beim Test von Software ableiten. In verkürzter Form ergeben sich die Phasen Testplanung, Testvorbereitung, Durchführung und Auswertung [Tr93, S.196]. Die Testplanung beschäftigt sich mit Aspekten der Festlegung von Zeitplänen, Werkzeugen, Verantwortlichkeiten und Zielen. Zur Festlegung der Ziele des Leistungstests sind Qualitätsmerkmale, wie in Kap. 2.2 erläutert, auf meß- und bewertbare Kenngrößen herunter zu brechen. Die Verantwortlichkeit obliegt den Qualitätssicherern und Software-Entwicklern [Ba03]. In der Testvorbereitung werden Hard- und Software festgelegt und konfiguriert, Testfälle entwickelt, sowie Testdaten generiert. Die Ableitung der Konfiguration und der Testfälle für den Leistungstest ist dem Pflichtenheft zu entnehmen. Die Durchführung kann auf Grund der Komplexität und des Zeitaufwandes nur mit Hilfe von Testtools effizient durchgeführt werden. Besonders bei Multi-User-Systemen und komplexen Datenbeständen ist eine Simulation und automatische Testdatengenerierung durch Tools und Test-Treiber notwendig. Einzelne Testtools werden in Kap 3.3 aufgeführt [Ba98]. Wurden alle Testfälle in Testläufen durchgeführt und dokumentiert, so kann der Test ausgewertet werden. Dabei werden die Ergebnisse mit den erwarteten Werten verglichen und nach Bedarf verdichtet, sowie Fehlermöglichkeiten bei negativen Abweichungen identifiziert. 11 Kapitel 3: Methoden, Testverfahren und Werkzeuge Elemente des Leistungstests Der Leistungstest selbst lässt sich in vier weitere Tests untergliedern. Unter diesen Oberbegriff lassen sich der Massen-, der Zeit-, der Last- und der Stresstest unterordnen. Die einzelnen Tests werden im Folgenden genauer dargestellt. Massen- / Volumentest Der Massen- oder auch Volumentest dient der Überprüfung des Verhaltens der Software bei der Verarbeitung großer Datenmengen. Während im Laufe der Entwicklung nur geringe Datenmengen für den Test zum Einsatz kommen, werden die SoftwareProdukte im realen Betrieb oftmals enormen Datenmengen ausgesetzt. Im Pflichtenheft und der Produktbeschreibung finden sich oft spezielle Anforderungen. Dieser Test soll sicherstellen, dass auch ein stark ausgelastetes System beim Ausführen von Funktionssequenzen ein normales bzw. ein gefordertes Verhalten zeigt. Unerwartete Probleme im laufenden Betrieb, sowie Abstürze und Instabilitäten sollen so aufgedeckt werden [Nf03]. Eine zentrale Aufgabe beim Durchführen des Massentests ist die Bereitstellung der großen Datenmengen. Eine manuelle Erfassung oder Eingabe der Daten in das System ist sehr zeitaufwendig und damit teuer. Um das Personal nicht unnötig zu belasten und um die Kosten zu senken, können entweder reale Daten vom Auftraggeber, oder Testdatengeneratoren eingesetzt werden. Der Begriff Daten ist dabei sehr weit gefasst und umschreibt sowohl verschiedenste Dateiarten wie ZIP-Dateien, PDF-Dokumente, selbst definierte Formate etc., als auch Datensätze mit bestimmten Attributen in Datenbanken. Werden die Daten vom Auftraggeber geliefert, sind diese über entsprechende Importschnittstellen des Software-Produktes in das System einzupflegen. Die Importschnittstelle muss die realen Daten entgegennehmen und in das von der Software benötigte Format konvertieren können. Der Vorteil dieser Vorgehensweise liegt auf der Hand. Es kann mit realen Daten gearbeitet werden, die später auch im Betrieb mit der Software verwendet würden. Jedoch ist die Beschaffung problematisch. Entweder verfügen die Auftraggeber selbst noch nicht über entsprechende Datenmengen, oder es ist ihnen aus datenschutzrechtlichen Gründen untersagt, diese preiszugeben. Eine weitere Möglichkeit zur Erzeugung der Datenmengen sind Testdatengeneratoren. Diese Tools können entweder selber programmiert werden, oder aber, sollte der Aufwand zu hoch und nicht gerechtfertigt sein, am Markt beschafft werden. Entsprechend konfiguriert, erzeugen solche Generatoren die gewünschten Datenmengen im vorgegebenen Format. Vorteilhaft ist die Effizienz dieses Vorgehens. Daten werden 12 Kapitel 3: Methoden, Testverfahren und Werkzeuge schnell, in großen Mengen, vor Ort und in gewünschten Formaten erstellt. Als Nachteil wäre aufzuführen, dass es sich nicht um reale Daten handelt und keine 100%ige Übereinstimmung mit diesen garantiert werden kann. Bei leicht abweichenden Daten im realen Betrieb können also durchaus noch unerwartete Probleme auftreten. Es werden also hohe Anforderungen an die Qualität der erzeugten Daten gestellt [Ba98, S. 539]. Einige kurze Beispiele sollen die Anwendungsmöglichkeit des Massentests verdeutlichen. So könnte eine Anforderung im Pflichtenheft eines Software-Produktes zur Verwaltung von Studenten und Vorlesungen lauten, dass maximal 100.000 Studenten und 5.000 Vorlesungen verwaltet werden sollen. Im Zuge des Massentests ist es erforderlich, die maximal geforderten Datenmengen auch wirklich in das System einzupflegen. Die Funktionsfähigkeit und Leistungsfähigkeit muss bei dieser Belastung gewährleistet werden können, um den geforderten Pflichten gerecht zu werden. Auch die Auffüllung von Warteschlangen für abzuarbeitende Aufträge kann im Rahmen des Massentests getestet werden. Ist gefordert, dass an einem Server mindestens 10 Aufträge in einer Warteschlange gespeichert werden sollen bevor der erste verworfen wird, so sollte das korrekte Verhalten durch entsprechende Generierung von Testdaten überprüft werden [My91]. Bei der Speicherung von Daten auf Massenmedien kann das Verhalten bei Überfüllung der Massenmedien getestet werden. Ist ein Massenspeicher voll, so sollte dies nicht zum Absturz der Anwendung führen, sondern zum automatischen Wechsel des Mediums, oder aber zu einer adäquaten Fehlermeldung. Das korrekte Verhalten ist dabei wiederum durch einen Massentest überprüfbar [My91]. Zeittest Beim Zeittest soll das Zeitverhalten als Leistungsmerkmal eines Software-Produktes überprüft werden. Das Zeitverhalten bzw. die Zeitanforderungen sind dem Pflichtenheft zu entnehmen. Die einzelnen Anforderungen können sich auf das Antwortzeitverhalten und die Durchsatzraten des Software-Produktes bei normaler Arbeitslast und Konfiguration beziehen. Als Synonym für diesen Test wird auch der Begriff Performance-Test verwendet [My91; Al94]. Besonderes Augenmerk ist auf eine möglichst realistische Simulation der realen Auslastung bezüglich Anzahl der Benutzer, Datenmengen, Netzwerkverkehr etc. zu richten. Arbeiten im laufenden Betrieb mehrere Personen gleichzeitig mit einer Software, so wird diese folglich stärker beansprucht. Jeder Benutzer wiederum hat ein eigenes Arbeitsverhalten, eine individuelle Denkzeit und gibt Befehle in anderer Reihenfolge ein. Ähnliche Überlegungen sind für parallel durch den Benutzer ausgeführte Anwendungen zu machen, welche die Leistung der Software beeinflussen könnten. Eine realitätsnahe Situation zu erzeugen ist eine komplexe und schwierige 13 Kapitel 3: Methoden, Testverfahren und Werkzeuge Aufgabe. Die in Kap. 3.3 vorgestellten Werkzeuge geben dem Tester dazu weitreichende Hilfestellungen. Die Test-Treiber und Tools bedienen sich dabei an Zufallskomponenten und Streuungen, um das Verhalten der Benutzer, den Netzwerkverkehr etc. möglichst realistisch nachzubilden. Mittelwerte für Denkzeiten und entsprechende Varianzen können dabei verschiedenste Benutzergruppen und Situationen simulieren. Zudem übernehmen die Test-Treiber gleichzeitig die Messung der entsprechenden Antwortzeiten und des Durchsatzes [HU00]. Auch für die Entwicklung von Testfällen zum Zeitverhalten lassen sich die notwendigen Informationen aus dem Pflichtenheft einer Software entnehmen. So könnte eine Anforderung eines Flugbuchungssystems lauten, dass die Antwortzeit für Buchungen in 40% der Fälle nicht schlechter als 5 Sekunden, in 80% der Fälle nicht schlechter als 15 Sekunden und nie schlechter als 30 Sekunden sein dürfen. Um solche Wahrscheinlichkeiten garantieren zu können, müssen große Mengen passender Buchungsdaten bzw. Datensätze generiert werden, mit denen das Buchungssystem konfrontiert werden kann. Für jede Buchung wird dann die Zeit gemessen und festgehalten. Durch umfangreiche Testreihen können dann aussagekräftige Statistiken gewonnen werden [HU00]. Zur übersichtlichen Darstellung der Ergebnisse können tabellarische Auswertungen verwendet werden. Sie enthalten die Funktionsnamen, maximal erlaubte Antwortzeiten und gemessene Antwortzeiten. Die Überprüfung des Zeitverhaltens sollte mit den maximal erlaubten Datenmengen aus dem Massentest durchgeführt werden. So kann gewährleistet werden, dass die Zeiten auch bei höherer Auslastung des Gesamtsystems noch garantiert sind. Lasttest Die Sicherstellung der Leistungsfähigkeit im erlaubten Grenzbereich des SoftwareProduktes soll der Lasttest gewährleisten. Insbesondere die Leistungsmerkmale Zuverlässigkeit und Robustheit werden auf diese Weise geprüft. Der Unterschied zum Zeittest besteht darin, dass nicht etwa eine normale Arbeitssituation vorausgesetzt wird, sondern das System bezüglich Benutzeranzahl, Datenmengen, Netzwerkverkehr etc. an seinen Anforderungsgrenzen betrieben wird. Auch bei starker Auslastung sollen Antwortzeiten und Durchsatzraten möglichst innerhalb eines akzeptablen Bereiches liegen. Auch für diesen Test ist eine möglichst realistische Nachbildung der Arbeitssituation des Software-Produktes nötig. Wie bereits beim Zeittest können Test-Treiber und Tools zur Hilfe eingesetzt werden, welche die zu prüfenden Situationen mit den geforderten Konfigurationen und Belastungen simulieren. Tools, wie der S_aturn Lasttreiber, ermöglichen komfortable Einstellungsmöglichkeiten einer geforderten Last. Auch hier 14 Kapitel 3: Methoden, Testverfahren und Werkzeuge ist es wichtig, die Konfiguration der Test-Treiber sehr genau zu planen und durchzuführen, um einen hohen Grad an Realismus zu gewährleisten. Neben der Prüfung des Software-Produktes im Grenzbereich werden beim Lasttest Situationen getestet. So gilt es im Rahmen der Robustheit zu kontrollieren, wie das Produkt auf unerwartete, im falschen Format vorliegende Daten, z. B. an den Importschnittstellen, reagiert. Auch die Reaktion auf den Ausfall oder die Nichtverfügbarkeit bestimmter Soft- und Hardwarekomponenten sind zu prüfen. Systemzusammenbrüche, unverständliche Fehlermeldungen und Endlos-Antwortzeiten sind auf diese Weise zu lokalisieren und zu eliminieren [Ba98; HU00; My91]. Beispiele für den Lasttest lassen sich wiederum aus den Anforderungen im Pflichtenheft ableiten. Ist festgelegt, dass das System auch noch arbeitsfähig sein soll, wenn ein bestimmtes Modul ausfällt oder stark belastet wird, so gilt es, dies mit dem Lasttest zu überprüfen. Soll eine Buchhaltungssoftware auf Rechnungsdateien zugreifen und diese auslesen, so könnte überprüft werden, wie sich das System verhält, wenn die Dateien sehr groß oder gar nicht vorhanden sind. Angemessene Fehlermeldungen sollten Benutzer auf die Situation hinweisen und Abstürze vermieden werden [Ba98]. Auch die Überprüfung der Funktionsfähigkeit bei überdurchschnittlicher Prozessor- oder Netzwerkauslastung können Elemente des Lasttests sein. Mit Hilfe von Werkzeugen, wie dem in Kap 3.3 vorgestellten S_aturn Lasttreiber [Sa04], können entsprechende Situationen definiert, überprüft und ausgewertet werden. Stresstest Der letzte Teiltest des Leistungstest ist der Stresstest. Im Vergleich zum Lasttest werden dabei die Belastungsgrenzen des Software-Produktes bewusst überschritten. Auf diese Weise soll die Zuverlässigkeit und vor allem die Robustheit in Extremfällen geprüft werden. Es können im Rahmen dieses Tests bestimmte Ressourcen entzogen, Benutzerzahlen über die maximal mögliche gesteigert, sowie unnötig große Datenmengen eingesetzt werden. Dieser Test kann nur durch den Einsatz von Test-Treibern und Tools effizient realisiert werden. Können einzelne Module noch einzeln abgeschaltet und Ressourcen entzogen werden, so ist die Simulation einer großen Benutzerzahl und die Generierung von großen Datenmengen nur durch Tool-Unterstützung sinnvoll lösbar [Al94; Ba98]. Die Last des Systems wird dabei schrittweise gesteigert, bis es zu Abstürzen oder Fehlfunktionen kommt. Auf diese Weise können lastabhängige Fehler wie Race Conditions oder Deadlocks aufgefunden werden [Gö01]. 15 Kapitel 3: Methoden, Testverfahren und Werkzeuge Die Anforderungen aus dem Pflichtenheft sind im Rahmen des Stresstests bewusst zu überschreiten. Ist z. B. für die Studentenverwaltung festgelegt worden, dass sie maximal 100.000 Studenten und 5.000 Vorlesungen handhaben können sollte, muss das System weitaus größeren Datenvolumen ausgesetzt werden [Ba98]. Auch Multi-User-Systeme können mit mehr Benutzern als maximal vorgesehen betrieben werden, um Änderungen des Antwortzeit- und Leistungsverhaltens des Systems in Extremfällen zu überprüfen und eventuell zu verbessern [Ta02]. Um Web-Anwendungen zu testen, können Zeiten zwischen Transaktionen gekürzt werden, das heißt, die Bedenkzeit der Benutzer wird ignoriert, um die Belastung zu erhöhen. So kann die maximale Anzahl an Anfragen, die eine Web-Applikation in einer bestimmten Zeit bewältigen kann, und der Punkt, an dem die Applikation zusammenbricht, festgestellt werden. Tools wie OpenSTA in Kap. 3.3 oder das Microsoft Web Application Stress Tool (WAS) [Ms04] unterstützen eine leichte Simulation einer beliebigen Anzahl von Benutzern. Anwender können somit durch den Entwickler vor gefährlichen Situationen im realen Betrieb gewarnt und die Grenzen der Software genau ausgetestet werden. 3.3 Testtools Merkmal / Produkt S_aturn RUBIS OpenSTA Weitere... Testbarer Multi-User-System, Internetauktion Webanwendung Datenbanken, Anwendungstyp Webanwendung, Webanwendungen, Netzwerk Arbeitsplatzsoftware, Netzwerk,... Ja Individuelles eingeschränkt Ja unterschiedlich Benutzerverhalten einstellbar Auswertung Grafiken, Tabellen, Grafiken, Tabellen, Grafiken, Tabellen, Grafiken, Tabellen, Protokolldateien Protokolldateien Protokolldateien Protokolldateien,... Tabelle 1: Übersicht der Merkmale unterschiedlicher Testtools. Im letzten Teil dieser Seminararbeit werden drei Werkzeuge zur Unterstützung des Leistungstestprozesses exemplarisch dargestellt. Auf dem Markt existiert eine Vielzahl an Tools zur Messung von Leistung, deren vollständige Vorstellung hier zu umfangreich ist [Pt04]. Es werden jedoch ähnliche Grundfunktionen bereitgestellt, so dass die Beschränkung auf den S_aturn Lasttreiber, das Rice-University-BiddingSystem (RUBIS) Projekt und OpenSTA ausreichend ist. Erst sie ermöglichen einen 16 Kapitel 3: Methoden, Testverfahren und Werkzeuge kosten- und zeiteffizienten Test von Software. Tabelle 1 gibt eine Übersicht über die Merkmale der einzelnen vorgestellten Testtools. S_aturn Lasttreiber Der Lasttreiber soll überprüfen, inwieweit die Leistung eines zu vermessenden Systems bei geforderten Belastungen den Anforderungen aus z. B. dem Pflichtenheft genügt. Die Messungen werden streng nach der DIN 66273 durchgeführt, so dass sie sowohl reproduzierbar, vergleichbar, als auch durch den Endnutzer selbst nachvollziehbar sind. Durch Simulation können mit S_aturn vor allem Client / Server Systeme, verteilte Anwendungen und Multi-User-Systeme getestet werden. Realistische Testszenarien können durch anpassbare Benutzerzahlen, Benutzerverhalten und Auslastungen definiert und modelliert werden. Die Messung erfolgt dann nach standardisierten Kriterien. In der Auswertung können verschiedene Analysen und Korrelationen betrachtet werden [HU00; Sa04]. S_aturn sieht das zu testende System als Black-Box an und erfordert keine Änderungen des Codes zur Durchführung von Messreihen. Zu diesem Zweck werden die Arbeitsschritte der Benutzer eines Systems simuliert. Die Anzahl der Benutzer kann dabei in die Tausend gehen, wobei Anwendungsprofile, Benutzerverhalten und individuelle Eingaben genau festgelegt werden können. Die einzelnen Aufträge, die dem System durch die simulierten Benutzer übergeben werden, werden durch Manuskripte mit den notwendigen Tastatureingaben definiert. Sie beschreiben die Eingaben an der Benutzerschnittstelle. Dazu können Zeitvorgaben für das Benutzerverhalten ergänzt werden, welche das Warten auf Ergebnisse am Bildschirm, Denkpausen, Arbeitspausen oder andere Tätigkeiten simulieren. Zur Vereinfachung können Benutzergruppen gebildet werden, die gleichartige Aufträge senden und gleichartiges Zeitverhalten an den Tag legen. Um nicht alle Aufträge synchron in der gleichen Reihenfolge zu senden, wird die Auftragsreihenfolge zufällig gemischt. Dazu sind Mittelwerte und Streuungen anzugeben. Die Tatsache, dass manche Aufträge nur in einer bestimmten Reihenfolge ausgeführt werden können, wird durch die Bildung von Auftragsketten berücksichtigt. Beobachtungsfunktionen ermöglichen zur Vereinfachung der Festlegung des Benutzerverhaltens auch die Aufzeichnung der Arbeitsvorgänge realer Benutzer, welche dann einfach vervielfältigt werden kann. Das Testtool selber läuft als Multithreaded-Multiuser-Applikation auf einem Unix- oder Linux-System. Es simuliert die oben beschriebenen Benutzer mit ihren spezifischen Verhaltensweisen und sendet die Anfragen der simulierten Benutzer an das zu testende Zielsystem. Zur Kommunikation mit dem Zielsystem wird auf TCP/IP und Standarddienste oder Client/Server-Protokolle zurückgegriffen. Der Testreiber wird dazu über ein Netzwerk mit dem Testobjekt verbunden [Sa02]. 17 Kapitel 3: Methoden, Testverfahren und Werkzeuge Während der Messung wird für jeden Benutzer ein Recordfile erzeugt, das sowohl die Datenströme zum und vom System, als auch dazugehörige Zeitstempel enthält. Danach können Größen zur Leistungsbewertung, wie z. B. Durchsatz, Termintreue oder Antwortzeiten, ausgewertet und dargestellt werden. Neben der Darstellung in Tabellen, können Zusammenhänge und Korrelationen grafisch abgebildet werden. Je nach Bedarf können die ermittelten Größen dazu in Relation gebracht werden. Weitere Größen dienen der Überprüfung der statistischen Qualität der Messungen, dies beinhaltet ob alle Mittelwerte eingehalten, Auftragsketten richtig ausgeführt und Denkzeiten eingehalten worden sind. RUBIS Project Das Rice-University-Bidding-System (RUBIS) Projekt [RU04] ist ein Werkzeug, welches den Anwender dabei unterstützt, Web-Anwendungen auf ihr Leistungsverhalten zu untersuchen. Dabei stehen Auktionsseiten im Stile von Ebay im Fokus des Projektes. Ziel ist es, das Leistungsverhalten der zu testenden Website im Sinne eines Benchmarks zu messen, um Verbesserungsmöglichkeiten im Anwendungsdesign und der Server-Wahl aufzuzeigen. Der Benchmark simuliert zu diesem Zwecke unterschiedliches Benutzerverhalten beim Nutzen der Hauptfunktionalitäten einer Auktionsseite. Dazu gehören Funktionen wie das Bieten, das Verkaufen, sowie das Suchen und Sortieren von Gegenständen nach Kategorie, Name oder Region. Auch können Kommentare hinterlassen, die Bewertung von Benutzern vorgenommen, sowie die Gebotsverläufe verschiedener Auktionen eingesehen werden. Es können drei verschiedene Benutzer-Sessions unterschieden werden. Besucher-Sessions bedürfen keiner Registrierung und können lediglich innerhalb der Seiten der Anwendung Suchen und Browsen. Käufer- und VerkäuferSessions sind nur für simulierte Benutzer möglich, die in der Datenbank registriert sind. Sie können die weiteren, oben aufgeführten Funktionen nutzen, wie z. B. Gegenstände kaufen oder verkaufen. Jeder simulierte Benutzer führt seine Interaktionen dabei in einer zufälligen Reihenfolge aus, die durch eine Zustands-Übergangs-Matrix festgelegt wird. Denk- und Wartezeiten zwischen den einzelnen Interaktionen werden über eine Negativ-Exponential-Verteilung ermittelt. Die Anzahl der registrierten Benutzer kann über eine Million betragen. Zur realistischen Simulation der Server-Belastungen können weiterhin zwei verschiedene Arbeitslasten definiert werden. Der so genannte BrowsingMix simuliert Nutzer, die lediglich Informationen abrufen und über die Seiten surfen. Der Gebots-Mix enthält 15% Transaktionen, die einen schreibenden Zugriff auf die hinterlegte Datenbank erfordern. Die Datenbank besteht aus 7 Tabellen, welche unter anderem 33.000 zum Verkauf angebotene Gegenstände, 500.000 abgelaufene Auktionen, über 330.000 Gebote und ca. eine Million registrierte Benutzer enthält. Die 18 Kapitel 3: Methoden, Testverfahren und Werkzeuge Kommunikation wird über persistente HTTP-Verbindungen realisiert, die jeder simulierte Nutzer am Server öffnet. Der Benchmark selbst ist in den Technologien PHP, Java Servlets und EJB erhältlich. Um die Leistung der verschiedenen Technologien vergleichen zu können, werden jeweils die gleichen SQL-Anfragen verwendet [RU04]. Nach der Durchführung ausreichender Messungen können die gewonnenen Daten analysiert werden. Größen wie der Durchsatz oder die CPU-Auslastung können in Zusammenhang mit der Benutzer- und Transaktionszahl grafisch oder tabellarisch dargestellt werden [Ce03]. OpenSTA Ein Tool zum Testen allgemeiner Web-Anwendungen wird durch das Open-SourceProdukt Open-System-Testing-Architecture (OpenSTA) [OS04] angeboten. Dieses Werkzeug wurde speziell zur Messung des Leistungsverhaltens entwickelt und kann, wie die oben beschriebenen Tools, ebenfalls Benutzer simulieren und realistische Lasten erzeugen. Grundlage von OpenSTA stellt eine CORBA-Architektur dar [Kl03]. Zur Simulation von Benutzerverhalten werden Skripte eingesetzt, welche die jeweilige Vorgehensweise eines Benutzer beschreiben. Sie enthalten Informationen über die gemachten Eingaben, die Wartezeiten und das Navigationsverhalten. Erzeugt werden die Skripte durch das Aufzeichnen des Verhaltens eines realen Benutzers an seinem Internetbrowser oder direkt über die Script-Control-Language (SCL). Bei einer Aufzeichnung des Verhaltens liest ein Skripteditor alle HTTP-Daten, die vom Browser während einer „Muster-Session“ gesendet und empfangen werden mit und protokolliert die Wartezeiten, welche z. B. für die benötigte Zeit zum Ausfüllen eines Formulars einer Internetseite stehen könnten. Ein solches Skript kann dann beliebig modifiziert und vervielfältigt werden, um eine Vielzahl von Benutzern mit unterschiedlichem Verhalten zu simulieren. Während des Tests werden eine Vielzahl von Ergebnissen und Messwerten gesammelt, die eine umfassende Analyse des Leistungsverhaltens ermöglichen. Neben Timern zur Messung von Antwort- und Bearbeitungszeiten, die selber in entsprechende Skripte integriert werden können, gibt es Möglichkeiten, Daten des Simple Network Management Protocol (SNMP) oder des Windows-Leistungs-Monitors zu protokollieren. Dabei wird auch die direkte Verfolgung der Messung durch MonitoringProzesse unterstützt. Alle während des Tests gesammelten Daten werden zur Auswertung in Dateien abgespeichert und können später grafisch ausgegeben oder zur weiteren Analyse mit Tabellenkalkulationsprogrammen als CSV-Dateien exportiert werden [Bi04]. 19 Kapitel 4: Relevanz der Leistungsüberprüfung 4 Relevanz der Leistungsüberprüfung Die Qualitätsanforderungen an Software-Systeme steigen mit der zunehmenden Verbreitung und dem Einsatz von Software zur Unterstützung verantwortungsvoller Aufgaben immer weiter an. Die Überprüfung und Gewährleistung von SoftwareQualität stellt somit eine wichtige Komponente des Software-Entwicklungsprozesses dar. Als ein wichtiges Qualitätsmerkmal wird im Rahmen dieser Arbeit die Leistung herausgestellt. Um Leistung messen zu können, wird eine Aufteilung in Kenngrößen wie die Antwortzeit, den Durchsatz oder die Auslastung vorgenommen. Die einzelnen Kenngrößen können durch verschiedene Methoden der Leistungsbewertung erfasst werden. Mit den analytischen Modellen, der direkten Messung und der Simulation stehen drei grundsätzliche Methoden zur Leistungsbewertung zur Verfügung. Die Auswahl einer konkreten Methode kann durch einen Aufwand / Nutzen Vergleich durchgeführt werden. Die ausführliche Betrachtung des Leistungstest und einiger ihn unterstützender Testtools hat den Schwerpunkt dieser Arbeit auf den Bereich der Simulation gelegt. Der Leistungstest als Untertest des Systemtests ist allein als eine von vielen notwendigen Überprüfungen während der Software-Entwicklung anzusehen. Da das zu testende System lediglich als Black-Box betrachtet wird, sind weitere Qualitätsüberprüfungen auf Modulebene mit genauem Bezug auf interne Programmverläufe im Zuge der Qualitätssicherung unabdingbar. 20 5 Literaturverzeichnis [Al94] Alper, M.: Professionelle Softwaretests. Praxis der Qualitätsoptimierung kommerzieller Software. Braunschweig 1994. [Ba03] Balzert, H.: Software-Qualitätssicherung. 6 Produktqualität–Systeme: System- und Abnahmetest. 2003. http://www.inf.fu-berlin.de/inst/agse/teaching/V-SWT-2003/66_2LE_19tw.pdf. Abrufdatum 19.03.2004. [Ba98] Balzert, H.: Lehrbuch der Software-Technik. Band 2. Heidelberg u. a. 1998. [Bi04] Bisson, S.: Saving software in distress. http://www.appdevadvisor.co.uk/Downloads/ADA7_1/Bisson7_1.pdf. Abrufdatum 15.03.2004. [BR03] Bennicke, M.; Rust, H.: Software-Produktanalyse. 2003. http://wwwsst.informatik.tu-cottbus.de/~db/doc/SoftwareEngineering/SoftwareProduktanalyse_Metriken_QA.pdf. Abrufdatum 19.03.2004. [Ce03] Cecchet, E. et. al.: Performance Comparison of Middleware Architectures for Generating Dynamic Web Content. 2003. http://rubis.objectweb.org/download/Middleware-2003.pdf. Abrufdatum 15.03.2004. [DB04] o. V.: Die MySQL-Benchmark-Suite. 2004. http://www.mysql.de/doc/de/MySQL_Benchmarks.html. Abrufdatum 15.03.2004. [Fe03] Fey, D.: Leistungsbewertung. 2003. http://www2.informatik.unijena.de/~fey/ra1ws03/folien/ra1_kap5_1bis36.pdf. Abrufdatum 15.03.2004. [Fr97] Frühauf, K.; Ludewig, J.; Sandmayr, H.: Software-Prüfung. Eine Anleitung zum Test und zur Inspektion. Zürich 1997. [Gö01] Göschel, S.: Testen verteilter Applikationen. Eine Einführung. 2001. http://www.javausergroup.at/events/testDistrib.pdf. Abrufdatum 15.03.2004. [He94] Hennessy, J.; Patterson, D.: Rechnerarchitektur. Analyse, Entwurf, Implementierung, Bewertung. San Mateo 1994. [HU00] Huber, M.; Ultsch, H.: Performance-Untersuchung mit dem Lasttreiber s_aturn nach DIN 66273 / ISO 14756. 2000. http://www-wi.cs.unimagdeburg.de/pe2000/papers/ultsch.pdf. Abrufdatum 19.03.2004. [Kl03] Klosterberg, M.: EXCELSIS Open Source Testfactory – Kosten senken, Qualität steigern. 2003. http://www.excelsisnet.com/opencms/opencms/system/galleries/download/ whitepapers_pdf/WP_OpenSourceTestfactory.pdf. Abrufdatum 15.03.2004. [LZ99] o. V.: Bewertung der Leistung und Zuverlässigkeit. 1999. http://www3.informatik.unierlangen.de/Lehre/OTRS_I/WS1999/folien/OTR16H.pdf. Abrufdatum 19.03.2004. [MF03] Müller-Clostermann, B.; Flüs, C.: Kapazitätsplanung und Leistungsbewertung. 2003. http://www.icb.uniessen.de/SysMod/lehre/CapPlan/CapPDF/CapPlanB_2003.pdf. Abrufdatum 15.03.2004. [Ms04] o. V.: MS Web Application Stress Tool. 2004. http://www.microsoft.com/technet/itsolutions/intranet/downloads/webstres. mspx. Abrufdatum 15.03.2004. [My91] Myers, G.: Methodisches Testen von Programmen. 4. Aufl., München 1991. [Nf03] o. V.: Nicht-funktionale Testmethoden. 2003. http://qse.ifs.tuwien.ac.at/courses/QS/ws0304/10S_Nonfunkt_wid_2003112 6.pdf. Abrufdatum 20.03.2004. [OS04] o. V.: Open System Testing Architecure - OpenSTA. 2004. http://www.opensta.org/. Abrufdatum 15.03.2004. [Pt04] o. V.: Performance test tools. http://www.opensourcetesting.org/performance.php. Abrufdatum 15.03.2004. [RU04] o. V.: RUBiS Rice University Bidding System. 2004. http://rubis.objectweb.org/. Abrufdatum 18.03.2004. [Sa02] Zott + Co GmbhH: s_aturn-Report Lasttest im Internet. 2002. http://www.zott.net/z-doc_de_demo_testbericht.pdf. Abrufdatum 15.03.2004. [Sa04] Zott + Co GmbhH : s_aturn 8000. Der professionelle Performance- und Lasttest. http://www.zott.net/doc/z-wp_de-saturn.pdf. Abrufdatum 15.03.2004. [Ta02] Thaller, E.: Software-Test. Verifikation und Validation. Hannover 2002. [Tr93] Trauboth, H.: Software-Qualitätssicherung. Konstruktive und analytische Maßnahmen. München u. a. 1993.