Links abbiegen, bitte

Shift-Left: Frühes Testen erhöht die Qualität

Jan Wolter

© Shutterstock / OpturaDesign

Shift-Left Testing bedeutet, möglichst früh im Entwicklungszyklus zu testen. Eine neue Studie wirft einen Blick auf dieses Konzept und seine Umsetzung in den Unternehmen.

Planen, entwickeln, testen, ausrollen – diese vier grundlegenden Schritte bestimmen traditionell den Software Development Lifecycle (SDLC). Doch 86 Prozent der Unternehmen nutzen laut einer Applause-Studie einen ganz anderen Ansatz: Sie testen Funktionen oder Units möglichst früh nach dem Coden. Diese Vorgehensweise heißt „Shift-Left Testing“, da die Testphase im SDLC nach links wandert.

Die Vorteile sind klar: Fehler fallen früher auf und können mit wenig Aufwand korrigiert werden. Das führt dazu, dass die Kosten für die Fehlerkorrekturen sinken. Denn wenn Fehler erst durch späte Tests oder gar beim Endnutzer aufgedeckt werden, ist der Korrekturaufwand groß. Zudem besteht die Gefahr, dass bestimmte Bugs gar nicht an die Entwickler gemeldet werden, weil die Zeitabläufe zu knapp kalkuliert sind. Shift-Left Testing dagegen sorgt dafür, dass die Release-Version ihre Nutzer schneller erreicht und dabei weniger Bugs hat. Dadurch sinkt auch die Notwendigkeit der Entwicklung von ebenfalls fehleranfälligen Hot-Fixes, idealerweise braucht es damit nämlich keine mehr.

Agilität bedeutet: früh und automatisch testen

Besonders notwendig sind die frühen Tests in der agilen Softwareentwicklung. Hier wird ohnehin inkrementell vorgegangen und es ist sinnvoll, Features direkt nach dem Coden einzeln zu testen. Dadurch ist die neue Version einer Software nach einem Sprint fehlerärmer als im herkömmlichen Entwicklungszyklus.

Die meisten Unternehmen haben das auch bereits erkannt: In fast jedem zweiten (44 Prozent) verbringen die Entwickler mindestens einen ganzen Arbeitstag pro Woche damit, ihren Code zu testen. Das bedeutet für die Entwickler zusätzlichen Stress.

Die für Tests aufgewendete Zeit fehlt ihnen dann häufig für ihre eigentlichen Aufgaben, so dass unter Umständen Termine nicht eingehalten werden können. In der Konsequenz werden Entwickler durch intensives Testen von der Weiterentwicklung einer Anwendung und der Implementation innovativer Funktionen abgehalten. Tatsächlich konnte die Studie eine sinkende Produktivität aufdecken. Mehr als die Hälfte (52 Prozent) der Teams, die acht oder mehr Stunden pro Woche mit Tests beschäftigt waren, beklagten diese Entwicklung.

Ein Ausweg aus dieser Situation ist der Einsatz von Testautomatisierung, und zwar ebenfalls möglichst früh im Entwicklungszyklus. Automatisierungsskripte bieten eine standardisierte Testumgebung, die einmal entwickelt und dann immer wieder genutzt wird. Dadurch kann sogar mehrmals täglich getestet werden. Die entdeckten Fehler werden anschließend von den Entwicklern direkt korrigiert. Dadurch steigt die Codequalität, aber auch die Testabdeckung. Eine weitere Möglichkeit, die Belastung der Entwickler zu verringern, ist die Nutzung eines Crowdsourced-Anbieters, um In-Sprint-Tests durchzuführen. Hierbei senden Unternehmen Funktionen zum Testen an einen Drittanbieter, sobald der Entwickler den Code fertig gestellt hat. Der Anbieter nutzt dann seine Crowdsourced-Community, um das Feature zu testen, sobald der Build eingegangen ist, so dass die Ergebnisse fast sofort zurückgegeben werden können – ohne zusätzlichen Aufwand für den Entwickler oder andere interne Teams.

Frühes Testen erhöht die Softwarequalität

Insgesamt beschleunigt sich so die gesamte Software-Bereitstellung und das Unternehmen kann die Anforderungen an Continuous Integration und Continuous Delivery (CI/CD) besser erfüllen. Denn das Shift-Left-Prinzip erlaubt es, die Auswirkungen von Code-Änderungen schneller zu beurteilen.

