Was ist Shift Left Testing? Und was bedeutet es für DevOps?

Die Schicht-Links-Testmethodik ist ein Ansatz für Softwaretests, der Testanforderungen früher in den Softwareentwicklungszyklus einführt.

 

Die Softwareentwicklung hat sich in den letzten Jahrzehnten sehr entwickelt. Heute können Performance-Ingenieure und Tester eine beliebige Anzahl von Automatisierungs-, Machine-Learning- und KI-Tools in ihre Tests integrieren. Es ist noch gar nicht so lange her, da war Das Software-Testen eine Randnotiz. Tatsächlich hatte die frühe Softwareentwicklung nicht einmal eine formale Testphase. Die Einführung von Tests kam erst zustande, als die Software komplexer wurde, wo Fehler und Defekte aus der Produktionsumgebung das Geschäft beeinflussten. Die Entwickler führten die Tests selbst durch, nicht ein separates Team. Auf diese Weise entstand funktionale Tests und wurde Teil des traditionellen Wasserfallmodells, das aus separaten Stufen (Analyse, Anforderungen, Design, Codierung, Testen, Abnahme, Produktion und Postproduktion) bestand, die sich durch einen linearen Pfad bewegten, ähnlich einer Montagelinie in einer Fabrik.

Wasserfall-Modell

Wasserfall Modell von Paul Hoadley. Wird unter der Creative Commons-Lizenz verwendet.

 

Sobald jede Phase abgeschlossen war, ging sie auf die nächste Gruppe über und bewegte sich die Linie hinunter. Auf dem Papier sah es gut aus, aber QS testete den Code erst, nachdem die meisten dieser Phasen abgeschlossen waren. Folglich blieb nur noch sehr wenig Zeit, um den Code vor der Produktion zu beanstanden. Wenn das Problem oder der Fehler schwerwiegend genug war, bedeutete dies, das Projekt zu verschrotten oder zu verzögern. Darüber hinaus bedeutete dies einen potenziellen großen Verlust für Unternehmen, abhängig von der Bedeutung der Software-Anwendung.

 

Shift Left Testing – Grundsteinlegung

Glücklicherweise trugen die kostspieligen Lehren aus früheren Entwicklungsfehlern dazu bei, die Shift-Left-Methode einzuführen. Organisationen erkannten, dass das Identifizieren von Problemen spät im Spiel nicht nur zu teuer, sondern auch riskant war. Ein TechRepublic Artikel vom Mai 2019 berichtete, dass die durchschnittlichen jährlichen Kosten für die Behebung visueller Fehler in der Software über 400.000 US-Dollar betragen. Nicht gerade chump ändern.

Darüber hinaus veränderte sich die Branche insgesamt. Es gab eine digitale Transformation, mit der Unternehmen zu kämpfen hatten. Organisationen begannen zu erkennen, dass sie sich nicht mehr auf ein bis zwei Release-Zyklen pro Jahr verlassen konnten. Die Erwartungen und Anforderungen der Kunden waren hoch. Die Freigabe eines schlecht gestalteten Produkts bedeutete, Kunden an die Konkurrenz zu verlieren. Etwas musste sich ändern.

Organisationen begannen, den Entwicklungszyklus in kleinere, überschaubare Blöcke aufzuteilen und Tests in jede Phase zu integrieren. Dies ermöglichte eine kollaborativere Umgebung und gab den Teams die Möglichkeit, Probleme früher zu erkennen. Beispielsweise könnten Testteams durch ein besseres Verständnis der Softwareanforderungen früher im Prozess bei der Entwicklung besserer Testfälle helfen, um potenzielle Fehler zu beheben. Dies wird auch als “früh und oft versagen” oder “schnelles Versagen” bezeichnet. Die Berücksichtigung von Benutzerszenarien und Softwareverhalten zu einem früheren Beginn des Prozesses beseitigt potenzielle Fehler und optimiert Code. Dies ermöglicht es Teams, ein konsistentes Produkt zu liefern.

Offensichtlich wird es Zeiten geben, in denen Tests einfach keinen Sinn machen. Sie können z. B. keine GUI-Tests durchführen, bis Sie über eine GUI verfügen. Der Linksruck ist jedoch eher eine Denkweise, nicht nur ein Entwicklungsprozess. Am wichtigsten ist, dass Teams immer darüber nachdenken, was eine bessere Benutzererfahrung ausmacht. Letztlich ist es der Benutzer, der das Endprodukt in der Hand hat. Alles, was eine Anwendung verbessern kann, bevor sie in die Produktion geschoben wird, kommt allen zugute.

 

Der Aufstieg von Shift Left Testing und Agile und DevOps

Aufgrund des zunehmenden technologischen Fortschritts und der Fokussierung auf das digitale Erlebnis kam es zu einem Paradigmenwechsel. Entwicklungs- und Testzyklen wurden kürzer und häufiger. Dies führte dazu, dass neue Funktionen früher auf den Markt gebracht wurden. Am wichtigsten ist, dass dies nicht nur den Unternehmen ermöglichte, wettbewerbsfähig zu bleiben, sondern auch die Kunden glücklich und engagiert hielt. Beispielsweise arbeiten mobile und Webanwendungen in der Regel innerhalb von zweiwöchigen Veröffentlichungszyklen. Einige Organisationen veröffentlichen täglich Updates – oder sogar stündlich!

Der Fokus für die Anwendungs- und Softwareentwicklung liegt darauf, schnell, agil zu sein und Risiken zu reduzieren. Unternehmen begegnen dieser Herausforderung durch agile Softwareentwicklung und DevOps-Praktiken. Agile Softwareentwicklung ähnelt dem Wasserfallmodell; Der Hauptunterschied besteht jedoch darin, dass es in einem Wasserfallmodell immer eine Testphase nach der Entwurfsphase gibt. Die Agile-Methode unterteilt die Entwicklung in kleine Iterationen, die als Sprints bezeichnet werden und nicht mehr als vier Wochen dauern. Jeder Sprint umfasst funktionsübergreifende Teammitglieder, die an allen Aspekten des Sprints arbeiten, wobei die Tests in jeder Iteration abgeschlossen werden. Dies ermöglicht eine größere Zusammenarbeit zwischen Teammitgliedern, kürzere Feedback-Zyklen und ein Produkt mit höherer Qualität.

Und das ist ein weiterer wichtiger Faktor bei der Schicht-Links-Prüfung. Bei herkömmlichen Wasserfalltests liegt die Verantwortung für das Testen und Verwalten der Qualität des Produkts beim QS-Team. In Shift-Links-Tests und Agile-Umgebungen führen Entwickler und Tester die eigentlichen Tests durch, aber die Verantwortung liegt letztlich bei jedem aufgrund seines kollaborativen, funktionsübergreifenden Ansatzes während der Entwicklung. Heute gibt es vier verschiedene Ansätze für Linksverschiebungstests: Traditionelle, inkrementelle, agile/DevOps und modellbasierte Shift-Links-Tests.

 

Arten von Shift Left Testing

Die traditionellen Shift-Links-Tests, an die die meisten Denken denken, bewegen die Tests nach unten und leicht links vom klassischen V-Modell.

Traditionelle Shift-Links-Tests

Traditionelle Shift Left Testing von Don Firesmith. Wird unter der Creative Commons-Lizenz verwendet.

Inkrementelle Shift Left Testing

Inkrementelle Shift Left Testing von Don Firesmith. Wird unter der Creative Commons-Lizenz verwendet.

Inkrementelle Schicht-Links-Tests sind ideal für große, komplexe Projekte mit Hardwareabhängigkeiten. Durch inkrementelles Testen stellt es sicher, dass jedes Segment des Systems funktionsfähig ist, bevor es zum nächsten Schritt übergeht.

Agile/DevOps Shift-Linkstests, die in kurzen, iterativen Sprints abgeschlossen und in der Regel in Entwicklungstests und nicht in Entwicklungstests durchgeführt werden. Dies geschieht, sobald das System in Betrieb genommen wird.

Agile DevOps Shift Linkstests

Agile/DevOps Shift Left Testing von Don Firesmith. Wird unter der Creative Commons-Lizenz verwendet.

Modellbasierte Shift-Links-Tests

Modellbasierte Shift Left Testing von Don Firesmith. Wird unter der Creative Commons-Lizenz verwendet.

Modellbasierte Schicht-Links-Tests sollen Mängel in der Anforderungsphase beheben, in der die meisten Fehler eingeführt werden. Die vorherige Verschiebung links Methoden oben beginnen Tests im Entwicklungszyklus. Auf diese Weise können die Tests so früh wie möglich abgeschlossen werden.

In den letzten Jahren ist der Begriff DevOps mehr zu einem Schlagwort für Marketing, Softwareprodukte und sogar Stellenbeschreibungen geworden. Einfach ausgedrückt: DevOps ist ein alternativer Rahmen innerhalb des Agile-Ansatzes, der darauf abzielt, Entwicklungs- und Operations-Teams zusammenzubringen. Historisch gesehen hatte jede Abteilung ihre jeweiligen, manchmal widersprüchlichen Ziele. Entwickler erstellen, entwerfen und innovieren. Die Betriebsteams konzentrieren sich auf die Infrastruktur und darauf, das Licht an zu halten, indem sie die Verfügbarkeit kontinuierlich überwachen, um die Verfügbarkeit sicherzustellen. In ähnlicher Weise wurde DevOps speziell entwickelt, um mehr Zusammenarbeit, Feedback und Agilität zwischen diesen Abteilungen zu ermöglichen. DevOps wird auch erwähnt, wenn es um CI/CD (Continuous Integration und Continuous Deployment) und Automatisierung geht, aber die Tatsache, dass eine Organisation CI/CD und Automatisierung verwendet, macht sie nicht automatisch DevOps-zertifiziert.

 

Best Practices für Auslastungstests für DevOps-Umgebungen

Wenn Ihre Teams einen veralteten Auslastungstest- und Überwachungsansatz verfolgen, kann DevOps Sie schnell in eine Performance-Katastrophe stürzen. QS-Teams müssen sich mit häufigen neuen Release-Bereitstellungen auseinandersetzen. DevOps-Teams benötigen eine einfache Möglichkeit, ihre Tests zu verwalten, zusätzlich zu einer flexiblen Überwachung, um angemessene Einblicke zu bieten.

Kontinuierliche Belastungstests.

Es gibt zu viele Änderungen, die sich auf die Benutzeroberfläche auswirken und den Auslastungstest zum Absturz bringen können. Der erste Fokus sollte darauf liegen, vollautomatische API-Tests auszuführen und die tägliche Ausführung zu planen. Sobald wichtige Geschäftsprozesse stabil sind, können Sie Ihrem Testszenario zusätzliche End-to-End-Tests hinzufügen.

Teilen Sie wertvolle Erkenntnisse.

Beziehen Sie Ihr DevOps-Team in die Ergebnisanalyse ein. Üben Sie nicht das Verstecken von Informationen. Teilen Sie alle Auslastungstests (einschließlich Selenium-Auslastungstests) und Überwachungsergebnisse mit Ihren Ingenieuren, um die Ursache aller Probleme zu ermitteln.

Überwachung aller Ebenen.

Shift Links bedeutet auch eine produktionsähnliche Überwachung auf Entwicklungs- und QS-Stufen. Sie haben keine Zeit, Fehler in agilen Entwicklungspipelines kontinuierlich zu reproduzieren. Stellen Sie sicher, dass Sie Front-End-, Back-End- und Infrastrukturnutzungsmetriken rund um die Uhr für Nichtproduktionsphasen erfassen.

Baseline und Benchmark.

Kontinuierliche Belastungstests erzeugen Tonnen von Daten. Legen Sie Basislinien fest und verwenden Sie Benchmarks, um Abweichungen früh im Zyklus zu erkennen. Je früher Sie von Verlangsamungen erfahren, desto mehr Zeit muss Ihr Entwicklungsteam solche Probleme beheben.

 

Integration von Performance Testing in die Shift Left Methodology

Die heutigen Anwendungen nutzen mehrere Technologien und verlassen sich dabei auf riesige Netzwerke von Drittanbietern und CDNs. Ergänzen Sie die Tatsache, dass Benutzer von überall auf der Welt auf Ihre Anwendungen zugreifen können, von einer beliebigen Anzahl von Geräten aus, alle mit unterschiedlichen Verbindungsgeschwindigkeiten. Das ist eine Menge zu berücksichtigen, wenn Sie versuchen, Benutzern eine tolle Erfahrung die ganze Zeit zu geben. Reaktionszeiten, Qualität und Verfügbarkeit sind entscheidende Faktoren, die Aufmerksamkeit erfordern, bevor Anwendungen in die Produktion geschoben werden.

Sobald Ihre Anwendung oder Site in Produktion ist , muss sie Hunderten oder sogar Tausenden von gleichzeitigen Benutzern standhalten. Kleine, inkrementelle Änderungen am Code können die Leistung beeinträchtigen, so dass es einfacher und kostengünstiger ist, diese zu beheben, je früher Sie leistungsbezogene Fehler finden. In den meisten Fällen sollten Teams in der Lage sein, Leistungsprobleme innerhalb von ein oder zwei Tagen zu beheben. Auch hier ist es viel einfacher, diese Verbesserungen durchzuführen, als sie vor der Bereitstellung zu entdecken.

Im Idealfall sollten Teams, sobald der Code die erforderlichen Funktionstests durchlaufen hat, wobei die Funktionen überprüft und genehmigt wurden, nicht-funktionale Tests wie Belastungs- und Auslastungstests durchführen, um zu sehen, wie gut die funktionalen Testartefakte virtuellen Benutzern standhalten. LoadView ist ein integraler Bestandteil des Shift-Left-Testansatzes und ermöglicht es Benutzern, Zeit und Geld zu investieren und optimierten Code und Anwendungen bereitzustellen.

 

Die LoadView-Plattform: Cloud-basierte Auslastungstests in echten Browsern

Die LoadView-Plattform ist eine flexible Auslastungstestplattform, die das Problem ineffektiver Lastmuster beheben kann und alles simuliert, von protokollbasierten Tests bis hin zu echten browserbasierten Tests. Es ist vollständig Cloud-basiert, sodass Sie keine internen Lastinjektoren einrichten und bereitstellen, Cloud-Konten von Drittanbietern verwalten oder sich um Hardware- oder Softwareanforderungen kümmern müssen. Leistungstests erfordern in der Regel zusätzliche Infrastruktur und Ressourcen, die einige Organisationen möglicherweise nicht unterstützen können. LoadView verwaltet dies für Sie über die Plattform.

LoadView Shift Left Infograph

LoadView eignet sich ideal zum frühzeitigen Testen von Code oder Webdiensten , um Leistungsmerkmale zu vergleichen, da es von einem einzigen Lastinjektor aus problemlos hochgefahren und eine hohe Auslastung des Backends simulieren kann, wodurch Sie im Vergleich zu anderen Tools Zeit und Geld sparen. Dies macht es ideal zum Testen von Web-API-Architekturen wie JSON, SOAP und REST. Darüber hinaus erfordern nicht-funktionale Tests in der Regel längere Setup-Zeiten und komplexe Skripte, die von Entwicklern und Ingenieuren Kenntnisse in bestimmten Programmiersprachen erfordern. Dies kann manchmal schwierig zu automatisieren sein, da sie dazu neigen, nur in einem herstellerspezifischen Ökosystem zu arbeiten. Dies ist bei LoadView nicht der Fall.

 

Scripting Easy: Der EveryStep Web Recorder

LoadView verwendet einen benutzerfreundlichen Skriptrekorder, der als EveryStep Web Recorder bezeichnet wird. Benutzer können problemlos erweiterte Skriptaktionen erstellen, die reale Benutzeraktionen mit Ihren APIs, Webanwendungen und Websites simulieren. Um die End-to-End-Antwortzeiten für clientseitige Anwendungen zu überprüfen, können Benutzer einfach durch ihren Testfall navigieren und jede Aktion aufzeichnen. Zu verstehen, wie viel Last eine API oder Web-App in der frühen Entwicklungsphase verarbeiten kann, kann Entwicklern in diesen kritischen Bereichen helfen:

  • Bestimmen von Antwortzeit-Baselines unter bestimmten Benutzerauslastungsnummern
  • Identifizieren von Leistungsengpässen
  • Finden Sie Obergrenzen Ihrer aktuellen Systeme für die Kapazitätsplanung
  • Analysieren der Serverleistung (CPU, Arbeitsspeicher, Bandbreite, Festplatten-E/A) und Reaktionszeiten der Datenbank

Der Recorder unterstützt auch über 40 beliebte Desktop-/Mobile-Browser und -Geräte sowie Web-Technologien und Programmiersprachen wie AJAX, HTML5, JavaScript, Flash, Silverlight und mehr. LoadView verwendet diese Skripts, um On-Demand-Stress- und Auslastungstests von mehr als 13 globalen Standorten (USA, Kanada, Südamerika, Europa und APAC) durchzuführen und Testingenieuren reale Leistungsdaten aus tatsächlichen Browsern zu geben. Denken Sie daran, dass die Ausführung eines internen Tests Ihnen sagen kann, wie gut Ihre Anwendung oder Website eine Zunahme des Datenverkehrs aus Ihrem eigenen Netzwerk verarbeitet, aber sie wird nie reale Bedingungen widerspiegeln. Anwendungen und Websites, die nicht ordnungsgemäß getestet und optimiert sind, können sich negativ auf Conversions und letztlich auf den Umsatz auswirken.

 

LoadView: Flexibilität zum Testen von Real-World-Szenarien

LoadView bietet Benutzern die Möglichkeit, die Benutzerlast basierend auf dem Prozentsatz des Datenverkehrs auf Ihrer Website auf geografische Standorte zu verteilen. Wenn Sie beispielsweise wissen, dass ein bestimmter Prozentsatz Ihrer Kunden und Benutzer von einem bestimmten geografischen Standort stammt, können Sie die spezifischen Zutestbereiche auswählen. Die Plattform verwendet Amazon Web Services (AWS) und Azure Cloud Services, um virtuelle Benutzer zu generieren. Darüber hinaus können Benutzer ihre Auslastungstests einen Schritt weiter gehen, indem sie die Art der Lastkurve anpassen. Dies bietet Testingenieuren je nach ihrem einzigartigen Szenario noch mehr Flexibilität. LoadView-Benutzer können aus drei verschiedenen Lastkurven wählen:

Load Step Curve

    • Beginnt mit einer vordefinierten Anzahl gleichzeitiger Benutzer und erhöht schrittweise die Auslastung, um zu sehen, wie Ihre Website einen Anstieg des Datenverkehrs bewältigen und mit dem erwarteten Datenverkehr vergleichen kann.

Zielbasierte Kurve

    • Diese Art von Lastkurve ist nützlich, wenn Sie ihr Durchsatzziel oder die Anzahl der Besucher Ihrer Website bereits während eines festen Zeitintervalls festgelegt haben. Ideal für die Validierung von SLA- oder nicht-funktionalen Anforderungen.

