Image
Softwarequalität in der DevOps-Strategie

Softwarequalität in der DevOps-Strategie

🕒 Lesedauer: 7 Minuten

Einführung

Qualitativ hochwertige Software, die dem Kunden gefällt, schneller liefern? Wie soll das gehen?

Im klassischen Projektmanagement stehen sich die Dimensionen Zeit und Qualität eher feindlich gegenüber. Weniger Zeit bedeutet im magischen Dreieck Einbußen bei Qualität oder Funktionalität.

Bei der Suche nach Lösungsmöglichkeiten auf die Eingangsfrage werden Sie früher oder später auf DevOps stoßen. Kann DevOps dazu beitragen, die traditionellen Einschränkungen des magischen Dreiecks zu überwinden ?

In den letzten 15 Jahren hat DevOps einen bedeutenden Aufschwung genommen und ist im Zusammenspiel mit Agilität zum beherrschenden Thema geworden. Manch einer versteht unter DevOps auch nichts anderes als Erweiterung der Agilität auf andere Organisationseinheiten, eben z.B. auf Operations.

Was ist DevOps

Wenn Sie wissen wollen, was DevOps ist, was könnte ich Ihnen antworten ?

Wörtlich genommen, geht es um ein optimales Zusammenwirken von Development und Operations, denjenigen also, die Softwareprodukte entwickeln und betreiben.

 

Image
DevOpsAcht.png

                                                                                                                                                                  Bild 1:Dev & Ops

 

In diesem Zusammenspiel ist das Gleichgewicht zu suchen: Entwickler möchten Neues machen, möchten Änderungen herbeiführen. Operations geht es um Stabilität und Störungsfreiheit. Das passt nicht unbedingt zusammen. Um ein optimiertes Zusammenspiel dieser traditionell unterschiedlich orientierten Einheiten geht es im Kern von DevOps, wie der Name schon sagt.

Um im Zusammenwirken von Development und Operations Geschwindigkeit aufzunehmen, werden Sie neben Kooperation und Kommunikation sehr schnell auf die technologische Dimension von DevOps treffen.

Zu den Technologien, die oft im Zusammenhang mit DevOps genannt werden, gehören Container, Infrastructure as Code, Microservices, Cloud und SaaS.

Ein optimales Zusammenspiel von Entwicklern und Betrieb wird durch Automatisierung ermöglicht. Automatisiert wird nicht nur der Bau und die Verteilung der Software: Nein, auch die Sicherstellung der geforderten Qualität und die Bereitstellung der notwendigen Infrastruktur sind Gegenstand von Automatisierung. Konsequent gedacht, lassen sich auch Freigabe und Produktivsetzung in die Kette automatisierter Schritte mit einbeziehen.

Oft wird die technische Lösung für die integrierte Automatisierung der beteiligten Teilprozesse als CI-/CD-Pipeline bezeichnet. CI steht dabei für Continuous Integration, CD für Continuous Delivery/ Deployment. Automatisiertes Testen in der CI-CD-Pipeline wird als Continuous Testing bezeichnet.

Vielleicht ist DevOps kein neues Thema für Sie und Sie haben sogar eine DevOps-Strategie formuliert ?

In dieser Strategie wird es vermutlich darum gehen, wie Sie die verschiedenen kulturellen und technologischen Komponenten von DevOps in Ihrem Unternehmen einführen möchten. Und es wird eine Rolle spielen, ob DevOps bereits in Teilen Ihrer Einheit implementiert ist oder ob Sie ganz von vorne anfangen müssen.

Kulturelle Aspekte

Die Überwindung von Silos ist ein wesentliches Anliegen von DevOps. Es geht um die Kooperation von Einheiten, die an der Wertschöpfungskette beteiligt sind. Im Fokus steht der konkrete Nutzen für den Kunden, der z.B. über Wertstromzuordnungen in gemeinsamen Sitzungen von Entwicklern und Betriebseinheiten ermittelt wird. Tools können die Kooperation fördern oder stören und sind in DevOps vor diesem Hintergrund zu bewerten.

Während zu Anfangszeiten von DevOps die Kooperation von Entwicklern und Betrieb im Vordergrund standen, sind Erweiterungen um andere Einheiten inzwischen auf der Tagesordnung. Als wichtigste Gruppe sind an dieser Stelle die Security-Experten zu nennen, deren Einbezug im Wort DevSecOps sichtbar zu einer Ausweitung der Kooperationen in der Wertschöpfungskette geführt hat. Vielleicht werden auch in Ihrem Unternehmen weitere Einheiten oder Stakeholder in DevOps/DevSecOps beteiligt.

