Definition

Shift Left Testing

Was ist Shift Left Testing?

Shift Left Testing ist ein Ansatz für Softwaretests, bei dem der Code in früheren Phasen des Softwareentwicklungszyklus (Software Development Lifecycle, SDLC) getestet wird. Das Verschieben nach links (shift left) ist ein Verweis auf die Verschiebung des Testens auf die linke Seite des SDLC-Zeitplans. Die drei Hauptziele des Shift Left Testings sind die Beschleunigung des Testens, die Reduzierung der Anzahl von Fehlern im Code so früh wie möglich und die Verbesserung der Qualität des Codes und der Softwareanwendung.

In herkömmlichen Entwicklungsumgebungen verläuft der Entwicklungsprozess linear, wobei verschiedene Schritte nacheinander ausgeführt werden. Dieser sequenzielle Ansatz bedeutet, dass das Testen des Codes nach der Codeentwicklung, in den späteren Phasen des SDLC, erfolgt. Beim Shift-Left-Ansatz findet das Testen in früheren Phasen des SDLC statt, oft gleichzeitig mit der Entwicklung. Das Testen verschiebt sich auf der Zeitachse nach links.

Der Shift-Left-Ansatz veranschaulicht den allgemeinen Entwicklungsratschlag früh und oft testen. Traditionelle Testmodelle, die bis zu einem späteren Zeitpunkt im Entwicklungszyklus warten, können zu Engpässen in der Entwicklung führen. In der Regel entstehen diese Engpässe aufgrund von Fehlern und anderen Problemen im Code, die behoben werden müssen, bevor der Code in Produktion gehen kann. Je mehr Fehler gefunden werden, desto länger dauert es, den Code und die Anwendung fertigzustellen, was zu Verzögerungen und Nacharbeiten führt.

Um den Code in Produktion zu bringen und die Anwendung markt- oder kundenfähig zu machen, hilft Shift Left Testing den Entwicklungsteams, viele Fehler frühzeitig zu beseitigen, da es frühes, regelmäßiges Testen fördert.

Vorteile von Shift Left Testing

Beim Shift Left Testing geht es darum, die Tester früher in den SDLC einzubeziehen – in der Regel, wenn die Entwicklung bereits im Gange ist. Bei traditionellen SDLC-Modellen werden Tester erst in späteren Phasen in den SDLC einbezogen, wenn der Code bereits entwickelt ist.

Shift Left bedeutet, dass die Tester Probleme früher im Entwicklungszyklus finden. Noch wichtiger ist jedoch, dass die Entwickler die Probleme frühzeitig beheben können. Um die entdeckten Probleme zu korrigieren und Fehler zu vermeiden, erhalten sie mehr Zeit. Das frühere Erkennen von Problemen erleichtert die Fehlersuche, die schwieriger, zeitaufwendiger und kostspieliger wird, wenn die Software umfangreicher wird und mehr Funktionen enthält.

Es gibt weniger Aufwand mit der Arbeit und der Behebung einer fehlerhaften Implementierung, da Shift Left eine schnellere Entdeckung von Defekten und Fehlern ermöglicht. Es minimiert die Notwendigkeit, eine fehlerhafte Anwendung neu zu entwerfen, was viel zusätzliche Zeit, Mühe und Geld kostet.

Shift Left Testing macht es Projektmanagern (PMs) auch leichter, ausreichende Ressourcen für das Testen bereitzustellen. Die Tester werden stärker in die Planungsphasen des SDLC einbezogen. So wissen die PMs im Voraus, wie viele von ihnen während des SDLC benötigt werden, um Fehler zu finden und zu beheben, sobald sie auftreten.

Außerdem ermöglicht Shift Left Testing eine schneller Anwendungsentwicklung und eine schnellere Markteinführung. Das iterative und kontinuierliche Testen einer Anwendung während des SDLC schafft mehr Transparenz über den Entwicklungsstatus und die Produktqualität. Das Endprodukt ist von höherer Qualität und steht pünktlich für die Kunden bereit, da Probleme lange vor dem Bereitstellungsdatum behoben werden.

Mit Automatisierungs-Tools können Teams schließlich den Code frühzeitig und häufig testen – und zwar jedes Mal, wenn ein neues Feature oder eine neue Funktion hinzugefügt wird. Die Automatisierung minimiert die Belastung des Testteams und liefert dem Entwicklungsteams schnelleres Feedback. Das Testteam kann Tests schneller schreiben, und das Entwicklungsteam kann Probleme schneller beheben, was zu qualitativ hochwertigerem Code und einem besseren Gesamtprodukt führt.

Arten von Shift Left Testing

Entwicklungs- und Testteams können aus mehreren Ansätzen für Shift Left Testing. Diese vier Methoden sind die gängigsten:

Traditionelles Shift Left Testing

Die traditionelle Shift-Left-Testmethode konzentriert sich auf Unit- und Integrationstests mit Unterstützung von API-Tests und modernen Test-Tools. Dabei stehen Akzeptanz- und Systemtests nicht im Vordergrund. Das Testen der Benutzeroberfläche – beispielsweise mit Aufzeichnungs- und Wiedergabewerkzeugen – ist nicht Teil des traditionellen Ansatzes.

Inkrementelles Shift Left Testing

Diese Methode zielt darauf ab, eine komplexe Entwicklung in kleinere, besser handhabbare Teile zu zerlegen. Sie ermöglicht das Testen kleinerer, aufeinander aufbauender Segmente. Sowohl die Entwicklungstests als auch die Betriebstests verschieben sich auf der Zeitachse nach links. Das bedeutet, dass sowohl die Codetests als auch die Tests für die Betriebsbereitschaft des Produkts früher im SDLC stattfinden.

Inkrementelles Testen eignet sich für das Testen großer oder komplexer Softwareanwendungen. Bei solchen Produkten können beim späteren Testen viele Fehler unentdeckt bleiben oder nicht behoben werden, was sich erheblich auf die Produktionszeiten und -kosten auswirkt. Die Aufteilung der Entwicklung in kleinere Inkremente kann dazu beitragen, diese ungünstigen Umstände zu vermeiden.

Agile/DevOps Shift Left Testing

Bei Agile/DevOps-Tests erfolgt das Testen in zahlreichen Sprints, das heißt in kurzen Zeitabschnitten, in denen die Tester den Code in Inkrementen testen. Häufig beschränkt sich das Modell auf Entwicklungstests ohne operative Tests, wobei die Testaktivitäten in den SDLC integriert sind. Automatisierte Testwerkzeuge beschleunigen das Testen und Fehler werden so früh wie möglich behoben. Ein wichtiger Aspekt des Agile/DevOps Shift Left Testings ist kontinuierliche Kommunikation und enge Zusammenarbeit zwischen den Teammitgliedern.

Modellbasiertes Shift Left Testing

Bei der modellbasierten Methode werden ausführbare Anforderungen, Architektur- und Designmodelle verwendet. Sie zielt darauf ab, einen großen Teil der Fehler zu eliminieren, die in den frühen Phasen des SDLC auftreten. Dieser Ansatz ist der neueste Trend beim Shift Left Testing, aber er ist bereits bei vielen Organisationen und Teams beliebt. Insbesondere bei denen, die ausführbare Modelle oder Simulationstests verwenden.

Unterschiedliche Typen an Softwaretests
Abbildung 1: Das sind die gängigsten Formen von Softwaretests.
Diese Definition wurde zuletzt im Januar 2024 aktualisiert

Erfahren Sie mehr über Softwareentwicklung