Wer kennt nicht folgende, typische Situation
Das Datum für den nächsten Release wurde bereits kommuniziert, allerdings ist die Entwicklung noch voll daran die erwarteten Features zu implementieren. Die geplante Testphase reduziert sich somit bereits zum dritten Mal auf das absolute Minimum, damit überhaupt ansatzweise das versprochene Releasedatum gehalten werden kann. Man verzichtet somit bewusst auf Feedback über die Qualität des Softwareprodukts...
Aber wer sind am Tagesende nun die Gewinner und Verlierer dieses Vorgehens?
Der Gewinner ist einzig der Projektmanager, der in Time und Scope abgeliefert und somit (wahrscheinlich) seinen Bonus kassiert hat. Mehr Gewinner fallen mir nicht ein, Verlierer hingegen gibt es (leider) viele z.B.:
- Der Kunde: Aufgrund unzureichender Qualitätskontrolle muss er mit verschiedenen Fehlern in der Software bei seiner täglichen Arbeit leben und hat vermutlich Effizienz-Einbussen.
- Die Entwicklungsfirma: Aufgrund der fehlerhaften Software erhält der Kunde einen schlechten Eindruck über die Entwicklungsfirma und das Softwareprodukt und wird diese nicht mehr weiterempfehlen und im schlimmsten Fall sogar negativ darüber sprechen.
- Der Betrieb: Dieser muss verschiedene „hot patches“ und „bug fixes“ einspielen und dabei jedes Mal das Risiko eingehen, dass die Applikation anschliessend nicht mehr vollumfänglich funktioniert, welches somit wieder in weiteren Patches endet...
Aber wie könnte man obige Situation vermeiden?
Natürlich mittels DevOps.
Aber was heisst das nun im Detail?
DevOps ist derzeit in aller Munde, und ich vermute, dass Euch bei Eurer Firma das Wort auch schon begegnet ist. Grundsätzlich steht DevOps für Development & Operation und enthält im Namen weder „Test“ noch irgendetwas mit „QA“. Dadurch könnte man schlussfolgern, dass es nichts mit Testing zu tun hat und mich somit in meiner Rolle als Tester/Test Manger/Test Engineer nicht betrifft.
Aber ist dem wirklich so?
Mittels DevOps wird u.a. versucht, den Flow von Design über Entwicklung, Testing bis hin zum Betrieb zu beschleunigen, ohne dabei auf Feedback über die Qualität durch das Testing zu verzichten. Diese Beschleunigung, mit dem Ziel schneller und mit höherer Qualität zu releasen, verlangt ein komplettes Umdenken der Tester.
In DevOps gibt es z.B. keine dedizierte Testphase mehr, sondern das Testing wird kontinuierlich durchgeführt, im Idealfall bei jedem Build. Man spricht hierbei von Continuous Testing (CT). Dieses kontinuierliche Testing bedingt natürlich auch einen hohen Grad an Automatisierung, insbesondere Testautomatisierung.
Was heisst das nun schlussendlich für mich als Tester?
Ihr habt bestimmt schon von dem „Testing shift-left“ gehört, d.h. das Testing muss näher zur Entwicklung rücken. Aber kennt Ihr auch „Testing shift-right“? Canary, Chaos Engineering oder A/B Testing dürfen für die Tester keine Fremdwörter sein.
Welche weiteren Praktiken werden im DevOps eingesetzt, damit schnelles Feedback über die Qualität möglich ist? Diese und weitere Fragen werden euch bei unserem DevOps® Fundamentals Kurs beantwortet.