Zwar sind nachgelagerte Tests der gesamten Anwendung immer noch wichtig, doch bei ihnen geht es dann nur noch um das Zusammenspiel verschiedener Module oder Schnittstellen oder die Beurteilung der Bedienung durch die Endnutzer. Frühe Tests ermöglichen intelligentere Entscheidungen für die Weiterentwicklung, da beispielsweise die fehlerhafte Implementation von Algorithmen schneller auffällt.

Das ist besonders wichtig, wenn der Code-Umfang groß und die Anwendung längere Zeit ein Dauerprojekt für die Entwickler ist. Hier vermeiden frühe Tests ein besonders zeitaufwendiges und kostspieliges Problem: Unter Umständen wechseln Entwicklern während der Projektdauer in andere Projekte oder verlassen das Unternehmen. Die neuen Programmierer müssen sich dann erst einmal in den Code einarbeiten, was besonders bei der Fehlersuche erheblichen Druck erzeugt.

Trotzdem gibt es noch zahlreiche Unternehmen, in denen Shift-Left Testing nicht umgesetzt wird. Die Studie hat sich auch mit den Gründen beschäftigt. So ist Zeitmangel der Entwickler bei 45 Prozent der Unternehmen das Hauptproblem. Bei einem guten Drittel (37 Prozent) sind Entwicklung und Qualitätssicherung in getrennten Silos organisiert, sodass eine Verlagerung nach links nicht möglich ist.

Bessere Customer Experience und mehr Erfolg

Doch auch die Entwickler selbst sind nicht immer Freunde des frühen Testens: In 18 Prozent der Unternehmen haben sie sich gegen den Einsatz dieser Vorgehensweise entschieden. Ein genauer Blick auf die Gründe deckt auf, dass 44 Prozent der Entwickler Schwierigkeiten mit dem Kontextwechsel haben. Sie benötigen eine gewisse Zeit, sich in Code einzuarbeiten, der von anderen Entwicklern oder vor längerer Zeit entwickelt worden ist.

Letztlich ist dieses Problem jedoch gerade durch frühes (und damit rasches) Testen zu beheben: Die Codebasis ist noch frisch und die Entwickler können sich schneller in „ihren“ Quellcodes orientieren. Probleme mit dem Verständnis fremden Codes lassen sich durch einheitliche Anforderungen an den Aufbau von Code und Kommentaren mildern.

Der Schlüssel zum Erfolg mit dem Ansatz liegt darin, die Bedürfnisse und Anforderungen der internen und externen Kunden auszubalancieren. Dadurch können sie den Endnutzern schnell und kontinuierlich hochwertige Software-Releases liefern. Viele Unternehmen suchen jetzt nach Dienstleistern oder Freiberuflern als Möglichkeit, die frühen Tests innerhalb der Development-Sprints zu nutzen, ohne die Entwickler-Teams zu überlasten.

Das Konzept „Shift-Left Testing“ ist eine etablierte Herangehensweise. Sie bringt der breiten Mehrheit der Unternehmen dort Vorteile, wo es am wichtigsten ist: Für die Customer Experience und nicht zuletzt den wirtschaftlichen Erfolg der Unternehmen. Aber Entwickler und Tester stehen immer noch vor Herausforderungen bei der Einführung dieses Ansatzes und der Anpassung daran. Wie bei allen neuen Prozessen kann es einige Zeit dauern, bis alle Hindernisse aus dem Weg geräumt sind.

Geschrieben von
Jan Wolter
Jan Wolter
Als VP und Geschäftsführer EU leitet Jan Wolter das Europageschäft für Applause und ist verantwortlich für den Ausbau des Unternehmens im europäischen Markt. Zuvor war er CEO und Mitgründer von testhub, dem deutschen Softwaretesting-Anbieter, der sich im Mai 2014 mit Applause zusammenschloss. Durch beide Aufgaben verfügt er über jahrelange Erfahrung in der Umsetzung und Skalierung innovativer Testing-Lösungen und über tiefe Einblicke in die rasanten Entwicklungen der App Economy.
Kommentare

1
Hinterlasse einen Kommentar

avatar
4000
1 Kommentar Themen
0 Themen Antworten
0 Follower
 
Kommentar, auf das am meisten reagiert wurde
Beliebtestes Kommentar Thema
1 Kommentatoren
Peter Imhoff Letzte Kommentartoren
  Subscribe  
Benachrichtige mich zu:
Peter Imhoff
Gast
Peter Imhoff

Wer Tests als Stress empfindet hat TDD und die Vorteile nicht verstanden. Stress ist, wenn ein Problem erst in Produktion erkannt wird und kein Test vorhanden ist. Dazu empfehle ich Suche nach Oncle Bob und clean code…