Mein IBM Anmelden Abonnieren
Was ist Shift-Left-Testing?

Was ist Shift-Left-Testing?

Erkunden Sie die Shift-Left-Testlösung von IBM Für KI-Updates anmelden
Diagramm, das zeigt, wie Shift-Left-Tests funktionieren
Was ist Shift-Left-Testing?

Was ist Shift-Left-Testing?

Shift-Left-Testing sind ein Ansatz in der Softwareentwicklung, bei dem die Testaktivitäten früher in den Entwicklungsprozess verlagert werden, um die Softwarequalität zu verbessern, eine bessere Testabdeckung zu gewährleisten, kontinuierliches Feedback zu liefern und die Markteinführungszeit zu verkürzen.

Waren Sie schon einmal an einem Softwareprojekt beteiligt, bei dem das Budget und alle Fristen überschritten wurden? Natürlich waren Sie das – wir alle waren das. Wenn nicht, sind Sie ein „Einhorn“, und ich würde gerne von Ihnen hören.

In den frühen Phasen meiner Karriere als Softwareentwickler habe ich gelernt, wie wichtig es ist, von einer Deadline aus rückwärts zu arbeiten. Wenn ein Projekt bis zu einem bestimmten Datum abgeschlossen sein muss und Tests eine gewisse Zeit in Anspruch nehmen, können wir diese Informationen nutzen, um rückwärts zu planen und ein Fälligkeitsdatum für unser Projekt festzulegen. Perfekt, oder?

Nun, nicht wirklich. Obwohl die rechtzeitige Fertigstellung für manuelle Tests den Stress in den letzten Tagen der Projekte etwas reduzierte, gab es immer noch zu viele Überraschungen.

Das Einplanen von Zeit für Qualitätssicherungstests ist in der Theorie großartig, aber in der Praxis scheitert es schnell, sobald der erste Fehler oder Defekt identifiziert wird.

Wie lange dauert die Behebung dieses Fehlers? Wie stark wird es sich auf den Zeitplan auswirken? Werden neue Fehler eingeführt? Wie stellen wir sicher, dass jeder Fix überprüft wird, um alles zu beheben, was wir kaputt gemacht haben, während wir das erste Problem behoben haben?

Letztendlich war ich nie in der Lage, die richtige Zeit für die Qualitätssicherung aufzuwenden. Unvermeidlich wurden in letzter Minute überstürzte Fixes zusammengeführt; ich lernte, meinen Kalender für ein paar Wochen nach großen Markteinführungen freizuhalten, damit ich alle Probleme, die wir in unserem wahnsinnigen Endspurt übersehen (oder eingeführt) hatten, sondieren konnte.

Das Problem war letztendlich nicht die für die Tests verfügbare Zeit, sondern das Timing der Tests. Ich musste früher und häufiger testen. Ich benötigte einen Shift-Left-Ansatz.

Wenn wir uns unseren Softwareentwicklungsprozess als eine Zeitachse vorstellen, die von links nach rechts verläuft, dann wird „Shift-Left-Testing“ (Testen durch Verschieben nach links) gewissermaßen selbsterklärend. Einfach ausgedrückt handelt es sich um die Praxis, frühere Phasen zu testen, Teammitglieder, einschließlich Tester, Entwickler und Stakeholder, in die Teststrategie einzubeziehen und Tests für bestehende und neue Funktionen häufiger in den Entwicklungslebenszyklus zu integrieren.

 

The Total Economic Impact™ von IBM Robotic Process Automation

Sehen Sie sich eine Kosten-Nutzen-Analyse von IBM Robotic Process Automation (RPA) an.

Ähnliche Inhalte Leitfaden zur intelligenten Automatisierung lesen
Das V-Modell der Softwareentwicklung

Das V-Modell der Softwareentwicklung

Das V-Modell ist eine nützliche Methode, um Softwareentwicklungszyklen zu konzipieren. Wenn wir den traditionellen Wasserfallfluss nehmen und die Y-Achse in der Umsetzungsphase „umdrehen“, erhalten wir das V-Modell.

Ein Entwicklungszyklus beginnt mit allgemeinen Anforderungen. Diese Anforderungen werden mit jedem Schritt nach unten im „V“ weiter eingegrenzt, bis wir die Implementierung auf Code-Ebene selbst erreichen. Anschließend überprüfen wir die Implementierung, beginnend mit den detailliertesten Komponententests und arbeiten uns dann entlang des „V“ zu den abstrakteren Benutzerakzeptanztests vor.

In einem Wasserfallprozess besteht das gesamte Projekt aus einem einzigen „V“. Als Branche haben wir gelernt, dass man sich im Grunde selbst zum Scheitern verurteilt, wenn man die gesamte Validierung bis zum Ende eines komplexen Projekts aufschiebt.

In einem iterativen Prozess können wir uns jeden Sprint oder jede Iteration als ein kleineres „V“ vorstellen. Wir haben theoretisch unsere Shift-Left-Ziele erreicht: früher und häufiger testen. Problem gelöst, oder? Nun, nicht wirklich.

Arten von Shift-Left-Testing

Arten von Shift-Left-Testing

Sie haben vielleicht bemerkt, dass der in das V-Modell integrierte Feedback-Kanal zwei Bezeichnungen hat: Verifizierung und Validierung. Beide Varianten sind wichtig.

Wir müssen validieren, ob unsere Benutzeranforderungen tatsächlich die Probleme lösen, die wir lösen wollten. Wir müssen auch sicherstellen, dass unsere Umsetzung den Spezifikationen entspricht, die wir aus diesen Benutzeranforderungen erhalten.

Automatisierte Tests können sowohl für Validierungen als auch für Verifizierungen eingesetzt werden. BDD (Behavior Driven Design) hat zur Entwicklung von Technologien wie Cucumber geführt, die einige Teile des Validierungsprozesses automatisieren können. In diesem Artikel konzentrieren wir uns auf automatisierte Tests zur Verifizierung.

Komponententest

Modultests überprüfen die Funktionalität eines bestimmten Moduls innerhalb einer größeren Anwendung. Das Modul wird isoliert getestet und jegliche Kommunikation mit anderen externen Prozessen wird simuliert oder nachgeahmt. Unit-Tests und TDD stellen die erste Entwicklungsphase im Shift-Left-Testing dar.

Integration Testing

Integrationstests dienen dazu, die Gesamtfunktionalität eines Dienstes oder einer Anwendung zu überprüfen, einschließlich der Nebeneffekte. Dieser Prozess ist aus Gründen, die wir später besprechen werden, ein Anti-Muster.

API-Tests und Contract-Tests

API-Tests überprüfen die externen Endgeräte eines einzelnen Services. Der Umfang von API-Tests ähnelt dem von Integrationstests. In einem SOA- oder Microservices-Kontext können wir uns API-Tests jedoch als die neuen Unit-Tests vorstellen.

UI-Tests

UI-Tests überprüfen die vollständige Funktionalität einer Anwendung von der Benutzeroberflächenebene aus. Tools wie Selenium machen automatisierte UI-Tests allgemein zugänglich.

Mehr als nur Automatisierung

Bei Shift-Left geht es nicht nur um Automatisierung. Eine weitere Möglichkeit, früher und häufiger zu testen, besteht darin, sicherzustellen, dass Ihre Qualitätssicherungsspezialisten in jeden Schritt Ihres Prozesses eingebunden sind, beginnend mit der Ermittlung und Erfassung der Anforderungen. Testingenieure können bessere Arbeit leisten, wenn sie ein besseres Verständnis für die Gesamtimplementierung haben, und ihre Erkenntnisse können dazu beitragen, die Architektur transparenter und widerstandsfähiger zu machen.

Erste Schritte mit Shift-Left-Testing

Erste Schritte mit Shift-Left-Testing

Wenn wir an „früher und häufiger“ testen denken, fällt uns ein bestimmtes Wort ein: kontinuierlich. Viele (die meisten) Softwareentwicklungsteams praktizieren eine Form der kontinuierlichen Integration und kontinuierlichen Bereitstellung. Kontinuierliches Testen ist eine wichtige Feedback-Schleife in diesem DevOps-Zyklus.

Kontinuierliche Tests

Wenn wir TDD als „Shift-Left für Monolithen“ betrachten, dann ist kontinuierliches Testen „Shift-Left für verteilte Architekturen“.

TDD hat uns geholfen, uns auf Unit-Tests zu konzentrieren. Bei kontinuierlichen Tests sollten wir uns auf API- und Vertragstests konzentrieren. API-Tests haben mehrere Vorteile:

  • API-Tests können eine der häufigsten Ursachen für Fehler in einer Microservice-Anwendung verhindern: die Änderung einer Abhängigkeit, die nicht mit den vor- oder nachgelagerten Diensten synchronisiert ist.

  • API-Tests können von demselben Team ausgeführt werden, von dem auch der Service ausgeführt wird.

  • API-Tests vermeiden die Brisanz der Prüfung von Nebenwirkungen und Implementierungsdetails.

Idealerweise werden diese API-Tests kontinuierlich sowohl in Produktions- als auch in Vorproduktionsumgebungen durchgeführt. Tools zur Vertragsprüfung können dabei helfen, diesen Prozess zu automatisieren, aber dafür ist eine zusätzliche Infrastruktur erforderlich.

Was wäre, wenn wir kontinuierliche API-Tests verwenden könnten, die in unser Observability-Tool integriert sind? Mit der neuen Funktion Synthetische API-Tests von Instana können Sie kontinuierlich und mit minimalem Aufwand API-Tests für alle Ihre Umgebungen durchführen.

Best Practices für Shift-Left-Testing in der agilen Entwicklung

Best Practices für Shift-Left-Testing in der agilen Entwicklung

Shift-Left bedeutet, dass die Testaktivitäten näher an den Anfang des Softwareentwicklungszyklus verschoben werden, wodurch schnelleres Feedback ermöglicht und der Zeit- und Arbeitsaufwand für die Fehlerbehebung reduziert wird. Hier sind einige bewährte Verfahren für das Shift-Left-Testing in der agilen Entwicklung:

  1. Frühe Einbindung: Testaktivitäten sollten so früh wie möglich im Entwicklungsprozess beginnen. Tester sollten bereits in der Phase der Anforderungserhebung einbezogen werden, um den Projektumfang, die Ziele und die Erwartungen der Benutzer zu verstehen.

  2. Zusammenarbeit und Kommunikation: Fördern Sie eine enge Zusammenarbeit und Kommunikation zwischen Entwicklern, Testern und anderen Stakeholdern. Fördern Sie tägliche Stand-up-Meetings, Sprint-Planungssitzungen und regelmäßige Retrospektiven, um ein gemeinsames Verständnis und eine gemeinsame Ausrichtung sicherzustellen.

  3. Testautomatisierung: Investieren Sie in Testautomatisierung, um häufige und effiziente Tests zu ermöglichen. Automatisierte Tests sollten parallel zum Entwicklungsprozess erstellt und in die kontinuierlichen Integrations- und Bereitstellungs-Pipelines integriert werden. Dies unterstützt die frühzeitige Erkennung von Fehlern, reduziert Regressionsprobleme und beschleunigt Feedback-Zyklen.

  4. Testgetriebene Entwicklung (TDD): Fördern Sie die Praxis von TDD, bei der Entwickler Testfälle schreiben, bevor sie den eigentlichen Code schreiben. Dieser Shift-Left-Testansatz hilft dabei, das gewünschte Verhalten und die erwarteten Ergebnisse im Voraus zu definieren, was zu einem robusteren und besser testbaren Code führt.

  5. Kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD): Implementieren Sie CI/CD-Pipelines, um die Prozesse für Erstellung, Test und Bereitstellung zu automatisieren. Durch diese Vorgehensweise wird sichergestellt, dass jede Codeänderung gründlich getestet und schnell und häufig in Produktionsumgebungen eingesetzt wird, wodurch das Risiko von Integrationsproblemen verringert wird.

  6. Shift-Left-Sicherheitstests: Erwägen Sie, Sicherheitstestverfahren frühzeitig in den Entwicklungsprozess zu integrieren. Führen Sie Sicherheitscode-Überprüfungen, statische Code-Analysen und sicherheitsorientierte Tests durch, um Schwachstellen zu identifizieren und diese proaktiv zu beheben.

  7. Explorative Tests: Fördern Sie neben automatisierten Tests auch explorative Tests, um die Anwendung aus der Perspektive der Benutzer zu untersuchen. Erfahrene Tester können potenzielle Probleme bei der Benutzerfreundlichkeit, Grenzfälle und Szenarien identifizieren, die bei automatisierten Tests möglicherweise übersehen werden.

  8. Leistungstests: Führen Sie frühzeitig Leistungstests durch, um potenzielle Engpässe und Probleme bei der Skalierbarkeit zu erkennen. Dies trägt dazu bei, die Leistung der Anwendung zu optimieren und sicherzustellen, dass sie die erforderlichen Leistungskriterien erfüllt.

  9. Testumgebungen und Daten: Stellen Sie Testumgebungen bereit, die den Produktionsumgebungen sehr ähnlich sind, um realistische Softwaretests zu gewährleisten. Stellen Sie außerdem sicher, dass ausreichend und repräsentative Testdaten zur Verfügung stehen, um reale Szenarien zu simulieren.

  10. Kontinuierliches Lernen und kontinuierliche Verbesserung: Fördern Sie eine Kultur des kontinuierlichen Lernens und der kontinuierlichen Verbesserung. Fördern Sie regelmäßige Retrospektiven, um über Testprozesse nachzudenken, Engpässe zu identifizieren und Änderungen umzusetzen, um die Effektivität des Shift-Left-Testing zu verbessern.

Durch die Umsetzung dieser Best Practices können agile Teams eine bessere Zusammenarbeit, schnelleres Feedback und hochwertigere Softwareprodukte durch Shift-Left-Tests erreichen.

Die Vorteile von Shift-Left-Tests

Die Vorteile von Shift-Left-Tests

Die kürzeren Feedback-Schleifen, die in die Shift-Left-Prozesse integriert sind, unterstützen uns in mehrfacher Hinsicht. Mängel können schneller gefunden werden, Korrekturen können effizienter vorgenommen werden und die in einem Durchlauf gewonnenen Erkenntnisse können im nächsten Durchlauf angewendet werden, um nur einige zu nennen.

Unabhängig von der Projektmanagement-Methode oder dem Veröffentlichungsrhythmus Ihres Teams können Sie von den kürzeren Feedbackschleifen für die Verifizierung durch Shift-Left-Tests profitieren.

Kosteneinsparungen

Die Identifizierung und Behebung eines Fehlers, der bei einem automatisierten Komponententest auf dem lokalen Computer eines Entwicklers festgestellt wird, kostet weniger. Ein Fehler, der durch einen automatisierten Komponententest auf dem lokalen Rechner eines Entwicklers gefunden wird, ist kostengünstiger zu identifizieren und zu beheben.

Wohlbefinden der Entwickler

Wenn sie richtig durchgeführt werden, können automatisierte Tests und CI das Vertrauen schaffen, das Software-Ingenieure benötigen, um Software häufig bereitzustellen – sogar freitags. Je schneller Mängel erkannt werden, desto weniger panische „Alle Hände an Deck“-Momente entstehen. Da die Releases so reibungslos verlaufen, lassen sich die wenigen Fehler, die dennoch auftreten, schneller und einfacher beheben.

Resiliente Architektur

Genauso wie leichter zugängliche Software in der Regel für uns alle einfacher zu bedienen ist, kann besser testbare Software einfacher zu verstehen und zu warten sein. Wenn Sie frühzeitig über Tests nachdenken, kann dies zu einer besseren Trennung der Anliegen und einer widerstandsfähigeren Gesamtarchitektur führen.

Bessere Gesamtqualität

Unser oberstes Ziel ist es, die Customer Experience zu verbessern. Durch den Shift-Left-Ansatz können einige Vorfälle, die bei Endbenutzern auftreten können, vermieden und die Auswirkungen anderer Vorfälle reduziert werden. Wir können Observability nutzen, um diese Feedbackschleife zu vervollständigen und den Gesamtzustand unserer Software zu verbessern.

Die Gefahren des Shift-Left-Ansatzes

Die Gefahren des Shift-Left-Ansatzes

Da uns leistungsstarke Automatisierungstools zur Verfügung stehen, kann es verlockend sein, jede Art von Test auf jede Codezeile anzuwenden. Das ist ein gefährlicher Weg.

Das Testen von Nebeneffekten – wurde dieser Datensatz tatsächlich in der Datenbank gespeichert? – ist eine attraktive Idee. Aber die Implementierung von Details zu testen, ist ein Anti-Muster, da diese Art von Tests extrem anfällig ist. Möglicherweise müssen diese jedes Mal geändert werden, wenn Ihre Anwendung geändert wird. Die Benutzeroberfläche ist ebenfalls ein Implementierungsdetail, sodass UI-Tests unter die gleiche Kategorie fallen.

Bei Verifizierungstests geht es nur um das „Was“, nicht um das „Wie“ oder das „Warum“. Im Idealfall wurden die Benutzeranforderungen so konzipiert, dass das „Warum“ validiert wird. Um die Frage nach dem „Wie“ zu beantworten, können wir auf eine leistungsfähigere Automatisierung in Form einer Observability-Plattform zurückgreifen.

Shift-Left vs. Shift-Right

Shift-Left vs. Shift-Right

Beim Shift-Right-Testing werden die Tests zu einem späteren Zeitpunkt im Entwicklungsprozess durchgeführt, in der Regel in der Produktionsumgebung. Auch wenn es seltsam erscheinen mag, ergänzen sich Shift-Left- und Shift-Right-Tests gegenseitig.

Durch Shift-Right-Tests können wir Produktionsprobleme erkennen, bevor unsere Kunden dies tun. Die kürzeren Feedbackschleifen von Shift-Left-Tests ermöglichen es uns, schnell auf diese Produktionsprobleme zu reagieren und sie zu beheben.

Synthetische API-Tests als Teil Ihrer Observability-Plattform sind die perfekte Möglichkeit, die Vorteile von Shift-Left- und Shift-Right-Praktiken zu kombinieren.

Shift-Left-Produkte

Shift-Left-Produkte

IBM Instana


Steigern Sie die Funktionalität und die Observability in Ihrem Unternehmens-APM, verbessern Sie das Application Performance Management und beschleunigen Sie CI/CD-Pipelines, unabhängig davon, wo sich die Anwendungen befinden.

IBM Instana kennenlernen

Shift-Left-Testressourcen

Shift-Left-Testressourcen

Was versteht man unter Beobachtbarkeit?

Erfahren Sie, wie Observability tiefe Einblicke in moderne verteilte Anwendungen ermöglicht, um Probleme schneller und automatisiert zu identifizieren und zu beheben.

Was sind kontinuierliche Tests?

Lesen Sie, wie kontinuierliche Tests eine entscheidende Rolle bei der Beschleunigung der Softwareentwicklung, der Verbesserung der Codequalität und der Vermeidung kostenintensiver Engpässe spielen.

Was ist DevOps?

Erfahren Sie, wie DevOps die Bereitstellung hochwertigerer Software beschleunigt, indem die Arbeit von Softwareentwicklungs- und IT-Teams kombiniert und automatisiert wird.

Was ist synthetische Überwachung?

Erfahren Sie alles, was Sie über „synthetische Überwachung“ wissen müssen, z. B. was es ist, wie man es einsetzt, welche Herausforderungen damit verbunden sind und vieles mehr.

Was versteht man unter Automatisierung?

Erfahren Sie, wie der Einsatz von Technologien, Programmen, Robotertechnik oder Prozessen dazu beitragen kann, mit minimalem menschlichem Einsatz ein Ergebnis zu erzielen.

Was ist Application Performance Management (APM)?

Mit Application Performance Management können Sie Leistungsprobleme vorhersagen und verhindern, bevor sie sich auf Ihr Unternehmen auswirken.

Machen Sie den nächsten Schritt

IBM Instana bietet Echtzeit-Observability, die wirklich jeder nutzen kann. Es sorgt für eine kurze Time-to-Value und stellt gleichzeitig sicher, dass Ihre Observability-Strategie mit der dynamischen Komplexität aktueller und zukünftiger Umgebungen mithalten kann. Von Mobilgeräten bis hin zu Mainframes unterstützt Instana über 250 Technologien und es kommen laufend weitere hinzu. 

IBM Instana kennenlernen Buchen Sie eine Live-Demo