Mit Hilfe von Amazon-Cloud-Technologien und einer Kombination aus Software-Lösungen lassen sich Last- und Funktionstests von Applikationen weitgehend automatisieren und damit in wesentlich höherer Frequenz und für weniger Kosten durchführen. [...]
Bei Last- und Funktionstests von Softwareanwendungen ergeben sich oft zwei grundlegende Probleme: Zum einen sind häufig die nötigen Hardware-Ressourcen nicht vorhanden oder können nicht freigemacht werden und zum anderen werden solche Tests in aller Regel manuell durchgeführt. Das ist naturgemäß äußerst aufwendig und zeitintensiv und verursacht dadurch hohe Kosten. Der IT-Dienstleister Metaways hat deshalb eine Lösung entwickelt, die Last- und Funktionstests weitgehend automatisiert und dazu die Amazon-Cloud-Technologie nutzt. Der Hintergrund: Die Amazon Web Services (AWS) bieten nahezu unbegrenzte Ressourcen, die binnen weniger Minuten einsatzbereit sind. Die Abrechnung kann dabei nach Zeit beziehungsweise Verbrauch erfolgen, wodurch eine gute Kostenkontrolle möglich ist.
VERWALTUNG DER TESTPLÄNE
Der erste Schritt – die Erstellung des Testplans – muss dabei zwangsläufig manuell erfolgen. Da alle Applikationen, Datenbanken, Internetseiten und Web-Shops individuell gestaltet sind, müssen sie auch individuell getestet werden. So hat etwa jeder Web-Shop andere Login-Verfahren oder Bestell- und Bezahlvorgänge. Aber auch die Anforderungen sind von Fall zu Fall verschieden: Es kann beispielsweise sein, dass nur ausgewählte Funktionen getestet werden sollen – etwa die Newsletter-Einstiegsseite einer Webseite, deren Performance besonders kritisch ist. In anderen Fällen muss dagegen vielleicht eine umfassende Prüfung in einzelne Tests für verschiedene Komponenten unterteilt werden, um aussagekräftige Ergebnisse zu erhalten.
Die Verwaltung der Testpläne mit Hilfe eines Version Control Systems (VCS) stellt sicher, dass sich Änderungen jederzeit nachverfolgen lassen, und im Bedarfsfall jederzeit auf ältere Versionen zurückgegriffen werden kann. Arbeiten mehrere Personen an den Testplänen, lässt sich jederzeit nachvollziehen, welche Änderungen die Kollegen vorgenommen haben.
Nach der manuellen Erstellung des Plans kann der Test durchgängig automatisiert durchgeführt werden. Ermöglicht wird dies durch eine Kombination verschiedener Software-Komponenten. Die Steuerung der Tests läuft über eine Metaways-Eigenentwicklung auf Basis des AWS CLI (Amazon Web Services Command Line Interface). Als Test-Tool kommt das Open-Source-Werkzeug Apache JMeter zum Einsatz. Ein Basis-Amazon-Machine-Image (AMI) wird aus dem VCS mit den nötigen dynamischen Informationen für den Start der Amazon-On-Demand-Instanzen versorgt. Somit verwenden die virtuellen Server in der Amazon-Cloud die konfigurierten Softwareversion von JMeter und der JMeter-Plugins. Die Parameter der Testpläne lassen sich an JMeter übergeben – beispielsweise wie viele Benutzer simuliert werden sollen – und daraus abgeleitet die Zahl der Server, die gestartet werden müssen.
Da es sich bei JMeter um eine verteilte Anwendung handelt, kann das Tool die Tests über mehrere Server hinweg ausführen und dadurch eine sehr große Last erzeugen. Werden beispielsweise fünf Instanzen gestartet, steuert ein Master die übrigen Server (Slaves) mit Befehlen. Dadurch können alle fünf Instanzen gleichzeitig auf die getestete Anwendung „feuern“ und damit sehr viele Requests durchführen. Wird beispielsweise eine Webseite getestet, simuliert JMeter einen Browser und ruft die URL der Seite ab, die getestet werden sollen. Dabei zeichnet das Tool auf, ob Fehler aufgetreten sind und wie lange die Antwortzeiten der Requests waren. Getestet wird aber nicht nur die Performance der Applikation: Ein JMeter-Plugin protokolliert außerdem auch den Verbrauch der Hardware-Ressourcen: Wieviel CPU wird beansprucht? Wieviel RAM ist in Benutzung? Wie sind die Festplatten ausgelastet? Und wie verändern sich diese Werte während des Tests?
STUFENWEISES TESTEN
Der Verlauf des Tests erfolgt dabei stufenweise. Zunächst wird er mit einem Initialwert durchgeführt, der unter dem theoretischen Maximum liegt, und dann mit immer weiter erhöhten Werten wiederholt. So lässt sich im Laufe des Tests das Maximum ausloten und beispielsweise erkennen, bei welcher Zahl gleichzeitiger Besucher die Webseite eine hundertprozentige CPU-Auslastung verursacht. Die Ergebnisse der Tests werden ebenfalls automatisiert in der Amazon-Cloud erstellt. Weitere JMeter-Plugins werten dafür die Daten aus, generieren CSV-Dateien und Grafiken, und präsentieren sie auf einer HTML-Seite. Der Link zu dieser Seite wird selbstständig an die E-Mail-Adresse des Kunden verschickt, die als Parameter bereits mit dem Testplan an das System übergeben wurde.
Die Vorteile dieser Lösung liegen auf der Hand: Durch die Automatisierung lassen sich die Tests mit einer wesentlich höheren Frequenz durchführen als auf manuellem Wege. Außerdem fallen geringe Kosten an, die sich lediglich aus den Aufwendungen für die Testplanerstellung und den Gebühren für die Amazon-Wolke zusammensetzen. Ein weiterer Vorteil: Die Lösung lässt sich an Continuous-Integration-Plattformen wie Jenkins anbinden und so nahtlos in die Entwicklungsprozesse von Applikationen integrieren. Wird beispielsweise ein neues Release einer Software freigegeben, können die Entwickler einen Test, den sie bereit bei einer älteren Version durchgeführt haben, einfach neu starten, um damit auch das neue Release zu überprüfen. Als äußerst wertvoll hat sich bei der Realisierung der Lösung für automatisierte Last- und Funktionstests der Support für die Plugins aus dem JMeter-Umfeld erwiesen. Die grafische Darstellung der Testergebnisse etwa wäre ohne das Engagement der Community nicht möglich gewesen.
Für die Zukunft ist geplant, die Lösung weiter auszubauen. Ein Ziel dabei ist es, die in der Amazon-Cloud aufgezeichneten Ergebnisse (abgerufene Adressen, Antwortzeiten, Fehler, etc.), die bislang nur in Dateien gespeichert werden, in eine Datenbank zu schreiben. Dadurch ist es möglich, eine Test-Historie zu erstellen und die verschiedenen Testläufe über die Zeit zu vergleichen. Nach einem gewissen Zeitraum könnten dann auch Aussagen über die Zusammenhänge zwischen der Leistungsfähigkeit der Hardware und der Performance der Software abgeleitet werden. Nicht zuletzt ließe sich dann außerdem anhand der Erfahrungswerte prognostizieren, ab wann für eine Anwendung eine neue Hardware benötigt wird, so dass diese rechtzeitig bestellt werden kann.
* Lars Reimann und Marc Heisterkamp sind System Engineers für Unix und Datenbanken bei Metaways.
Be the first to comment