Load Testing

Load Testing

Unter einem Lasttest (Lehnübersetzung von Performancetest) versteht man einen Softwaretest, mit dem eine zu erwartende, auch extreme Last auf dem laufenden System erzeugt und das Verhalten desselbigen beobachtet und untersucht wird. Dazu kann eine Simulation eingesetzt werden. Ziel dabei ist es

  1. Fehler aufzudecken, die im funktional orientierten Systemtest/Integrationstest nicht gefunden wurden
  2. Erfüllung nichtfunktionaler Anforderungen, wie z. B. geforderte Antwortzeiten sowie Mengenverarbeitungen, für den Produktivbetrieb nachzuweisen.

Der Lasttest ist demnach dem funktionalen Test nachgelagert, d. h. das (Teil-)System muss in einem funktional stabilen Zustand sein, um überhaupt auf Lastbewältigung testen zu können.

Inhaltsverzeichnis

Ausprägungen

Die Last kann darin bestehen, dass Funktionen sehr schnell hintereinander ausgeführt werden, oder dass parallele Aktivitäten von virtuellen Benutzern (Multiuser, vUser) ausgeführt werden. In der Regel wird dabei direkt auf Protokollebene (Netzwerkprotokoll) gearbeitet.

Grundsätzlich lässt sich unterscheiden zwischen (1) Performancemessungen und (2) Lasttests. Performancemessungen wiederholen ausgewählte Testfälle bzw. Einzelprozesse aus dem Systemtest unter einer Grundlast: dadurch werden einzelne Funktionen auf ihre Performanzeigenschaften geprüft, d. h. sämtliche User führen den gleichen Prozess aus, wodurch die Skalierbarkeit für die Einzelfunktion(en) getestet wird. Man spricht in dem Zusammenhang auch von Transaktionen. Lasttests im engeren Sinne testen gesamte Prozessketten sowie den Prozessmix auf Performanz, d. h. die Verknüpfungen der Einzelprozesse; damit simulieren sie konkrete Vorgänge aus dem tatsächlichen Wirkbetrieb und stellen einen nicht zu unterschätzenden Schritt zur Erreichung der Wirkbetriebstauglichkeit dar. Auch hier ist die Skalierbarkeit von entscheidender Bedeutung, jedoch jetzt für den gesamten Prozessmix. Eine dabei häufige auftretende Fehlerwirkung sind Deadlocks beim Datenbankzugriff, die sonst nur schwer testbar sind.

Wird das System bewusst über die definierte Lastgrenze hinaus beansprucht, spricht man vom Stresstest. Damit werden folgende Fragestellungen untersucht:

  • Wie ändert sich das Antwortzeitverhalten?
  • Kann mit dem System überhaupt noch gearbeitet werden?
  • Zeigt das System undefiniertes Verhalten (z. B. Absturz)?
  • Kommt es zu Dateninkonsistenz?
  • Geht das System nach Rückgang der Überlast wieder in den normalen Bereich zurück?

Im Gegensatz dazu dient der Niederlasttest, der absichtlich mit einer geringen Intensität betrieben wird, der Untersuchung des Interaktionsverhaltens der virtuellen Benutzer und des von ihnen erzeugten Nachrichtenverkehrs auf dem System.

Einen Lasttest über einen längeren Zeitraum (z. B. 48–72 Stunden) nennt man Dauerlasttest; er dient in erster Linie zur Aufdeckung von Speicherlecks.

Die destruktivste Form eines Lasttests ist der Fail-Over-Test. Dabei geht es um die Überprüfung des Systemverhaltens unter Last bei Ausfall von Systemkomponenten. Im Idealfall werden damit Notfallszenarien überprüft, wie z. B. das rechtzeitige Zuschalten von Zusatzressourcen, um einen totalen Systemausfall zu verhindern.

Durchführung

Vorbereitung

Das Testverhalten wird meist über eine Skriptsprache definiert, bei vielen Tools kann man es auch - ähnlich einem Makro - über einen Webbrowser „aufnehmen“. Dies wird zumeist über einen Proxy realisiert, welcher die Requests, etc. in die Skriptsprache übersetzt. Ein wichtiges Kriterium ist hier die Benutzerfreundlichkeit bei der Testerstellung, aber auch die Variabilität und die unterstützten Protokolle (HTTP, HTTPS etc.).

Testlauf

Im Testlauf wird mittels des erstellten Skriptes das aufgezeichnete Verhalten (eventuell ergänzt durch zufällige Elemente bzw. zählerabhängigen Variablen) in beliebig hoher Anzahl (Virtual Users) nebenläufig ausgeführt und somit die Anwendung unter Last gesetzt. Ein wichtiges Kriterium ist hierbei die maximal erzeugbare Last, sowie die Hardwareanforderungen, die damit einhergehen.

Sinnvoll ist auch die Möglichkeit, die Lasterzeugung auf mehrere Rechner zu verteilen, welches einige Tools anbieten. Hierdurch kann der Einfluss der Netzwerk-Kapazität, sowie der Hardware-Beschränkungen des lasterzeugenden Rechners, minimiert werden.

