Artikel
Software-Bereitstellung wird bedarfsorientiert

Unternehmen müssen die Fähigkeit entwickeln, wertvolle Software zu veröffentlichen, wann immer sie wollen. Doch trotz ihrer Bemühungen um kontinuierliche Bereitstellung und agile Arbeitsweise können viele Unternehmen immer noch keine funktionierende Software auf Abruf bereitstellen. Stattdessen braucht es oft mehrere Sprints, um funktionierende Software in Produktion zu bringen. Zukunftsorientierte Unternehmen entwickeln die Fähigkeit, hochwertige Software sofort in Produktion zu bringen.
Und warum? Weil zu viele Aktivitäten bis nach dem Sprint aufgeschoben werden, obwohl die Unternehmen immer mehr Wert auf die Produktion legen müssen. In diesem Artikel gehen wir auf die wichtigsten Probleme ein, mit denen IT-Organisationen konfrontiert sind, wenn sie hochwertige Software in die Produktion bringen. Anschließend schlagen wir eine Reihe von Schritten vor, mit denen Sie diese Probleme angehen können. Dies wird Unternehmen dabei helfen, einen sehr wichtigen Trend in den Griff zu bekommen: Unternehmen, die hochwertige Software sofort in die Produktion bringen.
Die Bereitstellung von Software auf Abruf ohne ordnungsgemäße Durchführung von Entwicklungs- und Testaktivitäten ist anfällig für Misserfolge. Das Ziel von Softwaretests als Disziplin ist es, zu überprüfen, ob wir das Richtige gebaut haben und zu validieren, ob wir das Richtige gebaut haben.
Um das Richtige zu entwickeln, müssen Sie die Funktionalität ständig mit einer bewussten und kritischen Denkweise hinterfragen. Automatisierte Tests dienen als Sicherheitsnetz, aber diese Prüfungen zeigen Ihnen lediglich, dass die Softwareentwicklung für einen aktuellen Sprint noch nicht abgeschlossen ist. Die eigentliche Frage ist, ob wir die richtige Funktionalität entwickeln, die uns hilft, unseren Marktanteil zu erhöhen, die Konkurrenz zu übertreffen oder im Idealfall beides? Eine starke Rolle des Product Owners und organisiertes, kontinuierliches Stakeholder-Feedback in Kombination mit Techniken wie Impact Mapping, Example Mapping und Specification by Example sind notwendige Zutaten, um zu verstehen, dass Ihr Unternehmen das Richtige baut.
Das Richtige zu bauen, dass solide und eindeutige Spezifikationen für die Funktionalität existieren und dazu verwendet werden, kontinuierlich zu überprüfen, ob die Software konform ist. Unternehmen sollten so viel wie möglich auf Automatisierung setzen, um das Feedback bei der Entwicklung der Software zu beschleunigen. Mit anderen Worten: Es hat wenig Sinn, fehlerhafte Software in die Produktion zu geben. Unternehmen müssen also eine ausgewogene Verteilung von automatisierten Tests auf den verschiedenen Ebenen Ihres Quellcodes (Einheiten, Komponenten, Integration, End-to-End) mit einem klaren Einblick in die Testabdeckung kombinieren, um die Gewissheit zu gewinnen, dass sie die Sache richtig aufbauen.
Eine Kombination aus beidem ist der richtige Weg. Unternehmen, die nicht auf Automatisierung setzen, werden ihren Aufwand in die Verifizierung stecken und feststellen, dass sie nicht, ähm, den Raum haben, sich auf die Validierung und echte Produktverbesserung zu konzentrieren. Nur dann können Unternehmen und Agile sofort Qualitätssoftware liefern.

