Lasttest (Load Testing) Konzept und Tools

Lasttest Konzept und Tools

Definition: Lasttests / Performancetests

Der Lasttest (engl. Load Testing) ist eine der wichtigsten (nicht funktionalen) Softwaretests, um die Belastbarkeit von Systemen wie z.B. Web-Applikationen zu prüfen. In diesem Artikel gehen wir näher auf diese Testart und die verschiedenen verfügbaren Tools wie JMeter, Grinder, HP Loadrunner, Silk Performer ein.

Lasttest

Jedes Softwaresystem ist für eine bestimmte Arbeitslast konzipiert. Manche sollen mehreren Nutzern gleichzeitig dienen, wie z.B. Content-Management-Systeme. Andere müssen eine Flut von Daten rechtzeitig bearbeiten können. Ein Ausfall solcher Systeme kann teils erheblichen Schaden oder finanzielle Verluste verursachen, weswegen es sehr wichtig ist, dass sie vor ihrem Einsatz Lasttests unterzogen werden.

In einem Lasttest werden im zu testenden System, wie der Name schon sagt, Lasten erzeugt. Ziel ist es zu sehen, ob das System diese Last bewältigen kann, ob z.B. eine Webseite mehreren Besuchern gleichzeitig in akzeptabler Zeit Antworten schicken kann oder ob ein Textverarbeitungsprogramm eine große Datei öffnen kann.

Es gibt verschiedene Arten von Lasttests. Allerdings sind diese nicht immer einheitlich definiert. Allgemein können Lasttests aber in vier Kategorien zusammengefasst werden:

Kann mein System das, was es soll?

Diese Art von Test ist das, was meistens gemeint ist, wenn man schlicht vom Lasttest spricht. Das System wird daraufhin überprüft, ob es die in den Anforderungen genannten Lasten bewältigen kann. Zum Beispiel: Angenommen, wir testen eine Web-Applikation, die gleichzeitig bis zu 100 Nutzer bedienen und Antworten innerhalb von 3 Sekunden senden soll. In einem Lasttest würde man diese Anzahl von Nutzern simulieren und überprüfen, ob die Antwortzeiten die genannte Grenze nicht überschreiten.

Was kann mein System?

Beim Kapazitätentest geht man einen Schritt weiter. Das System wird einem Test unterzogen, der dazu dient, seine maximalen Kapazitäten zu bestimmen. In unserem vorherigen Beispiel würde man die Web-Applikation nun nicht mit hundert Usern, sondern z.B. mit 110, dann mit 120 usw. Usern testen, bis die in den Anforderungen spezifizierte Antwortzeit von 3 Sekunden überschritten ist.

Was passiert, wenn ich mein System überlaste?

Beim Stresstest geht man noch einen Schritt weiter – das System wird unter eine Last gestellt, die es so nicht stemmen kann. Ziel ist es, das Verhalten des Systems unter extremen Belastungen zu überprüfen.
Nehmen wir an, der Kapazitätentest im vorherigen Beispiel hätte ergeben, dass die Web-Applikation maximal 150 simultane Nutzer bedienen kann, ohne dass die Antwortzeiten die vorgegebenen 3 Sekunden überschreiten. Nun wird die Applikation mit 200, 300 oder mehr Nutzern getestet. Wie lange sind die Antwortzeiten? Wann stürzt die Applikation ab? Wie wird mit so einem Absturz umgegangen? Diese und ähnliche Fragen versucht der Stresstest zu beantworten.

Kann mein System auch dauerhaft arbeiten?

Viele Softwaresysteme arbeiten rund um die Uhr. Bisher beschrieben wir Lasttests, die über einen kurzen Zeitraum ausgeführt wurden. Es ist aber wichtig zu überprüfen, ob das System auch über einen längeren Zeitraum korrekt funktioniert, ob z.B. Speicherlecks vermieden werden. Dies herauszufinden ist das Ziel des Dauerlasttests. Oft laufen diese Tests über einen oder mehrere Tage.
Beispiel: Unsere Web-Applikation soll 24 Stunden am Tag verfügbar sein. In einem Dauerlasttest, kombiniert mit einem „Standard“-Lasttest, wird nun überprüft, ob das System 100 User gleichzeitig über 36 Stunden bedienen kann.

Damit hätten wir die Hauptarten vom Load Testing beschrieben. Wir möchten nun kurz die verschiedenen Tools vorstellen, mit denen man Lasttests durchführen kann.

Performancetest / Lasttest Tools

Allgemein kann man die verfügbaren Performancetest / Lasttest Tools in zwei Kategorien unterteilen.
Es gibt einerseits die kostenlosen Open-Source-Projekte. Oft sind sie leicht erweiterbar und damit sehr flexibel. Die populärsten unter ihnen haben eine große Community, was dazu führt, dass der Software viele Plugins zur Verfügung stehen. Der Nachteil ist, dass bei diesen Programmen oft die Einarbeitungszeit länger ist und es keinen professionellen Support gibt.

In der zweiten Kategorie der Lasttest-Tools sind die kommerziellen Programme. Oft gibt es individuelle Betreuung und eine leichtere Einarbeitung. Der Nachteil sind die teilweise hohen Anschaffungskosten von einigen hundert bis mehreren tausend Euro.

JMeter - Performance Monitoring Tool

Die in Java geschriebene Open-Source-Software von Apache ist die wohl populärste unter den kostenlosen Last- Performace-Testtools. Ursprünglich wurde sie für Webanwendungen konzipiert, was auch weiterhin ihr Fokus ist. Sie wurde aber mittlerweile erweitert und bietet nun auch die Möglichkeit, andere Software zu testen, wie z.B. Datenbanken oder Message Oriented Middleware. JMeter unterstützt verschiedene Protokolle wie HTTP, HTTPS, SOAP, REST, FTP, JDBC, LDAP, JMS, SMTP und POP3.

Grinder - Performancetest-, Lasttest-Framework

Ebenfalls Open Source und sehr beliebt. Es ist Jython und Clojure geschrieben und hat einen starken Fokus auf das Testen von Software, die mit Java geschrieben ist.

HP LoadRunner

Das wohl bekannteste unter den kommerziellen Load-Testing-Tools von Hewlett-Packard ist ein sehr umfangreiches aber auch teures Performancetest / Lasttest Tool.

Silk Performer

Ein ebenfalls sehr umfangreiches Performancetest / Lasttest Tool von Micro Focus Borland.

Load Testing ist heute in vielen Softwareprojekten unverzichtbar. Mit den richtigen Werkzeugen können Softwaretester diese Tests auf ihren Testobjekten erfolgreich ausführen.

Tags: