Unter kontinuierliche Tests versteht man einen Prozess, bei dem automatisiertes Feedback in verschiedenen Phasen des Softwareentwicklungslebenszyklus (Software Development Life Cycle, SDLC) integriert wird, um die Geschwindigkeit und Effizienz bei der Verwaltung von Bereitstellungen zu verbessern.
Kontinuierliche Tests sind ein entscheidender Treiber für die Effektivität von CI/CD (Continuous Integration/Continuous Delivery)-Prozessen und spielt eine wichtige Rolle bei der Beschleunigung von SDLC-Zeitplänen durch Verbesserung der Codequalität, Vermeidung kostenintensiver Engpässe und Beschleunigung von DevOps-Prozessen.
Eines der grundlegenden Prinzipien bei der Entwicklung eines praktischen DevOps-Ansatzes besteht darin, die Lücke zwischen schneller Softwarebereitstellung und zuverlässigen Benutzererfahrungen zu schließen. Die herkömmliche Methode, in jeder Phase der Softwareentwicklung (d. h. Projektentwurf, Codierung, Testen, Bereitstellung und Wartung) manuelles Feedback einzuholen, hat jedoch zu einem unzureichenden und ineffektiven Einsatz von Unternehmensressourcen und letztlich zu längeren Integrationszyklen und verzögerten Produktaktualisierungen geführt.
Kontinuierliche Tests beheben diese Ineffizienzen, indem sie den Shift-Left-Ansatz der DevOps-Teams unterstützen und ihnen frühzeitig im SDLC wertvolles Feedback geben, während manuelle Testprozesse automatisiert und Bedienungsfehler minimiert werden.
Kontinuierliche Tests nutzen automatisierte Tools, um vordefinierte QA-Scripts in allen Phasen der Produktion zu laden. Diese automatisierten Scripts machen regelmäßige manuelle Eingriffe bei der Durchführung von QA-Tests überflüssig und validieren nacheinander die Effizienz des Quellcodes. Gleichzeitig stellen sie sicher, dass relevantes Feedback sofort an die entsprechenden Teams weitergeleitet wird.
Wenn automatisierte Tests fehlschlagen, werden die Entwicklerteams in der jeweiligen Entwicklungsphase benachrichtigt, damit sie die erforderlichen Anpassungen an ihrem Quellcode vornehmen können, „bevor“ sich dies auf andere Teams in anderen Phasen des SDLC auswirkt. Wenn automatisierte Tests die Prüfung bestehen, werden Projekte automatisch an die nächste Phase des SDLC weitergeleitet, sodass Unternehmen ein nachhaltiges Übermittlungsmodell entwickeln können, das die Produktivität maximiert und die abteilungsübergreifende Koordination verbessert.
Im folgenden Video geht Eric Minick weiter auf das Thema ein:
Die Einbindung kontinuierlicher Tests in DevOps-Prozesse bietet wachsenden Unternehmen mehrere Vorteile.
Höhere Effizienz und qualitativ hochwertigere Bereitstellungen. Kontinuierliche Tests bieten eine automatisierte Methode zur Qualitätssicherung und zum Zusammenspiel von Arbeitsabläufen in jeder Phase des Softwareentwicklungslebenszyklus (SDLC). Durch die Integration von kontinuierlichen Rückkopplungsschleifen in Benutzer- und Komponententestmodule erhalten Entwickler die nötigen Informationen, um die Kompatibilität und Leistung ihres Codes vor der Bereitstellung zu verbessern. Durch diese Effizienz werden Verbindungsunterbrechungen zwischen mehreren DevOps-Teammitgliedern beseitigt und die Zeitpläne für die Softwarebereitstellung beschleunigt.
Schnelle Fehlererkennung und -korrektur für dezentrale Projekte. Moderne Entwicklungsarchitekturen von heute sind vielseitig und mehrschichtig. Kontinuierliche Tests helfen den Entwicklerteams, diese Komplexität zu überwinden, indem sie eine skalierbare, automatisierte Testlösung einführen, die die Zeitspanne für die Fehlererkennung und -korrektur erheblich verkürzt.
Verbessertes Benutzererlebnis. Erweiterte Methoden für kontinuierliche Tests können eine Vielzahl einzigartiger Anwendungsfall- und Fehlerbehebungsszenarien simulieren und beobachten, wie Benutzer darauf reagieren. Mit den aus diesen Simulationen gewonnenen Erkenntnisse können Entwickler Ineffizienzen in der Benutzeroberfläche früher beseitigen und unerwünschte Überraschungen vermeiden, wenn das physische Produkt bereits bereitgestellt wurde.
Reduzierte Kosten aufgrund entwicklungsbedingter Betriebsunterbrechungen. Insbesondere in großen, miteinander verbundenen Systemen kann ein Fehler in nur einem Modul einer Anwendung Dominoeffekte haben, die zu unerwünschten Ausfallzeiten führen und sich negativ auf die Produktivität und das Geschäftsergebnis auswirken können.
Beispielsweise melden Cloud-Provider immer wieder Ausfälle an einem Ende, die eine ganze Region lahmlegen und zu mehrstündigen Betriebsunterbrechung führen. Dies kann besonders verheerend für Unternehmen sein, die auf eine hohe Serviceverfügbarkeit angewiesen sind. Kontinuierliche Tests auf differenzierter Ebene identifiziert Fehler, die sonst in großen Softwaresystemen unsichtbar bleiben würden, und hilft, die Kosten von Betriebsunterbrechungen zu vermeiden.
Kontinuierliche Tests umfassen ein Spektrum von Tests, die die Zuverlässigkeit, Sicherheit, Betriebsleistung und Benutzerfreundlichkeit des Systems sicherstellen. Zu den Tests auf dem Spektrum gehören die folgenden:
Aufgrund folgender Merkmale sind IT-Systeme und Anwendungen einem erhöhten Fehlerrisiko ausgesetzt:
In diesen Fällen sind kontinuierliche Tests anspruchsvoller, weil die Entwicklung nicht an einem einzelnen Standort oder in einem Unternehmen stattfindet. Anderer Anbieter, einschließlich Remote-Teams, können einige Elemente des Systems liefern. Das System kann in Anwendungsprogrammierschnittstellen (APIs) integriert werden. Jedes Entwicklerteam arbeitet in unterschiedlichen IT-Umgebungen, einschließlich älterer Software. Die physische Umgebung jedes einzelnen Teams lässt sich für kontinuierliche Tests nicht reproduzieren.
Glücklicherweise können kontinuierliche Tests virtualisiert werden, um eine Testumgebung zu schaffen, in der das gesamte System virtuell in einer einzigen Schnittstelle reproduziert werden kann. Eine virtualisierte Umgebung kann problemlos neu konfiguriert werden, um ein anderes IT-System zu testen oder ein System, das zur Korrektur von Fehlern geändert wurde.
In einer DevOps-Umgebung werden kontinuierliche Tests während des gesamten Softwareentwicklungslebenszyklus (SDLC) automatisch durchgeführt und arbeiten Hand in Hand mit kontinuierlicher Integration, um jeden neuen Code, der in die Anwendung integriert ist, automatisch zu validieren.
Testtools sind mit Testscripts vorinstalliert, die automatisch ausgeführt werden, wenn neuer Code in die Anwendung integriert wird. Normalerweise beginnen die Tests mit Integrationstests und wechseln automatisch zu Systemtests, Regressionstests und Benutzerabnahmetests.
Die Tests generieren Datenfeeds aus jedem Anwendungsmodul und die Feeds werden analysiert, damit sicher alle von dem neuen Code betroffenen Module wie erwartet funktionieren. Wenn ein Test fehlschlägt, geht der Code zur Korrektur an das Entwicklerteam zurück. Dann wird er wieder integriert und der Testzyklus beginnt von neuem.
Weitere Hintergrundinformationen zu diesem Thema finden Sie in Andrea Crawfords Erklärung zu DevOps:
Für Testsätze ist ein kontinuierliche Tests-Framework erforderlich, das die Konsistenz zwischen Modulen in einer Anwendung, ihren Konnektoren (oder APIs und Containern), den Plattformen, ihrer Infrastruktur und den Szenarien, die ihre Anforderungen definieren, sicherstellt.
Die Testsätze können sequenziell (z. B. Regressionstests folgen Komponententests) oder gleichzeitig sein (z. B. wird eine neue Iteration eines Moduls von einem Test mit entsprechenden Tests für seine Abhängigkeiten begleitet).
Ein Framework für kontinuierliche Tests bietet einen Wrapper für alle Tests, sodass sie konsistent angewendet werden und den Weg für die Automatisierung ebnen. Entwickler wollen sicher sein, dass der Ansatz, den sie für ein Modul verfolgen, sich nicht von dem Ansatz unterscheidet, der für verwandte Module angewendet wird. Wenn sich die Module weiterentwickeln, entwickeln sich auch eine Reihe von Tests für miteinander verknüpfte Software.
Frameworks bieten eine Standardmethode zum bequemen Ändern der Scripts und Funktionen zum Testen. Die Automatisierung wird nur dann Vorteile erzielen, wenn die Inkonsistenzen beim Testen beseitigt werden. Andernfalls wird eine Reihe irreführender Testergebnisse generiert.
Nutzen Sie leistungsstarke DevOps-Software für die Erstellung, Bereitstellung und Verwaltung von sicherheitsrelevanten, cloudnativen Anwendungen auf mehreren Geräten, in verschiedenen Umgebungen und Clouds.
Automatisieren Sie API-Tests, funktionale UI-Tests, Leistungstests und mehr. Identifizieren Sie Fehler dann, wenn sie weniger kostenintensiv zu beheben sind.
Erhöhen Sie die Geschwindigkeit, Qualität und Kontrolle Ihrer Anwendungen mit umfassenden Erkenntnissen aus vielfach eingesetzten Tools für kontinuierliche Integration und kontinuierliche Bereitstellung (Continuous Delivery).
Erfahren Sie, wie IBM Software und Best Practices Softwareentwicklungs-, Test- und Betriebsteams bei der Einführung eines Ansatzes für kontinuierliche Tests unterstützen können.
DevOps beschleunigt die Bereitstellung qualitativ hochwertigerer Software, indem es die Arbeit von Softwareentwicklungs- und IT-Teams kombiniert und automatisiert.
Die kontinuierliche Integration ist ein Prozess, bei dem die Entwickler während des gesamten Entwicklungszyklus häufig neuen Code integrieren und ihn mindestens einmal täglich zur Codebasis hinzufügen.