Schriftliche DevOps-Schulung
Warum braucht Ihre DevOps-Organisation Testautomatisierung?
Wenn Ihre Abteilung für Softwarebereitstellung noch keine gute Testautomatisierung hat, sind Entwicklung und Test offenbar schlecht verzahnt. Ihre Entwickler erhalten erst Rückmeldung zur Qualität ihrer Arbeit, wenn sie bereits mit anderen Aufgaben beschäftigt sind. Sie übersehen häufig den Zusammenhang zwischen Fehlern und Code, den sie geschrieben oder ausgelassen haben. Der Kontextwechsel zurück zu dem Zeitpunkt, an dem der Fehler entstand, kostet Produktivität. Da der Zusammenhang zwischen Systemen und Fehlern bei spätem Feedback komplex und unklar ist, sind gute Korrekturen ohne Behelfslösungen kaum zu erwarten.
Ohne Testautomatisierung braucht Ihre DevOps-Organisation mehr Zeit und Geld, um hochwertige Produkte und Dienstleistungen zu liefern. Für Technologieorganisationen ist das im 21. Jahrhundert kein skalierbares Geschäftsmodell mehr, unabhängig von der Branche.
Sie können Ihre Tests automatisieren,
doch Qualität entsteht durch Menschen
Ihr DevOps-Team sollte möglichst viele Testfälle automatisieren. Tests lassen sich automatisieren, das Urteilsvermögen des Teams für gute Qualität hingegen nicht. Setzen Sie Ihre Fachkräfte deshalb nicht für wiederkehrende, wiederholbare Aufgaben ein, die Software übernehmen kann.
DevOps-Grundsätze für gute Testautomatisierung
- Automatisierte Tests sollten schnelle und frühzeitige Rückmeldung zur Qualität Ihrer Arbeit geben.
- Bei gleichen Bedingungen sollten Tests in verschiedenen Durchläufen konsistente, deterministische und reproduzierbare Ergebnisse liefern.
- Tests sollten keine falsch positiven Ergebnisse liefern.
- Wenige automatisierte, zuverlässige Testfälle sind besser als viele manuelle, unzuverlässige Tests, die selbst bei gleichen Bedingungen widersprüchliche Ergebnisse liefern können.
- Prüfen Sie zuerst die wichtigsten Funktionen und Vorteile für interne und externe Kunden. Schon diese Testautomatisierung ist deutlich besser als gar keine.
- Automatisieren Sie anschließend möglichst viele Testfälle, damit Ihre DevOps-Teams ihre Fachkräfte bestmöglich einsetzen.
- Vermeiden Sie langsames Feedback in festen Abständen. Sie brauchen schnelle Rückmeldung, sobald Sie oder ein Entwickler Code in den Trunk einchecken möchten.
- Sind automatisierte Tests zu langsam, beschleunigen Sie die Tests und/oder die Software. Das ist sowohl für eine zuverlässige Continuous-Delivery-Plattform und Deployment-Pipeline als auch für eine hohe Servicequalität entscheidend. Führen Sie automatisierte Tests parallel aus, um noch schneller zu werden.
- Erwägen Sie testgetriebene Entwicklung. Schreiben Sie zuerst die automatisierten Tests und entwickeln Sie dann die Software.
Testautomatisierung ist zentral für Continuous Delivery und die Deployment-Pipeline
Wie erläutert, können Entwickler mit DevOps ihren Code selbst in Produktion bringen. Beobachtungen in frühen DevOps-Teams haben jedoch gezeigt, dass Entwickler Code schnell in den Trunk einchecken und Tickets schließen, aber davor zurückschrecken, die Bereitstellung in Produktion auszulösen. Sie fürchten, Produktionssysteme zu beschädigen und dafür verantwortlich gemacht zu werden.
Erst als DevOps-Teams mit automatisierten Tests eine umfassende und verlässliche Testabdeckung aufgebaut hatten, konnten Entwickler diese Angst überwinden.
Ein Beispiel: Wenn bei Google ein Entwickler Code in den Trunk eincheckt, laufen zunächst statische Codeanalyse, Duplikatanalyse und Analyse der Testabdeckung. Danach prüfen fast eine Million automatisierte Testfälle den Code. Wenn alle Prüfungen und Tests erfolgreich sind, wird der Build aus dem Trunk erstellt, in Produktion gebracht und auf alle anderen Produktionsserver repliziert. So bleiben 5.000 kleine, unabhängige Google-Teams produktiv und führen täglich Zehntausende Produktions-Deployments durch. Ohne Testautomatisierung wäre das nicht möglich.
Schnelles und verlässliches Feedback ist die einzige Möglichkeit, eine sichere Deployment-Pipeline zu betreiben und ihre Integrität zu schützen. Wird die Pipeline durch fehlgeschlagene automatisierte Tests unterbrochen, behebt das Team fehlerhaften Code und Konfigurationen vor jedem weiteren Check-in in den Trunk. Wenn Sie in der Pipeline einen Fehler finden, den ein automatisierter Testfall früher erkannt und verhindert hätte, erstellen Sie den Testfall und nehmen ihn in Ihr Test-Repository auf.
Testarten, die sich automatisieren lassen
- Unit-Tests: Prüfen einzelne Funktionen, Klassen oder Module Ihrer Anwendungen.
- Abnahmetests: Prüfen die Funktionen und Vorteile, die Ihre Anwendungen den Kunden bieten.
- Integrations- bzw. Servicetests: Prüfen das Zusammenspiel Ihrer Anwendungen und die durchgängigen Dienstabläufe.
- Leistungs- und Stresstests: Prüfen, wie gut Ihre Dienste bei erwarteter und unerwarteter Kundenlast skalieren. Das ist besonders für die am häufigsten genutzten Dienste wichtig.
- Nichtfunktionale Tests: Prüfen Sicherheit, Verfügbarkeit, Kapazität und Skalierbarkeit.
Wenn sich Unit- und Abnahmetests schwer automatisieren lassen und Ihr Team vor allem automatisierte Integrations- oder Servicetests nutzt, ist Ihre Architektur vermutlich eng gekoppelt. Suchen Sie nach Möglichkeiten, ihre Bestandteile zu entkoppeln.
FAZIT
Dieses Kapitel hat erläutert, warum Testautomatisierung für DevOps wichtig ist. Sie ermöglicht sichere und schnelle Bereitstellung.
Ob Ihre Organisation DevOps einführt oder nicht: Ohne Testautomatisierung lässt sich keine erstklassige, erfolgreiche, produktive und profitable IT-Organisation aufbauen, die interne und externe Kunden gut betreut.
