kalafoto - stock.adobe.com
Mit Docker verschiedene Softwaretests ausführen
Das Ziel von Containern ist es, die Entwicklungsarbeit zu vereinfachen. Tester können die isolierten Systeme für Stress-, Sicherheits- und explorative Tests verwenden.
Docker ermöglicht es IT-Abteilungen, Container zu erstellen und zu verwalten, um Code ohne großen Aufwand zu isolieren. Container stellen On-Demand-Einwegumgebungen zur Verfügung, die schnell starten und sich immer wieder neu aufbauen lassen, sowohl lokal als auch in der Cloud.
Auch wenn Docker nicht die einzige Containeranwendung ist, hat es die Technologie populär gemacht. Wie bei virtuellen Maschinen (VMs) teilen sich Container physische Computerressourcen – CPU, RAM, Netzwerk und Storage – mit mehreren Gastsystemen. Im Gegensatz zu VMs verlassen sich Container hierbei auf das Host-Betriebssystem, so dass sie schnell starten können.
Entwicklungsteams erstellen Container-Images, um alle Bestandteile zusammenzufassen, die sie benötigen, damit eine Anwendung auf diesem gemeinsamen Betriebssystem ausgeführt werden kann – zum Beispiel vorinstallierte und vorkonfigurierte Bibliotheken – ohne ungenutzte Komponenten, die Kosten verursachen können.
Jedes Docker-Image enthält eine Schreib-Lese-Schicht für Instanz-Daten, die anderen Schichten sind jedoch unveränderlich, das heißt sie lassen sich nach dem Start nicht mehr ändern. Bei Containern ist das Image, das Sie testen, identisch zum Image, das im produktiven Einsatz verwendet wird. Container verhalten sich in Entwicklungs-, Test- und Produktionsumgebungen gleich.
Einwegumgebungen für Tests
Da Container-Images unveränderlich sind, starten die Instanzen jedes Mal gleich. Die Schnellstartfähigkeit der Container ermöglicht es der Qualitätssicherung, wichtige Softwaretests auszuführen, die den Container in einem unbestimmten Zustand belassen. Die Qualitätssicherung kann es anschließend beenden und eine neue Kopie für den nächsten Test starten. Teams erstellen mit Docker im Wesentlichen Einwegsysteme zum Testen.
Das Docker-Design konzentriert sich auf Automatisierung, was bedeutet, dass Entwickler einfache Befehle und API-Aufrufe verwenden können, um mehrere Container aus verschiedenen Images zu starten. Jeder Container ist in der Lage, andere zu entdecken und mit ihnen zu arbeiten, wenn der Code es vorschreibt. So kann beispielsweise ein einziger Befehl eine Datenbank, einen Anwendungsserver und einen Webserver starten, um ein bestimmtes Programm auszuführen. Sekunden nachdem man die Umgebung gestartet hat, ist sie einsatzbereit.
Jeder Mitarbeiter des Entwicklungsteams kann eine identisch konfigurierte Umgebung in der Entwicklungs-, Test- und Bereitstellungs-Pipeline betreiben. Wenn die App oder das Feature auf einer Maschine funktioniert, funktioniert sie auf allen.
Mehr Möglichkeiten zum Testen
Die komfortable Start-Stopp-Funktionalität von Docker-Containerumgebungen ermöglicht zusätzliche Tests. Langzeittests können parallel stattfinden. Container ermöglichen auch Stresstests, Soak-Tests und Hochverfügbarkeitstests, die normalerweise im Release-Lebenszyklus später stattfinden. Und Sicherheitstests, die ansonsten Tage dauern, können neben vollständigen Regressionstests durchgeführt werden, während Tester explorative Tests ausführen.
Entwicklungsteams können Docker zum Testen sowohl über ein Tool als auch per Code verwenden. Um Test-Tools in Docker-Containern auszuführen, installiert und konfiguriert man das Tool als Image und starten es bei Bedarf.
Verwendet man Docker für Softwaretests, dann muss die Qualitätssicherung nicht mehr lernen, wie man mit einem erweiterten Ökosystem interagiert. Einfache Befehle starten die Umgebung; Orchestrierungswerkzeuge ermöglichen es, aus Bibliotheken vorgefertigte Images auszuwählen; und Automatisierungswerkzeuge starten und stoppen die Container bei Bedarf. Tester können sich daher auf das Testen konzentrieren – nicht auf das Tool- und Umgebungsmanagement.