07. März 2024
Performance-Vergleich von VMs und Docker-Containern
Als Teil meines Studiums der Informatik an der Staatlichen Berufsakademie Leipzig zusammen mit meinem Praxispartner Quality First Software habe ich eine wissenschaftliche Arbeit zu dem Thema „Testen von Benutzeroberflächen in virtualisierten Umgebungen“ verfasst. Die Arbeit befasst sich mit der Performance-Analyse von virtuellen Maschinen und Docker-Containern für Webtests.
Mein Fokus lag darauf, die Laufzeiten von Tests in QF-Test in verschiedenen Testumgebungen zu vergleichen.
Schmied, Marcel: Testen von Benutzeroberflächen in virtualisierten Umgebungen (PDF)
Untersuchungsergebnisse
Die Ergebnisse haben die Vermutungen bestätigt, dass der Docker Container insgesamt schneller ist als die Virtuelle Maschine, und dass Headless Chrome schneller ist als das interaktive Chrome mit GUI.
Das erste Diagramm zeigt, dass QF-Test Testschritte mit geringem overhead in einer dockerisierten Umgebung mehr als doppelt so schnell ausführt. Die Performance-Unterschiede sind in interaktiven Sessions noch ausgeprägter als in “headless” ausgeführten Browsern.
Das zweite Diagramm zeigt, dass die gemessenen QF-Test Testläufe in einer dockerisierten Umgebung etwa doppelt so schnell ausgeführt werden wie in einer vollen VM.
Das dritte Diagramm zeigt, dass die zeitintensiveren QF-Test Knoten “DocumentWaiter”, “InstallCWRStep” und “BrowserClientStarter” in einer dockerisierten Umgebung deutlich schneller ausgeführt werden als in einer vollen VM. Die Unterschiede sind jedoch nicht überall so gravierend wie für die einfacheren Knoten.
Arbeitsablauf
Während der gesamten Arbeitszeit stand mir ein Kollege von QFS zur Seite, der mich bei jeglichen Fragen unterstützt hat und bei Themenfindung, Strukturierung und Gliederung mitgeholfen hat.
Um die beiden Testumgebungen virtuelle Maschine und Container-Umgebung Vergleichen zu können, habe ich zuerst eine ausführliche Recherche zu beiden durchgeführt, genau wie zu den Themen Testautomatisierung und Webtesten. Die detaillierten Ergebnisse meiner Recherche sind in den Kapiteln 2 und 3 festgehalten.
Als Arbeitseinstieg in den praktischen Teil habe ich mich zuerst mit dem Aufsetzen von VMs und Docker Containern mit gleichen Hardware-Konfigurationen beschäftigt, damit ich im Nachhinein ein aussagekräftiges Testergebnis erhalte. Auf der VM wurde ein Linux-OS installiert und anschließend QF-Test. Für den Docker Container brauchte ich nur das passende Docker image herunterladen, welches von QFS bereitgestellt wird.
Anschließend wurde auf beiden jeweils der Web CarConfigurator (die mit QF-Test mitgelieferte Demo-Anwendung) mehrmals ausgeführt. Dies ergab vier Datensätze: Einen Webtest mit Chrome und einen Webtest mit Headless Chrome, und das jeweils für VM und Docker Container. Diese Datensätze wurden anschießend mit den Methoden der statistischen Ergebnisanalyse ausgewertet.
Fazit: Zeit sparen mit Docker und Headless Browser
Wenn man sich die einzelnen Knoten-Ausführungszeiten anschaut, erkennt man, dass in einigen Knoten, wie zum Beispiel ClientWaiter oder InstallCWRStep, die Unterschiede relativ gering sind, jedoch bei anderen Knoten – solchen die mit dem UI interagieren – die Unterschiede größer sind: Dies gilt bei MouseEventStep, SelectionEventStep und TextInputStep mit bis zu 300% Performancegewinn!
Für eine möglichst schnelle Testausführung bei gleichen zur Verfügung stehenden Ressourcen sollte man für Webtests also eine Container-Umgebung mit einem Headless Browser verwenden. Damit spart man im Vergleich zu einer virtuellen Maschine in Kombination mit einem normalen interaktiven Browser bis zu zwei Drittel der Zeit, die für einen Testdurchlauf benötigt wird.
Der Einstieg in Docker Container ist mir persönlich etwas schwerer gefallen als in VMs. Jedoch ist er mit den von QFS schon vorbereiteten QF-Test Containern sehr einfach und lohnt sich auf jeden Fall, wenn man die Ergebnisse der Laufzeiten vergleicht.