fbpx

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 Leistungsingenieure 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.

Waterfall Model

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 haben die kostspieligen Lehren aus früheren Entwicklungsfehlern dazu beigetragen, die Methode des Linksrucks einzuleiten. 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, die es Teams ermöglichte, Probleme schneller zu identifizieren. 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 sollten, was eine bessere Benutzererfahrung machen würde. 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 steigenden technologischen Fortschritts und der Fokussierung auf die digitale Erfahrung 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 stellen sich 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 „halten die Lichter an“ mit laufender Überwachung, um die Verfügbarkeit zu gewährleisten. 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 über CI/CD (Continuous Integration and Continuous Deployment) und Automatisierung gesprochen wird, 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 Lasttest- und Überwachungsansatz verfolgen, kann DevOps Sie schnell in einen Leistungsdesaster 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 Ergebnisanalyseaktivitäten ein. Üben Sie nicht das Verstecken von Informationen. Teilen Sie alle Auslastungstests und Überwachungsergebnisse mit Ihren Ingenieuren, um die Ursache aller Probleme zu festnageln.

Ü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.

Einmal in der Produktion, Ihre Anwendung oder Website muss bis zu 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 und Features überprüft und deaktiviert wurden, nicht-funktionale Tests wie Belastungs- und Auslastungstests durchführen, um zu sehen, wie gut die Funktionstestartefakte virtuellen Benutzern standhalten. LoadView ist ein integraler Bestandteil des Shift-Links-Testansatzes, der es Benutzern ermöglicht, Zeit, Geld 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 cloudbasiert, so dass es nicht notwendig ist, interne Lastinjektoren einzurichten und bereitzustellen, Cloud-Konten von Drittanbietern zu verwalten oder sich Umsorgen über Hardware- oder Softwareanforderungen zu machen. Leistungstests erfordern in der Regel zusätzliche Infrastruktur und Ressourcen, die von einigen Organisationen möglicherweise nicht unterstützt werden können. LoadView verwaltet dies für Sie über die Plattform.

LoadView Shift Left Infograph

LoadView ist ideal, um Code oder Web-Services frühzeitig zu testen, um Leistungsmerkmale zu vergleichen, da es einfach aufdrehen und eine hohe Last auf dem Backend von einem einzigen Lastinjektor simulieren kann, was Ihnen Zeit und Geld im Vergleich zu anderen Tools spart. 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 Rüstzeiten und komplexe Skripts, die Entwickler und Ingenieure über Kenntnisse bestimmter Programmiersprachen benötigen. 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 Skriptrecorder namens EveryStep Web Recorder. 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 auf geografische Standorte basierend auf dem Prozentsatz des Datenverkehrs zu Ihrer Website 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.