Image
Lasttest und Performancetest

Lasttest und Performancetest (Load Testing) - Konzept und Tools

🕒 Lesedauer: 10 Minuten

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

Stabilität und Verlässlichkeit mit dem Lasttest prüfen

Jedes Softwaresystem ist für eine bestimmte Arbeitslast konzipiert. Manche dieser Softwaresysteme sollen dabei mehreren Nutzern gleichzeitig dienen, wie es unter anderem bei Content-Management-Systemen der Fall ist. Andere müssen zusätzlich eine Flut von Daten rechtzeitig bearbeiten können. Ein Ausfall solcher Systeme kann teils erheblichen Schaden oder finanzielle Verluste verursachen. Deswegen ist es sehr wichtig, dass diese vor ihrem Einsatz einer Reihe von 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. Es wird beispielsweise getestet, ob eine Webseite mehreren Besuchern gleichzeitig in akzeptabler Zeit Antworten schicken kann oder ob ein Textverarbeitungsprogramm eine große Datei öffnen kann

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:

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? Heilt sich das System wieder von selbst, wenn der Test abgeschlossen ist? 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.

Die vier Arten von Lasttest

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

Kategorie 1: Der "klassische" Lasttest

Diese Art von Test ist gmemeint, wenn man schlicht vom Lasttest spricht. Die dahinterliegende Frage lautet "Kann mein System das, was es soll?". Das System wird daraufhin überprüft, ob es die in den Anforderungen genannten Lasten bewältigen kann. Ein kurzes 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.

Kategorie 2: Der Kapazitätentest

Beim Kapazitätentest geht man einen Schritt weiter. Hier wird gefragt "Was kann mein System?". 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 Usern, dann mit 120 usw. testen, bis die in den Anforderungen spezifizierte Antwortzeit von 3 Sekunden überschritten ist.

Kategorie 3: Der Stresstest

Beim Stresstest geht man noch einen Schritt weiter – das System wird unter eine Last gestellt, die es so nicht stemmen kann. Hier wird die Frage beantwortet "Was passiert, wenn ich mein System überlaste?". 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.

Kategorie 4: Der Dauerlasttest

Viele Softwaresysteme arbeiten rund um die Uhr. Von daher stellt sich auch die Frage "Kann mein System auch dauerhaft arbeiten?". 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.

Die Load Testing Tools

Nachdem wir nun die verschiedenen Arten von Lasttests beschrieben haben, stellen wir Ihnen nun kurz die verschiedenen Tools vor, mit denen man Lasttests durchführen kann.

Allgemein kann man die verfügbaren Performancetest bzw. 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.

Webinar: Continuous Performance Testing in DevOps (JMeter, GitHub Actions, AWS)

 

 

JMeter - Performance Monitoring Tool

Die in Java geschriebene Open-Source-Software JMeter 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 in Jython und Clojure geschrieben und hat einen starken Fokus auf dem Testen von Software, die mit Java geschrieben ist.

ReadyAPI von Smartbears (ehemals SoapUI Pro und LoadUI Pro)

Von dem früheren OpenSource Tool LoadUI bietet der Hersteller Smartbears nur noch eine kostenpflichtige Variante für funktionale, Sicherheits- und Last- & Performance Tests an. Inzwischen ist die Software stark auf API-Tests ausgerichtet. Dennoch lassen sich daraus auch Webseiten-Tests erstellen. Wobei der Hersteller für Webseiten-Tests das Cloudprodukt LoadNinja positioniert. Besonders für eine Integration in eine Jenkins CI/CD Pipeline bietet sich dieses Tool an.

LoadRunner Professional bzw. LoadRunner Enterprise von Micro Focus

(ehemals HP LoadRunner und Performance Center)

Das wohl bekannteste unter den kommerziellen Load-Testing-Tools von Micro Focus (ehem. Hewlett-Packard) ist ein sehr umfangreiches aber auch teures Werkzeug. Die Enterprise Lösung bietet eine bessere Kollaboration von Teams, um diese gemeinsam von einer zentralen Installation zu nutzen. In einem weiteren Artikel erläutern wir Ihnen die Funktionsweise, sowie die Vor- und Nachteile von HP LoadRunner.

Silk Performer von Micro Focus

(ehemals Segue Software / Borland Silk Performer)

Ein ebenfalls sehr umfangreiches Tool aus dem Hause Micro Focus. Inzwischen wird es als Einstiegslösung durch den Hersteller positioniert.

Cloud Load Testing Anbieter

Neben den selbst zu installierenden bzw. eigen gehosteten Systemen haben sich inzwischen eine ganze Reihe von Cloud-Anbieter platziert, die Plattformen zur Erstellung und Durchführung von Lasttests anbieten. Eines der größten Vorteile hierbei ist die leichte Skalierungsmöglichkeit, da alle Anbieter hierfür vorbereitet sind. So lassen sich Tests, die für kleine Lasten wie z.B. 100 Usern erstellt wurden in wenigen Schritten auf einige 10.000 Users um konfigurieren oder auch die Laufzeit verlängern. Inzwischen sind die Interfaces auch mit Grundverständnissen des Lasttests gut zu bedienen und schnell Erfolge zu erreichen.