Der bestehende Status Quo: Schmerzpunkte bei der Softwarebereitstellung
Unternehmen, die kontinuierliche Lieferung und agile Prinzipien anwenden, können immer noch unter einem schwerfälligen Testprozess leiden. Sie leiden in der Regel unter den folgenden Problemen:
Ineffiziente Organisation. Oft findet der Testprozess völlig getrennt vom Lieferprozess statt. Typische Symptome sind:
- Testen Sie erst, nachdem Sie die Software erstellt haben; setzen Sie die Ergebnisse des Testprozesses in den Backlog und fügen Sie sie erst in einem zukünftigen Sprint wieder ein, was die Innovation abwürgt; verbringen Sie Zeit mit der Behebung von Fehlern, anstatt neue Funktionen zu entwickeln.
- Verschiedene Mitglieder des Entwicklungsteams führen die Tests durch, die reinen Testtester. Diese Teammitglieder sind am Ende eines Sprints (im Falle eines agilen Prozesses) beschäftigt oder müssen dem IT-Projekt zugewiesen werden, wenn es "Testzeit" ist.
- Häufig sind Abnahmetests ein reines Blackbox-Verfahren, bei dem Benutzer oder Benutzervertreter Abnahmetestszenarien definieren, die erst sehr spät, d.h. während der Abnahmetestphase vor einer Veröffentlichung, in die Partei eintreten.
Mangelnde Unterstützung durch Tools. Ohne den richtigen Einsatz dauert es Tage oder Wochen, die Umgebungen einzurichten, die richtigen Versionen von Software und Diensten zu installieren, die richtigen Testdaten zu laden und die Tests durchzuführen. Je mehr Aufwand für die Einrichtung erforderlich ist, desto wahrscheinlicher ist es, dass die Testergebnisse aufgrund der manuellen Aktionen fehlerhaft und unzuverlässig sind. Tools können alle diese mühsamen Aktivitäten korrigieren.
Kein Ansatz, der auf Akzeptanz abzielt. Zum Teil aufgrund der positiven Denkweise und der optimistischen Einstellung fehlt es den Teams an Schärfe und Fokus. Ein akzeptanzorientierter Ansatz beschreibt die gewünschten Funktionen in Form von Akzeptanzkriterien - Funktionen, die nicht als solche beschrieben werden, werden einfach nicht geliefert. Durch den Einsatz moderner und weithin verfügbarer Tools haben die Teams einen Laserfokus auf das Erreichte und können auf diese Weise verhindern, dass sie die Risiken und Kosten überschätzen und unterschätzen.
Nächste Schritte für morgen - Beginnen Sie mit dem Ausstieg aus dem Test-Sumpf
Feedback ist der wahre Eckpfeiler eines jeden Entwicklungsteams. Nur mit dem richtigen Feedback können agile Teams sofort hochwertige Software liefern. Die Einrichtung eines Prozesses für sofortiges Qualitätsfeedback umfasst eine Reihe von Maßnahmen:
- Machen Sie das Testen und die Testautomatisierung zu einem integrierten Bestandteil des Lebenszyklus der Softwareentwicklung. Ziehen Sie die folgenden Aktivitäten in Betracht:
- Erweitern Sie Ihre bestehenden Continuous-Delivery-Pipelines, um alle Testautomatisierungslösungen zu einem integrierten Teil davon zu machen. Beziehen Sie Unit-Tests, Integrationstests und End-to-End-Tests ein und beseitigen Sie alle Abweichungen bei Testumgebungen, Testdaten, Testausführung und Berichterstattung.
- Unabhängig davon, ob Sie einen Test-first-Ansatz verwenden oder nicht, sollten Sie eine ausgewogene Testautomatisierungspyramide mit einer soliden Basis von Unit-Tests, Integrations-/Dienstleistungstests, die separate funktionale Teile der Anwendung abdecken, und einem minimalen Satz von dedizierten End-to-End-Tests entwickeln. Jeder dieser Tests sollte sich auf das Feedback früherer Tests stützen, um die Implementierung unnötiger oder doppelter Tests zu vermeiden.
- Entwickeln und pflegen Sie ein agiles Qualitätsdenken im gesamten Team. Beginnen Sie mit der Rolle des Product Owners und schreiben Sie die User Stories als ausführbare Spezifikationen auf, damit Tools zur Automatisierung der Prüfungen dieser Spezifikationen eingesetzt werden können. Freuen Sie sich über das Feedback und verbringen Sie wertvolle Zeit im Team mit der Beantwortung der folgenden Fragen, um diese Denkweise zu fördern:
- Wie ist die Definition von "fertig" und "erledigt" in Bezug auf die Qualität der User Stories und der gelieferten Funktionalität? Wie prüft das Team dies kontinuierlich?
- Wie erhält das Team qualitativ hochwertiges Feedback innerhalb von Minuten statt von Stunden?
- Welches Verhalten wird von den einzelnen Teammitgliedern erwartet, wenn sie sich bemühen, die Charta des Teams zu erreichen? Ermutigen wir uns gegenseitig, das Beste aus uns herauszuholen, anstatt zu kritisieren?
Wo soll ich anfangen?
Obwohl das gewünschte Endergebnis klar sein mag, ist es oft mühsam, mit der Verbesserung zu beginnen. Organisationen erleben bestehende Arbeitsweisen, Strukturen und interne Grenzen, die schon seit Jahren bestehen. Wie können Sie dieses Drehbuch umdrehen? Fangen Sie klein an, aber seien Sie gründlich.
Nehmen Sie einen vertikalen Ausschnitt aus einem Geschäftsprozess, gehen Sie die gesamte Wertschöpfungskette an und verbessern Sie sich, indem Sie Folgendes tun:
- Stellen Sie das kleinstmögliche, durchgängig verantwortliche Team zusammen.
- Schärfen Sie die agile Denkweise in Richtung eines Acceptance-First-Ansatzes. Entwickeln Sie für jede neue User Story mindestens einen (oder zwei) Akzeptanztests, die für die Automatisierung bereit sind. Lassen Sie das Team zuerst den fehlgeschlagenen automatisierten Test entwickeln und stoppen Sie die Entwicklung der Funktionalität, sobald der automatisierte Test "grün" meldet. Im Falle von Fehlern entwickeln Sie zuerst einen automatisierten Test, der diesen Fehler wiederholt aufdeckt, bevor das Team den Fehler behebt.
- Stellen Sie sicher, dass neue Funktionen isoliert entwickelt und getestet werden können. Verwenden Sie eine Strategie, um zusätzlichen Kontext wegzuspielen.
- Seien Sie darauf vorbereitet, alle automatisierten Tests ständig laufen zu lassen. Wenn es langsam wird, verbessern Sie den Feedback-Zyklus, indem Sie die Tests überarbeiten oder mehr (virtuelle) Leistung hinzufügen.
- Eliminieren. Alle. Manuell. Sich wiederholenden. Aufgaben. Wählen Sie einen radikalen Automatisierungsansatz für die Scheibe und gehen Sie keine Kompromisse ein. Zeigen Sie, dass es machbar ist!
Dieser Artikel ist Teil des Urgent Future IT Forecast 2017.
{{cta('b89d0ce0-d977-48b9-b7c5-96354d8e52e4','justifycenter')}}

Unsere Ideen
Weitere Artikel

Design für Verhaltensänderungen: Die Macht der Konsequenzen
Entdecken Sie die Macht der Konsequenzen, wenn es um Verhaltensänderungen geht. Lernen Sie, wie Sie Menschen motivieren können, indem Sie ihre...
Andrea Clasquin

Bei Verhaltensänderungen geht es (nicht) um Sie!
Entdecken Sie die Definition von Verhaltensänderungen, lernen Sie, wie Sie ein verhaltenswissenschaftliches Modell nutzen können, und vermeiden Sie...
Andrea Clasquin
Contact

