Blog

Shift Left - Richard Seidl

Geschrieben von Richard Seidl | 31.07.2023

Hinter Shift Left steckt die Idee, Qualität so früh wie möglich im Entwicklungsprozess zu betrachten. Denn je später Qualitätsprobleme gefunden werden, desto teurer und aufwändiger ist deren Behebung. D.h. wir versuchen, alle Aktivitäten, die zu hoher Qualität beitragen und ebenso Qualitätsprüfungen so früh wie möglich umzusetzen. Dabei spielen nicht nur saubere Unittests eine große Rolle, sondern auch die Entwicklungsumgebung, die Code-Qualität, der Inhalt der User-Stories, etc.

“Für viele meiner Kunden ist es überraschend, dass die Entwicklungsumgebung eine riesen Rolle spielt, weil ich darüber schon ganz, ganz viel Qualität in das Coding selbst reinbringen kann” – Alexander Vukovic

Seit 1989 beschäftigt Alex sich mich mit Softwareentwicklung, seit 1996 mit dem Spezialbereich Softwaretesting. Als leidenschaftlicher Entwickler ist ihm die Qualität von Software ein Herzensanliegen. Seine Kerngebiete liegen in der Beratung insbesondere im agilen Quality Coaching, Methoden Training, Product Owner, der internen Produktentwicklung und im Lasttestbereich. In seiner Freizeit arbeitet er als Lektor für Softwaretest und Qualitätsmanagement am Technikum Wien. Aktuell beschäftigt er sich mit dem razzfazz.io-Entwicklungsteam mit Node.js-Entwicklung, einer hochskalierbaren JavaScript-Serverplattform und JavaScript als Fullstack-Programmiersprache.

Highlights in dieser Episode:

  • Shift Left bedeutet, Qualitätssicherung so früh wie möglich in den Entwicklungsprozess zu integrieren
  • Ein Schlüssel zum Shift Left ist die Verbesserung der Codequalität direkt in der Entwicklungsumgebung
  • Unit Tests sind grundlegend für die Qualitätssicherung und sollten bereits in der Entwicklungsphase erstellt werden
  • Consumer Driven Contract Testing kann helfen, die Kommunikation zwischen verschiedenen Services zu testen und zu verbessern
  • Die Automatisierung der Qualitätssicherung durch Continuous Integration und Continuous Delivery/Deployment Pipeline ist entscheidend
  • Sicherheitsaspekte von Continuous Integration Systemen sind ein kritisches Thema und müssen sorgfältig behandelt werden
  • Das Leben ist zu kurz, um keine Unit Tests zu schreiben

Qualitätssicherung neu gedacht: Der Einfluss von Shift Left auf Qualität und Geschwindigkeit

In der Podcast-Episode “Shift Left” diskutieren wir Strategien, wie man Qualitätssicherung frühzeitig in den Entwicklungsprozess einbinden kann. Unsere Diskussion umfasst praktische Tipps zur Anwendung im Bereich der Anforderungen, Entwicklungsumgebungen und Testverfahren, unter Einbeziehung von Unit-Testing und Contract-Based Testing.

Die Bedeutung des Shift-Left-Ansatzes

In dieser Folge hatte ich die Gelegenheit mit Alex Vukovic, dem Mitgründer von Seqis und Agile-Quality-Coach, über das Konzept des ‘Shift Left’ zu sprechen. Dieser Ansatz zielt darauf ab, Qualitätssicherungsmaßnahmen so früh wie möglich im Entwicklungsprozess zu integrieren, um die Effizienz zu steigern und Fehlerkosten zu minimieren. Durch das Verschieben qualitätssichernder Maßnahmen nach ‘links’, also näher an den Beginn des Entwicklungszyklus, können Probleme bereits im Keim erstickt und der gesamte Prozess optimiert werden.

Praktische Tipps für eine effektive Umsetzung

Alex teilte einige wertvolle Einsichten darüber, wie der Shift-Left-Ansatz in der Praxis angewendet werden kann. Dazu gehört beispielsweise die sorgfältige Gestaltung von Anforderungen und User Stories, die Nutzung fortschrittlicher Entwicklungsumgebungen mit Unterstützung für Refactoring und statische Codeanalysen sowie die Fokussierung auf Unit-Testing als fundamentale Basis für eine robuste Softwarequalität. Durch diese Maßnahmen wird nicht nur die Qualität verbessert, sondern auch der Entwicklungsprozess beschleunigt.

Die Rolle der Entwicklungsumgebung

Ein zentraler Aspekt des Shift-Left-Konzepts ist die Bedeutung einer leistungsfähigen Entwicklungsumgebung. Tools wie IntelliJ oder Visual Studio Code bieten mächtige Funktionen zur Unterstützung von Qualitätssicherungsmaßnahmen direkt im Codierungsprozess. Beispielsweise ermöglichen Plugins zur Messung der Cyclomatic Complexity unmittelbares Feedback zur Komplexität des Codes, was wiederum hilft, potenzielle Probleme frühzeitig zu erkennen und zu beheben.

Unit-Testing als Grundpfeiler

Ein weiterer wichtiger Punkt ist das Unit-Testing. Sie sind die Grundvoraussetzung für eine kontinuierliche Qualitätsverbesserung und bilden ein feinmaschiges Netzwerk an Regressionstests, das es ermöglicht, Änderungen sicher vorzunehmen und dabei gleichzeitig sicherzustellen, dass bestehende Funktionalitäten nicht beeinträchtigt werden. Unit-Tests ermöglichen es Entwicklern, mit Vertrauen und Sicherheit am Code zu arbeiten.

Contract-Based Testing für APIs

Die Integration von Consumer Driven Contract Testing bietet eine effiziente Methode um sicherzustellen, dass APIs korrekt funktionieren und kompatibel mit verbrauchenden Services sind. Tools wie PACT ermöglichen es Teams Verträge für APIs festzulegen und automatisierte Tests gegen diese Verträge durchzuführen. Dies reduziert die Notwendigkeit komplexer Integrationstests und unterstützt eine schnellere Entwicklung bei gleichbleibender Qualität.

Das große Bild sehen

Shift Left ist mehr als nur eine Methodik ist; es ist eine Philosophie zur Qualitätsverbesserung im Softwareentwicklungsprozess. Durch frühzeitige Integration von Qualitätssicherungsmaßnahmen und den Einsatz geeigneter Werkzeuge können Teams nicht nur Fehlerkosten reduzieren, sondern auch schneller hochwertige Software liefern.