Man darf sich aber nicht von den günstigen, meist kostenfreien Einstiegstarifen blenden lassen, denn diese sind für die meisten realistischen Szenarios nicht zu verwenden. Werden realistische Anzahl User, Bandbreiten, feste IPs, etc. benötigt, steigen die Kosten sehr schnell auf 4-stellige Beträge im Monat an.
 

Blazemeter

Das inzwischen zur CA Technologies gehörende Unternehmen ist einer der bekanntesten und wohl mit den meisten Funktionalitäten ausgestatteter Anbieter für Lasttests aus der Cloud. Er bietet neben den Lasttests auch funktionale Tests, Mock Services und API Testing an. Die Lasttest-Projekte sind mit JMeter kompatibel und lassen sich nach JMeter exportieren oder daraus importieren. Besonders hervorzuheben ist der Blog, der gute Tutorials rund um Lasttest mit JMeter bereitstellt. Neben einer kostenfreien Variante, die eigentlich nur zur Einarbeitung verwendet werden kann, starten die Tarife ab $99,- für 1000 User im Monat. Die Lasttestgeneratoren lassen sich von Rechenzentren aus aller Welt einrichten.

Octoperf

Ein recht junger auf JMeter basierender Anbieter für Cloud-Lasttests. Es lassen sich komfortabel die Projekte und Skripte erstellen und sehr einfach skalieren. Besonders hervorzuheben ist der persönliche Kontakt zum Support und die sehr guten Lösungszeiten der eigenen Anfragen. Das Preismodell lässt einen kostenfreien Einstieg zu und geht dann bei 99,- €/Monat für 1000 User los. Als weiteren Vorteil können die günstigen Reservierungen von statischen IP Adressen gesehen werden.

K6

Einen einfachen Einstieg in Lasttests bietet K6 mit der Browser-Erweiterung zum Aufzeichnen von Tests. Somit wird dadurch ein Teil der Entwicklungs-Tätigkeit dem Anwender abgenommen. Die Aufzeichnungen lassen sich beliebig in der Cloud zusammensetzen und zu Szenarios vereinen. Auch dieser Anbieter bietet einen kostenlosen Einstieg für 50 Tests an. In den Bereichen für realistische Szenarien ist hier aber schon für eine Team-Lizenz $ 424 pro Monat aufzuwenden, denn die mit $74 günstige Developer Lizenz reicht mit dem angebotenen Leistungsspektrum oftmals nicht aus.

Loadfocus

Einer der gängigen Namen im Cloud-Load-Testing ist Loadfocus. Auch dieser bietet neben Lasttests auch Services für UI Testing, Mobile Emulation und Visual Regression Testing an. Neben der eigenen Load Testing Oberfläche bietet dieser Anbieter auch die Integration eigener JMeter-Projekte an und lässt diese über die Plattform skalieren. Neben den eingeschränkten Gratis-Account bietet dieser Anbieter für geringes Budget von 59,- €/Monat 1000 User für die Lasttest an.

LoadNinja

Auch von Smartbear existiert inzwischen eine Cloud Last- & Performance Test Lösung. Es lassen sich durch einfache Aufzeichnungen Web- und API Tests erstellen, realistische Szenarien simulieren und skalieren und man erhält ein gute Darstellung der Ergebnisse. Aktuell wird ein14-tägiger Demo Zugang gratis angeboten. Für realistische Szenarien fängt der Preis für eine Starter-Lizenz bei 249,- €/Monat an.

Fazit

Load Testing ist heute in vielen Softwareprojekten unverzichtbar. Mit den richtigen Werkzeugen oder Cloudanbietern können Softwaretester diese Tests auf ihren Testobjekten erfolgreich ausführen. Ein nächster Schritt wäre die Integration in Ihren CI/CD Prozess, für den viele Tools und Cloudanbieter Anknüpfungspunkte bieten. Gerne kümmern wir uns um das Aufsetzen, Durchführen und Auswerten der Lasttests in Ihrem IT-Projekt. Für eine umfassendere Beratung und Unterstützung bieten wir Ihnen auch komplette Testautomatisierungs-Lösungen an. Wir hoffen, dass dieser Artikel ein guter Einstieg für Sie in das Thema Load Testing ist und wünschen Ihnen viel Erfolg bei der Durchführung Ihrer eigenen Lasttests!

Image
5

Veröffentlicht am 23.Juli 2022

Aktualisiert am 23.April 2024

Wilson Campero

Geschäftsführer, Senior Testmanager

Wilson Campero ist IT-Unternehmer und Experte für Softwarequalität sowie ISTQB Certified Full Advanced Tester. Seit 13 Jahren ist das Testen von Software sein Spezialgebiet.