Wird ein Tool nur innerhalb eines Silos eingesetzt, so könnte der Tooleinsatz für DevOps eher hinderlich sein. Erst die Ermöglichung von Kooperation, die Beseitigung von Hindernissen oder Bottlenecks machen Tools im Zusammenhang mit DevOps interessant.

DevOps und Sicherstellung der Softwarequalität

Wie wird sich die Einführung von DevOps auf Ihre Testprozesse auswirken ?

Größere Teile der Testausführung werden automatisiert und insbesondere elementare Regressionstests in die CI-/CD Pipeline integriert. Konsequent gedacht, könnte in einer CI/-CD-Pipeline letztlich auch eine Freigabeentscheidung automatisiert getroffen werden.

Das setzt aber einen teststufenübergreifenden Einsatz der CI-/CD-Pipeline und entsprechende automatisierte Bewertungsschritte voraus. Auch muss der automatisierte Ablauf von Tests störungsfrei wiederholbar sein, d.h. instabile Tests (flaky Tests) müssen beseitigt werden.

In einer Testpyramide können Sie einen optimalen Mix automatisierter Tests in den verschiedenen Teststufen für Beteiligte sichtbar machen. Es bringt Geschwindigkeitsvorteile bei der Ausführung und die Verkürzung von Feedbackschleifen, wenn Sie die unteren Teststufen quantitativ höher bestücken, d.h. die Zahl zeitaufwändiger Oberflächentests geringer ausfallen lassen als die Anzahl von Unit- oder API-Tests.

 

Image
Testpyramide-05.png

Bild 2: Verteilung des Testaufwands auf Teststufen

 

Unter dem Gesichtspunkt der Liefergeschwindigkeit sind die Laufzeiten der automatisierten Tests zu beachten. Die Optimierung einer automatisierten Testsuite für ein bestimmtes Release sollte nicht ohne Blick auf das erwartete Risiko erfolgen. Kenntnisse von Änderungen betroffener Systemteile und KI können bei der Auswahl relevanter Tests unterstützen. In vielen Fällen wird eine Produktivstellung ohne manuelle Testausführungen dennoch fürs Erste nicht stattfinden. In solchen Fällen ist es vorteilhaft, manuelle Tests mit automatisierten Tests in einem Testmanagementtool gemeinsam zu verwalten und über entsprechende Auswertungen zur Steuerung von Folgeaktivitäten zu verwenden.

Was aber fürs erste nicht automatisiert werden kann, ist die Testfallerstellung. In vielen Fällen werden Testfälle weiterhin von Personen mit Fach-Knowhow erstellt und von Test Automation Engineers umgesetzt, um sie anschließend in die CI-CD Pipeline zu integrieren.

Ähnliches gilt für die Fehleranalyse. Bei auftretenden Fehler müssen Sie nach wie vor erst einmal die Fehlerart und den Schweregrad bestimmen und im Anschluss die notwendige Folgeaktion auslösen. Automatisiert ist dies bisher eher nicht möglich.

Neben der Funktionalität spielen unter DevOps Performanz und Sicherheit eine wichtige Rolle. Performanztests lassen sich eingeschränkt auch in einer CI-CD-Pipeline ausführen und müssen dafür speziell ausgelegt werden.

Sicherheit spielt in DevOps eine zunehmend wichtige Rolle. Mit dem Namen DevSecOps wird der Erweiterung des Begriffs DevOps sichtbar Rechnung getragen. Bei DevSecOps werden neben den Anforderungen von Operations auch diejenigen von Security-Experten während der Entwicklung und im Betrieb berücksichtigt, automatisierte Abläufe in der CI-/CD-Pipeline um Security-Tests erweitert.

Azure DevOps

Microsoft stellt mit Azure DevOps eine breite Palette an Test-Tools bereit, mit denen u.a. CI-/CD Pipelines mit automatisierter Testausführung bestückt werden können. Viele der Werkzeuge, die heute Bestandteil von Azure DevOps sind, wurden früher unter dem Namen Team Foundation Server von Microsoft angeboten und sind praxiserprobt. Azure DevOps bietet zusätzlich eine tiefere Integration mit anderen Azure-Diensten und hat eine größere Bandbreite von kommerziell verfügbaren Erweiterungen (Extension).

DevOps, SAFe und Prozessverbesserungsmodelle