Dynamische einstellbare Kurve

    • Dieser Test ermöglicht es Benutzern, die Last anzupassen, während der Test ausgeführt wird, um die Leistungsgrenzen von Websites oder Serverkapazität aufzudecken.

Nach Abschluss der Tests generiert LoadView automatisch Berichte, die Teams dabei unterstützen, den Erfolg ihrer KPIs (Key Performance Indicators) zu messen, z. B. Anzahl gleichzeitiger Benutzer, Fehler, durchschnittliche Antwortzeiten, CPU-Auslastung, Durchsatz, Latenz und mehr. Diese Metriken sind für Entwickler, DevOps und QS-Teams von entscheidender Bedeutung, da sie dabei helfen, Engpässe in der Praxis aufzudecken, die sich potenziell auf die Leistung der Endbenutzer auswirken könnten.

 

Nach dem Linksruck, Vergessen Sie nicht, nach rechts zu verschieben

Bei all dem Fokus auf Shift-Links-Tests ist es schwer, sich daran zu erinnern, dass es einen weiteren extrem wichtigen Schritt in dem Prozess gibt, der weniger Aufmerksamkeit erhält. Nachdem Ihre Anwendung in Produktion gegangen ist, müssen Sie sicherstellen, dass für die Benutzer weiterhin alles reibungslos läuft. Dotcom-Monitor bietet mehrere Überwachungslösungen, um sicherzustellen, dass Ihre Seiten und Anwendungen weiterhin ordnungsgemäß funktionieren und funktionieren.

Überwachung von Webdiensten

    • Betriebszeit und Leistung von Webdiensten wie HTTP/S, SOAP/REST und mehr

Webseitenüberwachung Monitoring

    • Webseitenleistung in echten Browsern, Identifizieren der langsamsten und schnellsten Elemente im Laufe der Zeit

Webanwendungsüberwachung Monitoring

    • Überwachen Sie komplexe Webanwendungen wie AJAX, PHP, Ruby, Flash und mehr

Infrastrukturüberwachung

    • Funktionalität und Leistung von Internetservern und -protokollen wie HTTP/S, E-Mail, Streaming-Medien, VoIP und mehr

Diese Plattformen ermöglichen es Benutzern, eine fortlaufende Überwachung basierend auf benutzerdefinierten Schwellenwerten einzurichten, und können bestimmte Personen oder Teams warnen, wenn Fehler auftreten, damit sie an der Behebung von Problemen arbeiten können, bevor sie möglicherweise viele weitere Benutzer betreffen.

 

Shift Left Testing: Gut für Unternehmen und Seelenfrieden

Zusammenfassend lässt sich sagen, dass sowohl die Links- als auch die Verschiebungs-Rechts-Konzepte äußerst wertvoll sein können, nicht nur innerhalb des Softwareentwicklungszyklus, sondern auch in anderen Abteilungen und Branchen. So wechseln beispielsweise Produktmanager oder Customer Experience Manager nach links und werden immer häufiger mit tatsächlichen Kunden zusammengemiteinanderumnet, um kontinuierliches Feedback zu erhalten. Auf diese Weise können Unternehmen agiler werden und näher an die Informations- und Feedbackquelle heranrücken, um ihre Kunden besser zu verstehen. Denken Sie nur darüber nach. Würden Sie nicht eher mit jemandem zusammenarbeiten oder weiterhin Geschäfte mit einem Unternehmen tätigen, das Ihre Eingaben schätzt? Wenn Sie also jemanden sagen hören: “Links verschieben” oder “früh und oft testen”, ist es nicht nur ein ausgefallenes Schlagwort, das sie herumwerfen. Es ist ein kritisches Teil des Kundenerlebnis-Puzzles und eines, das Sie immer im Hinterkopf behalten sollten. Nicht nur, dass Ihre Benutzer und Kunden zufrieden sind, Sie werden Effizienz gewinnen, bessere Ergebnisse erzielen und Ihnen und Ihrem Unternehmen Sicherheit geben.