Software Last- und Performance Test

04 April 2016
Thomas Fiehn

Um qualitativ hochwertige Softwarelösungen zu entwickeln, ist es unerlässlich diese Systeme auch zu testen. Oft beschränken sich diese Tests jedoch auf das Testen der korrekten Funktionsweise des Systems. Diese Tests geben normalerweise keinen Hinweis darauf, wie viel Last das System verarbeiten kann. Das heißt, oft ist nicht bekannt, wie viele Personen gleichzeitig auf das System zugreifen können, ohne dass es störende Einschränkungen bei der Reaktionszeit des Systems gibt, oder der Benutzer eventuell sogar gar keine Rückmeldung vom System mehr bekommt. Das System könnte sogar in einen Zustand kommen, in dem das System bis zu einem Neustart für die Anwender nicht mehr verfügbar ist.

Um ein Verständnis dafür zu bekommen, unter welcher Last ein System noch gute Reaktionszeiten bietet, sind Lasttests unerlässlich. Mit Hilfe von Lasttests kann ermittelt werden, wie viele Anfragen das System gleichzeitig verarbeiten kann, beziehungsweise wie viele Benutzer gleichzeitig auf das System zugreifen können. Außerdem kann festgestellt werden, wo Optimierungen vorgenommen werden können, um das System unter einer höheren Last betreiben zu können. Optimierungsmöglichkeiten können sowohl in der Hardware, als auch im Softwaresystem selbst liegen. Bestimmte Funktionen des Systems, die für einen oder wenige Benutzer eine hohe Performanz haben, können für ein paar mehr Benutzer aus verschiedensten Gründen schon zum Problem werden. Solche Probleme lassen sich jedoch ausschließlich mit manuellen Tests nur schwer beziehungsweise - auf Grund der benötigten gleichzeitig zugreifenden Benutzern - gar nicht feststellen. Deshalb ist es gerade für geschäftskritische Systeme unerlässlich, automatisierte Lasttests durchzuführen, um festzustellen bis zu welcher Last ein System ohne Probleme benutzt werden kann.

Es gibt verschiedene Werkzeuge um Lasttests zu erstellen und auszuführen. Bei der Entwicklung von Systemen mit dem .NET Framework liegt es nahe, Visual Studio von Microsoft als Entwicklungsumgebung zu verwenden. Visual Studio enthält in der Enterprise 2015 Version die Funktionalität Lasttests zu erstellen und auszuführen. Ein Lasttest legt fest, welche Tests während des Testdurchlaufs ausgeführt werden sollen. Es können verschiedene Arten von Tests innerhalb von Lasttests verwendet werden. Zum einen können Units Tests verwendet werden. Unit Tests werden üblicherweise sowieso erstellt, um zu testen, ob das System korrekt funktioniert, das heißt ob die berechneten Ergebnisse beziehungsweise Abläufe den Erwartungen entsprechen. Dafür werden die Unit Tests normalerweise nur einmal nacheinander pro Testdurchlauf ausgeführt und somit keine hohe Last erzeugt. Die Unit Tests – welche schon vorhanden beziehungsweise sowieso geplant sind – können somit verwendet werden, um einen Lasttest zu erstellen, der dann parallel eine bestimmte Anzahl an Unit Tests (den gleichen und / oder verschiedene Unit Tests) ausführt, um die gewünschte Last zu erzeugen.

Neben den Unit Tests lassen sich auch verschiedene Arten von Web Tests erstellen, die dann innerhalb eines Lasttests verwendet werden können. Möchte man eine Web-Softwareanwendung unter Last testen, so können mit Visual Studio Tests aufgezeichnet werden, in dem der entsprechende Use Case im Browser durchlaufen wird. Der aufgezeichnete Test kann dann immer wieder durchlaufen werden. Eventuell müssen je nach Komplexität der Anwendung beziehungsweise des Tests nach dem Aufzeichnen noch Anpassungen am Test durchgeführt werden. Zum Beispiel kann ein Test, der einen neuen Datensatz anlegt, nur einmal ausgeführt werden, wenn gewisse Daten des Datensatzes eindeutig sein müssen. Hierfür können kunden- beziehungsweise anwendungsspezifische Erweiterungen für die Tests implementiert werden.