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)