Während des Testlaufs sammelt das Tool möglichst viele Daten. Grundsätzlich geschieht dies direkt auf der Seite der lasterzeugenden Anwendung (Antwortzeiten, Errorcodes, etc.). Es kann jedoch auch modularisiert stattfinden (Hilfsprogramme z. B. auf dem Server der zu testenden Anwendung). Wichtigstes Kriterium ist hier, dass möglichst viele Möglichkeiten zur Sammlung verschiedener Daten geboten werden.

Auswertung

Zur Auswertung stehen meist gewisse Kennzahlen (z. B. Antwortzeit vs. Zeit, Timeouts vs. Benutzerzahl, etc.) in Logdateien bzw. zeitabhängigen Graphen zur Verfügung. Gute (meist kommerzielle) Tools bieten auch Möglichkeiten, z. B. über (Auto-)Korrelationsfunktionen, die Abhängigkeiten im Verhalten zu analysieren (z. B. hohe Antwortzeit vs. Aufruf einer bestimmten Seite, etc.).

Einige Tools bieten auch zusätzliche Möglichkeiten, um bestimmte Web-/Datenbank-Server (z. B. IIS, Apache, MSSQL) oder Application-Server (Tomcat, etc.) zu überwachen, um direkt Zusammenhänge (z. B. hohe Antwortzeit vs. Datenbankzugriffe) zu analysieren.

Normen

Als Orientierung für die Planung eines Last- und Performancetests ist die DIN 66273 ein geeigneter Ausgangspunkt. Diese ist in der internationalen Norm ISO 14756 enthalten und standardisiert Begriffe sowie Mess- und Bewertungsverfahren der Leistung von komplexen DV-Systemen.

Softwaretools

Zur Durchführung von Lasttests bieten sich sog. Lasttesttools an. Im Allgemeinen wird ein Lastserver installiert, der die Last auf das zu testende System erzeugt. Die Lasttesttools können entweder selbst hergestellt werden, oder man verwendet Standardsoftware, die eine Fülle an Funktionen und Auswertungsmöglichkeiten bietet.

Kommerzielle Anbieter

Kommerzielle Tools mit einer hohen Leistungsfähigkeit bewegen sich im Preisrahmen von € 5.000 bis ca. € 30.000 oder lassen sich für einmaligen Einsatz für etwa € 5.000 auch mieten.

  • Compuware
  • Empirix
  • Scapa Technologies
  • IBM Rational
  • Hewlett-Packard
  • Quotium
  • Segue
  • Proxy-Sniffer
  • WST
  • OPNET
  • Moniforce
  • Zott+Co GmbH - s_aturn

Freie Software

  • OpenSTA
  • The Grinder
  • BadBoy
  • JMeter
  • JaMonAPI - Java Performance Tuning und Scalability Measuring API
  • Selenium, Testsoftware für Web-Anwendungen
  • funkLoad Auf PyUnit basiertes Performance Framework für Web-Anwendungen

Weblinks

Literatur

  • Stefan Asböck: Load Testing for eConfidence. Segue Software Deutschland GmbH, Hamburg 2001.
  • Mike Loukides, Gian-Paolo Musumeci: System Performance Tuning. 2. Auflage. O'Reilly & Associates, Sebastopol 2002.

Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Load testing — is the process of creating demand on a system or device and measuring its response.In mechanical systems it refers to the testing of a system to certify it under the appropriate regulations (LOLER in the UK Lifting Operations and Lifting… …   Wikipedia

  • Dynamic load testing — of piles is a fast and effective method of assessing foundation bearing capacity that requires instrumenting a deep foundation with accelerometers and strain transducers and analyzing data collected by these sensors. The procedure is based on the …   Wikipedia

  • Load — may refer to:*Structural load, forces which are applied to a structure *Cargo, Freight, or Lading *The load of a mutual fund (see Mutual fund fees and expenses) *The load of an insurance contract, defined as the percent increase of the expected… …   Wikipedia

  • Load bank — A load bank is a device which develops an electrical load, applies the load to an electrical power source and converts or dissipates the resultant power output of the source. The purpose of a load bank is to accurately mimic the operational or… …   Wikipedia

  • load — 1. A departure from normal body content, as of water, salt, or heat; positive loads are quantities in excess of the normal; negative loads are quantities in deficit. 2. The quantity of a measurable …   Medical dictionary

  • Software performance testing — In software engineering, performance testing is testing that is performed, to determine how fast some aspect of a system performs under a particular workload. It can also serve to validate and verify other quality attributes of the system, such… …   Wikipedia

  • Cloud testing — is a form of software testing in which web applications use cloud computing environments (a cloud ) to simulate real world user traffic. Contents 1 Overview 2 Need for Cloud testing 2.1 Causes of performance degradation …   Wikipedia

  • System testing — of software or hardware is testing conducted on a complete, integrated system to evaluate the system s compliance with its specified requirements. System testing falls within the scope of black box testing, and as such, should require no… …   Wikipedia

  • Game testing — Part of a series on …   Wikipedia

  • Viral load — is a measure of the severity of a viral infection, and can be calculated by estimating the amount of virus in an involved body fluid. For example, it can be given in RNA copies per milliliter of blood plasma. Determination of viral load is part… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”