Die Vorteile der Virtualisierung sind unbestreitbar, aber für Stresstests ist sie ein Alptraum.
Heutzutage ist die Virtualisierung allgegenwärtig, und obwohl es sich dabei zweifellos um eine großartige Technologie mit zahlreichen Vorteilen handelt, ist die Virtualisierung ein Albtraum, wenn es um Stresstests geht. Egal wie präzise Stresstests sind, die Tester können nie sicher sein, dass die erzielten Ergebnisse zuverlässig sind. Außerdem ist es nahezu unmöglich, eine bestimmte Testumgebung zu reproduzieren, in der mehrere virtualisierte Anwendungen auf demselben Rechner laufen, und genau dieselben Tests auf einem anderen Rechner zu wiederholen.
Eine virtualisierte Stresstestumgebung lässt sich nicht immer leicht reproduzieren
Bei der Virtualisierung gibt es einen physischen Rechner, mehrere Betriebssysteme, die gleichzeitig auf der gleichen Hardware laufen, und mehrere Anwendungen, die in jedem der Betriebssysteme laufen. Wenn nur eine dieser Anwendungen/Betriebssysteme geändert wird, verändert sich die Testumgebung stark.
Hier ein Beispiel mit nur zwei Betriebssystemen, die eindeutig durch eine Prüfsumme und eine Build-Nummer/Veröffentlichungsdatum identifiziert werden. Eines dieser Betriebssysteme ist Windows (z. B. Windows 2008, Build XYZ) und das andere ist Linux (z. B. Red Hat Enterprise 5.4, veröffentlicht am Datum XYZ).
Die erste Frage ist, welches von beiden das Host-Betriebssystem ist, in dem die virtuelle Maschine mit dem zweiten Betriebssystem eingesetzt wird. In Bezug auf die Leistung macht es einen Unterschied, ob Windows innerhalb von Linux oder umgekehrt ausgeführt wird. Es spielt auch eine Rolle, wie viele Ressourcen das Gastbetriebssystem nutzen darf, aber zumindest kann dies leicht bestimmt werden – d. h. 1 GB RAM, 2 GB RAM usw.
Neben den verschiedenen Betriebssystemen ist ein weiterer Faktor, der bei Stresstests in virtualisierten Umgebungen eine Rolle spielt, die Kombination der Anwendungen, die auf diesen Betriebssystemen laufen, und deren Belastung. Wenn ein Parameter geändert wird (d. h. eine Anwendung wird durch eine andere ersetzt), ändert sich die Gleichung, da die verschiedenen Anwendungen unterschiedliche Anforderungen an die Ressourcen stellen. Dies gilt auch für nicht virtualisierte Umgebungen, so dass niemand die Virtualisierung (zumindest) dafür verantwortlich machen sollte.
Die Virtualisierung selbst ist der erste Stresstest
Wenn Anwendungen in einer virtualisierten Umgebung ausgeführt werden, teilen sich diese Anwendungen die gleichen Hardware- und Softwareressourcen. Es ist ganz logisch, dass die Belastung eines Rechners größer ist, wenn 10 Anwendungen unter 3 verschiedenen Betriebssystemen darauf laufen, als wenn nur eine Anwendung im einzigen Betriebssystem auf dem Rechner läuft. Die Virtualisierung selbst ist also wie ein erster Stresstest für den Rechner – wenn mehrere Betriebssysteme gleichzeitig laufen, belastet dies den Rechner.
Zusätzlich zu diesem Stresstest (d. h. der Belastung durch die Virtualisierung) bombardieren die Tester die Anwendung nun mit Client-Anfragen. Mit anderen Worten, der Stresstest beginnt jetzt formal, obwohl er in Wirklichkeit bereits mit dem Laden des Rechners mit den verschiedenen Betriebssystemen und den darin enthaltenen Anwendungen begonnen hat. In dieser Hinsicht befindet sich die getestete Anwendung in einer ungünstigeren Situation, wenn sie in einer virtualisierten Umgebung läuft.
Wenn also ein Stresstest für eine Anwendung in einer nicht virtualisierten Umgebung durchgeführt wird und diese Anwendung später in einer virtualisierten Umgebung eingesetzt wird, werden die Ergebnisse aufgrund der sehr unterschiedlichen Testanordnung sehr unterschiedlich ausfallen. Aus diesem Grund sollte immer eine Warnung ausgegeben werden, dass der Stresstest für eine Anwendung auf einem dedizierten Rechner durchgeführt wurde und dass die Ergebnisse sehr unterschiedlich ausfallen werden, wenn die Anwendung in einer virtualisierten Umgebung eingesetzt werden soll. Nur auf diese Weise ist es möglich, korrekte Ergebnisse zu erzielen.