CONTINUOUS DELIVERY
Kurze Zyklen
Continuous Delivery ist ein Softwareentwicklungsansatz, bei dem Teams Software in kurzen Zyklen entwickeln, erstellen, testen und bereitstellen. Aufgrund des hohen Automatisierungsgrades kann die Software grundsätzlich bei jedem Sprint getestet ausgeliefert werden und – sofern sinnvoll und benötigt – auch mehrfach pro Sprint.
Risikominimierung
Mit Continuous Delivery wird ihre Software kontinuierlich und zu einem sehr frühen Zeitpunkt erstellt, getestet und auf Systemen deployed.
Damit werden Risiken und Kosten bei der Bereitstellung von Softwareerweiterungen und -änderungen reduziert, indem inkrementelle Updates für Anwendungen in der Produktion erleichtert werden.
„Shift left“
Shift left beschreibt den Ansatz Build- und Testaktivitäten möglichst nah an den Entwicklungsprozess anzudocken und kontinuierlich zu testen. „Shift left“ deshalb, weil damit starre und monolithische Testvorhaben („Wir testen alle 6 Monate auf unserer Staging-Umgebung“) durch hochautomatisierte, agile und inkrementelle Tests ersetzt werden. So entfällt das Risiko, dass Fehler erst sehr spät bemerkt werden und viel Kosten / Aufwand / Ärger bei der Behebung verursachen.
Weniger Integrationsrisiken
Das Hauptziel von Continuous Integration (CI) ist die Vermeidung von Integrationsproblemen verschiedener Artefakte untereinander und mit der vorhandenen Produktionsumgebung. Daher werden nach dem automatisierten Testen einzelner Komponenten Integrationstests durchgeführt, um potenzielle Probleme im Zusammenspiel verschiedener Softwarekomponenten frühzeitig zu entdecken.
Methodik
Nicht alles ist mit Tools lösbar. Methodiken wie „Test Driven Development“ können einen stärkeren Fokus auf die Testbarkeit von Software richten. Anstatt sich nur auf die Werkzeuge zu verlassen, erarbeiten wir mit Ihren Entwicklungsteams eine passende Strategie, um den Teams mehr Verantwortung und Eigenständigkeit zu übertragen und gleichzeitig die Softwarequalität messbar zu steigern.
Tools
„A fool with a tool is still a fool.“ Dennoch sind für die Automatisierung von Softwarebereitstellung und -test eine Vielzahl von Werkzeugen nützlich und notwendig. Wir bringen praktische Expertise in den gängigsten Werkzeugen mit und entscheiden mit Ihnen gemeinsam, welche für den Einsatz bei Ihnen am besten geeignet sind.
Testbarkeit von Anforderungen
Tests, egal ob automatisiert oder nicht, dienen keinem Selbstzweck, sondern bilden die Akzeptanzkriterien von Userstories ab. Das bedeutet natürlich, dass zunächst messbare und testbare Akzeptanzkriterien definiert sein müssen. Ist dies nicht der Fall, helfen unsere erfahrenen Coaches und Requirement Engineers Ihren Product Ownern bei der Formulierung von funktionalen und nichtfunktionalen Akzeptanzkriterien als Grundlage für alle Testvorhaben.
Hoher Automatisierungsgrad
Damit die Softwarequalität mit der agilen Entwicklung Schritt halten kann, empfehlen wir unseren Kunden einen möglichst hohen Automatisierungsgrad der Testmaßnahmen. Das ermöglicht häufige Testwiederholungen und bringt die Testdurchführung zeitlich nah an die Entwicklungsiteration. Zusätzlich erhöht sich die Reproduzierbarkeit gefundener Fehler drastisch durch die immer wiederholbaren Testszenarien.
Schnelle Ergebnisse
Agiles Testen liefert schnelle Ergebnisse und erleichtert die Behebung der Fehler spürbar. Zudem wird das Risiko durch verschleppte Fehler im Betrieb und die langfristige Verschlechterung der Softwarequalität durch kumulierte Bugs stark reduziert. Mit unseren Tools zeigen wir außerdem Lücken in der Testabdeckung auf, um Risiken in der Softwarequalität erkennbar zu machen.
Testanalyse & Monitoring
Zu einem agilen Testvorgehen gehören neben der technischen Umsetzung der Testmaßnahmen natürlich auch eine sinnvolle Teststrategie, ein automatisiertes Testdatenmanagement, das Daten reproduzierbar und automatisiert bereitstellt, und gute Analysemöglichkeiten für gefundene Auffälligkeiten.

Das Scrum Team verfeinert und schätzt die User Stories, die vom Product Owner am höchsten priorisiert wurden.
Das Entwicklungsteam arbeitet an den Userstories für den aktuellen Sprint und führt Daily Stand-ups durch.
Unit Tests sind Bestandteil der „Definition of Done“ und testen die entwickelten Methoden und Schnittstellen.
Automatisierte Regressionstests überprüfen laufend, dass durch neuen Code keine bestehenden Funktionalitäten gestört werden.
Automatisierte Performance- & Kapazitätstests geben laufend Auskunft über die Qualität des aktuellen Inkrements.
Das Entwicklungsteam präsentiert dem Product Owner die Sprintergebnisse und erhält direktes Feedback.
Die entwickelten und kontinuierlich automatisiert getesteten Artefakte sind bereit zum Deployment bzw. werden automatisch auf dem Zielsystem deployed.
Bugs werden während des laufenden Sprints gefunden und direkt behoben. Dies führt zu einer frühzeitigen und kontinuierlichen Verbesserung der Softwarequalität.
Ihr Ansprechpartner zu diesem Thema
Stephan Rossbach
Agile Coach | Scrum Master | Agile Testmanager