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.