Um die Qualität digitaler Produkte zu gewährleisten und gleichzeitig die Kosten für Fehlerbehebungen zu minimieren, empfiehlt es sich, das Testing bereits frühzeitig in den Software-Entwicklungsprozess zu integrieren.
Wie das genau funktioniert und welche Vorteile sich damit verbinden, erklärt Jan Wolter, General Manager EU bei Applause.
Was ist und wofür braucht man Shift-Left Testing?
“Der frühe Tester findet den Bug” – diese Abwandlung eines altbekannten Sprichworts fasst den Ansatz des Shift-Left Testings kurz und knapp zusammen. Indem ich bereits frühzeitig im Software-Lebenszyklus anfange zu testen, kann ich Probleme gleich im Anfangsstadium erkennen und sie so schneller und effizienter korrigieren. Das hat letztlich einen großen Einfluss auf den späteren Projektverlauf und -erfolg. Denn Fehler, die erst am Ende des Entwicklungsprozesses entdeckt werden, richten einen umso größeren Schaden an, da ihre Behebung erheblich mehr Zeit, Aufwand und Geld kostet.
Automatisierungen vereinfachen die Linksverschiebung
So weit, so verständlich. Aber wie sieht die Umsetzung dieses Testing-Ansatzes genau aus? Für die Linksverschiebung von Tests stehen verschiedene Modelle zur Verfügung. Agile/DevOps ist dabei die nützlichste Methode, denn sie priorisiert die Erstellung und Ausführung von Tests genau in dem Moment, in dem der Code geändert wird. Testautomatisierungen ermöglichen besonders schnelle Tests, die vom QA-Team mehrmals am Tag durchgeführt werden können. Wenn die Automatisierungsskripte Fehler entdecken, werden diese direkt in den Product Development Funnel zurückgeführt – so wird nicht nur die Code-Qualität, sondern ebenso die Code-Abdeckung durch die Entwicklung von Testfällen und Testsuiten kontinuierlich verbessert.
Prozesse und Kultur anpassen
Der Einsatz von Automatisierungen zu einem frühen Zeitpunkt im SDLC kann den gesamten Software-Lieferzyklus beschleunigen. Daneben gibt es jedoch noch weitere wichtige Schritte, um den Shift-Left-Ansatz konsequent und erfolgreich umzusetzen. Als wichtigste Erkenntnis steht dabei am Anfang, dass sowohl die Entwicklungs- als auch die Test- und Produktmanagement-Teams an der Linksverschiebung beteiligt sein müssen. Mit anderen Worten: Das Shift-Left-Testen ist eine Aufgabe und Verantwortung der gesamten Organisation. Alle Teams müssen dabei klar kommunizieren, damit sie die Bedürfnisse des jeweils anderen verstehen und die richtigen Tests in den Build-Zyklus aufnehmen, Fehler effizient beheben und iterativ vorgehen können.
Damit dies gelingt, sollten generell vor allem die Tester mit den Anforderungen, dem Software-Design, der Architektur, der Codierung und der Funktionalität bestens vertraut sein. Nur so sind sie in der Lage, zu jedem Zeitpunkt die richtigen Fragen zu stellen, kompetentes Feedback zu geben und so erfolgreich im ständigen Austausch mit den Entwickler:innen und Produktmanager:innen zusammenzuarbeiten.
Umfangreiche Testsuites sicherstellen
Der Begriff „Shift-Left“ umfasst sämtliche Arten von Tests und beschreibt letztlich das Ziel, diese mithilfe von Testautomatisierungszyklen früher im Build-Zyklus abzuschließen. Hierfür müssen also verschiedene Arten von Tests sowie statische Code-Analysen mit spezifischen Tools durchgeführt werden – und das in großem Umfang und innerhalb einer CI/CD-Pipeline. Hinzu kommt, dass die Plattformabdeckung in einem ebenfalls großen Umfang aufrechterhalten werden muss. Nur so kann sichergestellt werden, dass die zu testenden Plattformen auf dem neuesten Stand sind und sich in einem testbereiten Zustand befinden.
Genauer gesagt, sollte für jeden Software-Build, der getestet wird, der Umfang der Testsuite folgende Punkte umfassen:
- eine Mischung aus wichtigen funktionalen Testszenarien,
- Unit-Tests, die sich auf die geänderten Bereiche zwischen dem vorherigen und dem aktuellen Build beziehen,
- Sicherheits-, Performance- und relevante explorative Tests, die durch die CI-Jobs ausgelöst und parallel auf verschiedenen unterstützten Plattformen ausgeführt werden.
Da Software-Releases dynamisch sind, müssen die Testsuites zwischen den Builds überprüft und gepflegt werden. So lässt sich sicherstellen, dass der Umfang relevant bleibt und mit dem geänderten Code oder den implementierten Story Points Schritt hält. Schließlich müssen auch die für das Testen vorgesehenen Plattformen (mobile Geräte, Webbrowser, Desktops usw.) zwischen und während der Zyklen in einem betriebsbereiten Zustand sein.
Testautomatisierungscode wie Produktionscode behandeln
Damit Testautomatisierung zum Enabler für Shift-Links und agiles Testen werden kann, muss die Testautomatisierung von hohem Wert sein. Um diesen Wert zu erreichen, sollten Entwickler und Testingenieure den Testcode durch Source Control und Code Reviews pflegen. Darüber hinaus sollten sie ihre Tests innerhalb der CI-Pipeline halten und immer grünes Licht für den Code geben – es sei denn, es liegt ein echter Fehler vor.
Bei jeder Testautomatisierung gibt es ein unvermeidliches Maß an Unregelmäßigkeiten. Um dieses auf ein Minimum zu reduzieren, sollten die Codierungsstandards befolgt, Qualitätstransparenz sichergestellt sowie weitere Methoden wie etwa KI-Algorithmen einbezogen werden.
Fazit
Indem IT-Teams all diese Punkte berücksichtigen, können sie letztlich die Kodierung und das Testen zu einer einzigen Aktivität zusammenfassen, in der Folge ihre Effizienz steigern und Code-Instabilitäten drastisch reduzieren. In einem solchen iterativen Entwicklungs- und Testprozess lassen sich Bugs früher identifizieren, die Kosten für Fehlerbehebungen entsprechend reduzieren und Software schneller und häufiger veröffentlichen.