Wenn Sie das Scaled Agile Framework bereits eingeführt haben, werden Sie DevOps verschiedentlich bereits begegnet sein. Und das, weil DevOps und SAFe sich gut ergänzen. CI-/CD-Pipelines harmonieren gut mit den Wertströmen in SAFe. Übergreifende Zusammenarbeit und Kundenorientierung stehen bei beiden im Fokus. Die Wichtigkeit von Automatisierung wird in SAFe und DevOps betont, wobei Continuous Testing in der kontinuierlichen Lieferpipeline von SAFE eine Rolle spielt. DevOps bringt Tools zur Automatisierung des Software-Lebenszyklus, und SAFe fördert deren Integration in das größere Unternehmensökosystem.

Kontinuierliches Verbessern spielt in DevOps eine wichtige Rolle. So noch nicht geschehen, sollten Sie einen Blick auf verbreitete Referenzmodelle für die Verbesserung von Softwareprozessen (CMMI, SPICE) oder Testprozessen (TMMi, TPI-NEXT) werfen und der dauerhaften Etablierung eines wirksamen Verbesserungsprozesses ein solches Referenzmodell zu Grunde legen.

Für die Initiierung, Planung, Vorbereitung, Umsetzung und Anpassung beschlossener Verbesserungsmaßnahmen kann das IDEAL-Modell wertvolle Hilfestellung bieten. Die größten Vorteile werden Sie dann haben, wenn Ihr Testprozess auf einer hohen Reifegradstufe angekommen ist. Frühestmögliche Fehlerentdeckung, Fehlervermeidung und stetige Optimierung der Testprozesse finden sich z.B. in TMMi in den Reifegradstufen vier und fünf. Der Einsatz eines Verbesserungsmodells hilft Ihnen auch in Übergangszeiten beim Bewahren wichtiger Basisprozesse und der Formulierung einer klaren Zielvorstellung für die Organisation Ihrer Testprozesse unter DevOps.

Risiken

Mit der Einführung von DevOps gehen auch Risiken einher. Insbesondere mit Verlagerung von Anwendungen in die Cloud können Sicherheitslücken entstehen und zum Risiko werden. Bei der Beschleunigung des Durchlaufs durch automatisierte Tests kann die Testabdeckung leiden und Fehler leichter in Produktion kommen. Ältere Technologien können einen erhöhten Integrationsaufwand erfordern. Auftretende Lücken bei der Automatisierung - also dazwischen geschaltete, manuelle Schritte - können den Ablauf stoppen und zum Risiko werden. Mit der Einführung neuer Technologien entsteht Ausbildungsaufwand, der aufgebracht und von den Betroffenen in Anspruch genommen werden muss. Dies gilt auch für die Kenntnis über die Funktionalitäten beteiligter Teilprozesse, die in cross-funktionalen Teams immer wichtiger wird. Die Liste der dargestellten Risiken ist nicht vollständig und kann leicht erweitert werden.

Fazit

Als leuchtende Beispiele für Firmen, die schnelle Softwarelieferung mit hoher Qualität durch Einführung von DevOps erreicht haben, werden meist Firmen wie Netflix, Google oder Amazon genannt. Bei traditionell gewachsenen Firmen ist der Weg bis zu den implementierten Prozessen der Vorbilder weit. Es besteht im Umstellungsprozess die große Gefahr von Rückschlägen, sei es in Form neu aufgetretener Sicherheitslücken, nicht eingehaltener Compliance-Vorgaben oder funktionaler Qualitätsdefekte. Die Sicherstellung der geforderten Softwarequalität im Rahmen einer DevOps-Strategie ist eine herausfordernde Aufgabe, für die ein umfassendes Know-How erforderlich ist. Neben technologischen Umstellungen, die von entsprechenden Ausbildungsmaßnahmen zu flankieren sind, ist das Ändern der Unternehmenskultur wesentlich zu berücksichtigen. Qualität geht bei DevOps alle an, gerade auch in cross-funktionalen Teams. Optimal ist, wenn Mitarbeiter die Änderungen aktiv anstoßen oder zumindest mittragen und die Führung genügend Raum für die anstehenden Änderungen gibt.

 

Image
5

Veröffentlicht am 14.September 2023

Aktualisiert am 17.April 2024

Markus Thaler

Senior Testmanager, Testarchitekt

Markus Thaler war 22 Jahre in der Commerzbank tätig, wo er sich mehr als 10Jahre um Teststandards, Testwerkzeuge und Testautomatisierung in einer zentralen Funktiongekümmert hat, bevor er nach einer Zwischenstation im Testinfrastrukturmanagement achtJahre als Testmanager in der Risikofunktion der Commerzbank gewirkt hat. Vor derCommerzbank konnte er Testerfahrungen bei Lufthansa, Siemens, Nestle und der DZ-Bankgewinnen. Aktuell ist er als Senior Testmanager und Testarchitekt bei Qytera tätig.

Finden Sie weitere interessante Artikel zum Thema: