Automatisiertes Testen im DevOps Kontext
Testen bedeutet, Qualität sicherzustellen. Gerade bei Software kann dieses Testen immense Ausmaße annehmen. Das Vorhaben, Software manuell auf ihre Anforderungen zu testen, würde einen erheblichen Personal- und Zeitaufwand erfordern.
Automatisierung – Tests auf Knopfdruck
Automatisierte Tests ermöglichen es, per Knopfdruck Tests auszuführen und diese auch auszuwerten. Die Vielfalt an Möglichkeiten automatisierte Tests zu entwickeln ist groß. So greift man im Bereich der Unittests auf Frameworks zurück, die eine Umgebung zum Schreiben von Tests bieten. Hier kann der produzierte Produktcode von Projektbeginn an getestet werden. Dies kann auch als wertvolles Werkzeug genutzt werden, um schnell Sektionen oder Module als Fehlerursache ausmachen zu können. Das Verfahren ist mit erhöhtem Abstrahierungsaufwand ebenfalls für Integrationstests anwendbar.
Bei Systemtests ist es schwierig, eine fertige Lösung, ähnlich der Frameworks bei Unittests, zu finden. Es ist üblich, eine eigens für die Systemtests konzeptionierte Testumgebung zu entwickeln. Dafür werden die Schnittstellen des Systems genutzt, um Aktion und Reaktion einzuleiten. So kann beispielsweise auf einem Testrechner ein Testscript in einer beliebigen Programmiersprache ausgeführt werden, welches über ein Gateway die Schnittstellen des Systems ansteuert und ausliest. Bei allen Testvarianten ist es wichtig, früh mit der Planung zu beginnen. Denn die Test-Planung wird die Software-Architektur beeinflussen und andersherum.
Infrastruktur zur Testautomatisierung
Nicht nur das Entwickeln von Tests führt zu einer sicheren und stabilen Software, auch die Häufigkeit der Ausführung jener Tests trägt dazu bei.
Testautomatisierung ermöglicht es, in festen zeitlichen Abständen Tests starten und auswerten zu lassen. Auf diesem Weg können beispielsweise Bereiche außerhalb der typischen Arbeitszeiten genutzt werden, um Testläufe durchzuführen. Dafür muss allerdings zunächst eine Infrastruktur geschaffen werden, die zusammen mit dem Projektfortschritt und der Testkomplexität wächst. Diese Infrastruktur kann sich aus IT, Versionsverwaltung, Testframework, Testhardware, Entwicklungs- und Projektmanagement-Tools und beliebig vielen weiteren Komponenten zusammensetzen.
Testautomatisierung - Was ist DevOps?
DevOps, oder auch Development und Operations, hat das Ziel, die Geschwindigkeit der Entwicklung bei steigender Qualität zu erhöhen. DevOps steht für den Ansatz, die Entwicklung und das operative Geschäft näher zusammenrücken zu lassen. Die Zusammenarbeit erfolgt über gemeinsam definierte Prozesse und Werkzeuge. Dabei verbessern sich das Zusammenspiel, die Kommunikation und das Verständnis anderen Fachbereichen gegenüber.
Continuous Integration
Beim Konzept „Continuous Integration“ werden kontinuierlich Änderungen auf den aktuellen Software-Stand aufgespielt. Dies gilt sowohl für die Produkt-Software, als auch für die Test-Software. Mithilfe eines automatisierten Build-Systems werden diese Änderungen gebaut, getestet und ausgewertet und man erhält eine schnelle Aussage über die Stabilität des Softwarestandes. Dieser Prozess liefert permanent Daten, um den Projektfortschritt dokumentieren zu lassen.
Continuous Delivery
„Continuous Delivery” ist eine Erweiterung der „Continuous Integration” und ermöglicht zusätzlich eine Automatisierung des Release Prozesses. Das bedeutet, zu jeder Zeit ein komplettes System zur Verfügung zu haben, das für Tests zur Verfügung steht.
Continuous Deployment
Nachgelagert nach „Continuous Delivery“ wird die Software kontinuierlich ausgeliefert. Das kann auch innerhalb eines Projektes angewandt werden, um beispielsweise eine Teilkomponente in das übergreifende Projekt zu liefern.