Warum DevOps-Entwicklung kontinuierliches Testen braucht
Der DevOps-Ansatz verlangt, Software während des gesamten Entwicklungsprozesses zu testen. Ebenso wichtig ist es für Teams, die richtigen Tests zu verwenden.
DevOps hat zweifellos viele Vorteile. Man kann damit zum Beispiel schneller neue Versionen von hochwertiger Software entwickeln. Um die Vorteile aber ganz ausschöpfen zu können, müssen erfolgreiche Unternehmen kontinuierliche Tests einführen – und zwar während des gesamten Softwarebereitstellungsprozesses. Die Testphase kann nicht als eigenständiger Schritt am Ende eines Entwicklungszyklus existieren.
Continuous Integration und Continuous Delivery bilden den Hintergrund für diese Erkenntnis – diese Praktiken sind die Grundlage für einen erfolgreichen DevOps-Ansatz. Was IT-Leiter und ihre Teams jedoch oft nicht erkennen: Der Schlüssel zur ordnungsgemäßen Einführung kontinuierlicher Tests erfordert erhebliche kulturelle und prozessuale Veränderungen.
Während der gesamten Entwicklung testen
Der wichtigste Aspekt des kontinuierlichen Testens ist: Automatisiertes Testen muss während des gesamten Entwicklungsprozesses stattfinden. Einen wirklichen Nutzwert liefert ein Test nur in der Zeit, in der Sie eine Anwendung erstellen oder aktualisieren – nicht danach.
Der Grund dafür ist leicht einzusehen: Wenn Ihr DevOps-Team den Code in jeder Phase des Entwicklungsprozesses testet, kann es Probleme effizienter angehen. Dann sind nämlich die Änderungen im Kopf des Entwicklers noch frisch. Diese schnelle Rückkopplungsschleife erhöht die Geschwindigkeit des Software-Releases und verbessert die Qualität der gelieferten Software.
Auf Business-Ebene können DevOps-Teams damit argumentieren, dass Continuous Testing zu höheren Umsätzen und zufriedeneren Kunden führen. Sie stellen schließlich Ihren Kunden neue, qualitativ hochwertige Funktionen zur Verfügung – und das schneller, als Ihre Wettbewerber sie liefern können.
Smoke- und Regressionstests
Es ist also wichtig, während des gesamten Entwicklungszyklus zu testen. Mindestens ebenso wichtig ist es aber für Teams, die richtigen Tests zu verwenden. Sie sollten versuchen, ihre Entwicklungsgeschwindigkeit mit dem passenden Test zum passenden Zeitpunkt zu maximieren. Wählen Sie kleinere Testeinheiten möglichst früh in der Pipeline – diese Tests werden oft als Smoke Testing bezeichnet.
Smoke Tests führen Entwickler im Allgemeinen vor einem ersten Release durch, oder auch, bevor sie einen Build für weitere Tests akzeptieren. Eine umfassendere Testsuite sollten Sie erst später in der Pipeline ansetzen – diese umfassenden Tests werden oft als Regressionstests bezeichnet. Und beachten Sie: Kontinuierliches Testen bedeutet nicht, rund um die Uhr zu testen. Es bedeutet nur, dass Sie einen Test für jeden Schritt des Weges haben.
Smoke Testing ermöglicht es Unternehmen, größere Fehler und Regressionen frühzeitig zu finden. Er hilft auch, die höheren Kosten eines vollständigen Regressionstests zu vermeiden. Solche Tests prüfen relativ grob, ob die Schlüsselfunktionalität auf einigen ausgewählten Schlüsselplattformen wie erwartet funktioniert. Der Tester kann zum Beispiel Dinge probieren, wie zum Beispiel „Kann man diese Funktion überhaupt benutzen?“, „Öffnet dies hier ein Fenster?“, „Tun alle Buttons auf diesem Fenster etwas?“
Um die Produktivität der Entwickler nicht zu beeinträchtigen, sollten Sie aber nur wenige dieser Tests ausführen. Zur Verkürzung der Ausführungszeit und Minimierung der Kosten werden diese Tests manchmal schon automatisch ausgeführt, zum Beispiel vom Entwicklungssystem, das auch die Software kompiliert. Bei der Entwicklung mobiler Anwendungen können Sie Smoke Tests auch auf iOS- und Android-Emulatoren ausführen.
Die umfassenderen Tests sollten DevOps-Teams gründlicher, aber seltener machen. Um ein qualitativ hochwertiges Endbenutzererlebnis zu gewährleisten, sollten diese Tests als vollständige Regressions- und Kompatibilitätstests auf einer breiten Palette von Browsern und echten iOS- und Android-Geräten ausgeführt werden. Die Kombination aus frühen Smoke Tests und späteren, vollständigen Regressionstests ermöglicht eine kosteneffiziente Beschleunigung der Softwareentwicklung.
Entwickler müssen neue Fähigkeiten lernen
Entwicklungsteams sollten immer nahe am Testprozess bleiben. Das ist der größte kulturelle Wandel, der stattfinden muss – vor allem, wenn eine Organisation schon früh auf dem Weg zum kontinuierlichen Testen ist.
Entwickler denken oft, dass das Testen nicht in ihren Aufgabenbereich fällt, sondern alle Testaufgaben von der Qualitätssicherung gemacht werden sollten. Um diese Einstellung zu ändern, müssen Unternehmen Silos abbauen und mehr Wert legen auf Qualität. Darüber hinaus müssen Entwickler selbst etwas tun und neue Fähigkeiten erlernen. Dazu gehört ein besseres Verständnis dafür zu bekommen, wie man Anwendungen erstellt, die durch Automatisierung einfacher zu testen sind.
Wenn Entwickler zum Beispiel eindeutige Identifikatoren für Objekte verwenden, erleichtert dies sowohl das Test-Authoring als auch die Testwartung. Die Teams müssen auch neue Entwicklungsmethoden anwenden, die das Testen in den eigentlichen Entwicklungsprozess integrieren. Viele fortgeschrittene Teams führen verhaltensorientierte Entwicklungs- und testgetriebene Entwicklungsansätze ein. Dabei schreiben Teams ihre Tests, bevor sie überhaupt zum Softwarecode kommen. Und in einigen fortgeschrittenen Organisationen schreiben die Entwickler sogar alle Tests.
Blick nach vorn
Die Vorteile des Continuous Testing sind erheblich. Aber um diese Vorteile voll auszuschöpfen, müssen sowohl Entwickler als auch Qualitätssicherungsexperten ihren Ansatz für automatisiertes Testen grundlegend ändern. Diese Veränderungen sind weder einfach noch schnell umzusetzen. Sind sie aber einmal realisiert, werden sie auf Business-Ebene zu einem schnelleren Wachstum und einer höheren Rentabilität führen.
Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!