Performancetest in der Cloud

Artikel von Alex Podelko

Ein Blick auf die Bedeutung des Wortes

Die Cloud bietet in Bezug auf den Performancetest neue Möglichkeiten und Herausforderungen, aber auch spezifische Vor- und Nachteile, die abhängig von der Umgebung und den Zielen signifikant variieren können. Der Begriff Cloud wird derzeit überbeansprucht und umfasst eine Menge unterschiedlicher Sichtweisen. Wenn man den Einfluss der Cloud auf den Performancetest verstehen möchte, muss man alle Optionen und deren unterschiedliches Verhalten im Zusammenhang mit Performancetests einzeln berücksichtigen.

Beim Performancetest gibt es zwei wesentliche Komponenten: das zu testende System und die Lastgeneratoren. Die weiteren Komponenten für Monitoring und Ergebnisanalyse sind für die Diskussion in diesem Zusammenhang nicht so wichtig. Spricht man von Lastgeneratoren, hat man drei wesentliche Möglichkeiten:

  • Vor Ort: die traditionelle Variante (zum Beispiel in einem Testlabor).
  • Als Service: Diese Möglichkeit besteht schon seit langem (beispielsweise Lasttestservices von Gomez, Keynote und anderen Unternehmen). Nehmen wir nun Bezug auf eine SaaS-Cloud (Software as a Service), ist die einzig wirkliche Änderung, dass es heute mehrere Anbieter (und somit mehr Auswahl) hierfür gibt, da es einfach ist, solch eine Leistung als Cloud-Dienst anzubieten.
  • In Form von IaaS-Clouds (Infrastructure as a Service): Dies ist eine neue Möglichkeit, die den Zugriff auf eine große Menge von Lastgeneratoren erlaubt. Es war schon immer möglich Lastgeneratoren auf entfernten Maschinen laufen zu lassen, doch jetzt ist es noch einfacher geworden. Einige Produkte bieten Unterstützung durch Bereitstellung in der Cloud, was sehr bequem ist, wenn eine hohe Anzahl von Lastgeneratoren für einen groß angelegten Test benötigt wird.

Wenn man über Testsysteme spricht, die man zusätzlich noch vor Ort hat (das können sowohl Entwicklungsumgebungen als auch Produktionssysteme sein), werden diese nun in der Cloud bereit gestellt. Das hilft, eines der Hauptprobleme zu beseitigen: das Testen der Endausbaustufe in Ermangelung der verfügbaren Hardwareausstattung. Auf diese Weise kann man auf die benötigten Ressourcen zugreifen, wenn man sie benötigt. Auch wenn es nicht exakt die gleiche Art der Hard- und Software ist, die in Produktion genutzt wird, kommt man auf diese Weise der Größenordnung näher, selbst wenn man sich bei den Details möglicherweise weiter entfernt.

Die beste Kombination aller Möglichkeiten ist abhängig von den Zielen des Performancetests. Performancetest in der Cloud oder mit Hilfe der Cloud ist für bestimmte Dinge des Performancetests sinnvoll. Zum Beispiel, wenn man testen möchte, wie viele Benutzer das System unterstützt, bei welcher Last von x Benutzern es zusammenbricht oder wie viele Server benötigt werden, um eine Menge von y Benutzer zu unterstützen – jedoch nur, wenn man sich nicht zu sehr mit der korrekten Anzahl oder den Ergebnisschwankungen beschäftigen möchte.

Selbst in diesem Fall ist die allgemeine Annahme, dass man keine Engstelle bei der Benutzung der Cloud hervorruft (zum Beispiel eine Sättigung der Netzwerkbandbreite zwischen den Lastgeneratoren und dem zu testenden System) und es dem Cloud-Anbieter überlassen ist, welche Auswirkungen die Tests auf andere Nutzer haben.

Allerdings funktioniert es nicht gut, wenn man eine Änderung an dem System machen und die Auswirkungen auf die Performance sehen möchte. Testen in der Cloud mit anderen Nutzern hat dahingehend Auswirkungen, dass man keine Kontrolle über die Aktivitäten in der Cloud und, in den meisten Fällen, kein Wissen über die exakte Hardwarekonfiguration besitzt. Wenn das System zum Beispiel durch das automatische Erstellen einer weiteren Instanz größer wird, so kann diese neue In

stanz außerhalb des Netzwerksegmentes der anderen Server liegen. Die Auswirkungen sind noch komplizierter im Fall von PaaS- (Platform as a Service) oder SaaS-Clouds. Wenn man also Performanceoptimierung durchführen will, ist eine isolierte Umgebung erforderlich.

Ein interessanter Fall ist, wenn das System für die Nutzung in der Cloud erstellt wurde, was wohl mit der Zeit mehr und mehr gebräuchlich sein wird. Der erste Gedanke ist, dass dies die Auswahl vereinfacht – teste in der Cloud, für die entwickelt wurde. Aber das wird nicht so gut funktionieren, wenn man Performanceoptimierung oder Problemlösungen benötigt und Tests vollständig reproduzieren will. In diesem Fall braucht man so etwas wie eine isolierte Private Cloud mit ähnlicher Hard- und Softwareausstattung wie die Ziel-Cloud sowie Überwachungszugriff auf die darunter liegende Hardware, um zu sehen, wie das System auf die Hardwareausstattung passt, und ob es so arbeitet wie erwartet. Echte Netzwerk emulatoren werden benötigt, um sicher zu gehen, dass der Performancetest repräsentativ zu dem System, wie es in Produktion genutzt wird, ist – sonst können Faktoren wie Netzwerklatenz, Bandbreite, Jitter-Effekte usw. nicht berücksichtigt werden. Wenn man eine Optimierung für Cloud-Software braucht, braucht man ein Labor – aber das Labor sollte anspruchsvoller sein, um sowohl die CloudUmgebung als auch die realen Netzwerkbedingungen nachzustellen. Ein Beispiel eines solchen Labors ist beispielsweise das Labor, das Microsoft für den Test des IE erstellt hat.

Demnach gibt es unterschiedliche Möglichkeiten für die Bereitstellung des Systems und der Lastgeneratoren. Welche Möglichkeit (oder Kombinationen von Möglichkeiten) die beste ist, hängt von den Zielen des Performancetests ab. Einige typische Performancetestszenarien sind beispielsweise:

  • Systemvalidierung für hohe Last. Last außerhalb des Produktionssystems (als Service oder Cloud) ist hier die beste Möglichkeit. Man hat einen größeren Testfokus aber weniger Wiederholungen.
  • Perfomanceoptimierung/Fehlersuche. Eine isolierte Umgebung ist hier die beste Option. Man hat einen begrenzten Umfang, aber hohe Wiederholbarkeit.
  • Testen in der Cloud. Dies kann die beste Möglichkeit für periodische Tests mit geringen Kosten sein. Man hat einen begrenzten Umfang und eine geringe Wiederholbarkeit.

Für die Nutzung der Cloud in Bezug auf Performancetest gibt es also zwei Hauptalternativen (mit einer feinen Abweichung von Möglichkeiten): grober Performancetest in oder von der Cloud mit innewohnenden Abweichungen (und wahrscheinlich einigen Einsparungen bzgl. Kosten für Hardware und Konfigurationen) oder feiner Performancetest und -optimierung in einer isolierten Umgebung (zur Vermeidung abweichender und sicherlich höherer Kosten für Hardware und Konfigurationen). Für umfangreiche Performancetests braucht man beides; Labortests (mit reproduzierbaren Ergebnissen für die Performanceoptimierung) und globales, nicht laborbasiertes Testen (zur Überprüfung tatsächlicher Situationen, die im Labor nicht simuliert werden können). Beides zu tun ist teuer und nur sinnvoll wenn die Performance tatsächlich eine wesentliche Rolle.

Der Artikel wurde aus dem Englischen übersetzt und ist erstmals in Testing Experience Nr. 20, „Testing in the Cloud“ (Dezember 2012) erschienen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kategorien

Recent Posts