Seien Sie am 30. April dabei: Vorstellung von Parasoft C/C++test CT für kontinuierliche Tests und Compliance-Exzellenz | Registrierung

Ein Mikro-Manifest zum kontinuierlichen Testen von DevOps

Parasoft-Würfel-Logo 300x300
11. März 2021
6 min lesen

Bei DevOps geht es darum, eine Synergie zwischen Entwicklern und dem Betriebsteam für eine bessere Softwarebereitstellung zu schaffen. Damit DevOps jedoch funktioniert, sollten unter anderem kontinuierliche Tests durchgeführt werden. Wie erreichen Sie kontinuierliches Testen in DevOps? Hier ist die Aufschlüsselung.

Alle reden heutzutage über DevOps, und ich denke, die Prinzipien dahinter sind ziemlich gut verstanden.

Was bedeutet kontinuierliches Testen für DevOps?

Der allgemeine Konsens ist, dass DevOps „Infrastruktur als Code“ ist - die Vereinheitlichung der Entwicklungs- und Betriebsteams durch Automatisierung.

Eine andere Möglichkeit, dies zu sagen, besteht darin, dass eine Anwendung von Codezeilen, die von Entwicklern geschrieben werden, bis zu einer vollständig bereitgestellten Anwendung reichen kann. Der beste Weg, dies zu tun, ist die Automatisierung.

Agil in DevOps

Eine Sache, die wir ziemlich oft hören, wenn wir über DevOps sprechen, ist das Konzept von Agile. Agile ist eine Entwicklungsmethode, bei der Sie Zyklen innerhalb der Entwicklung einer Anwendung in kleinere Teile komprimieren, damit Sie sich leichter darauf konzentrieren können, einen inkrementellen Wert für eine Anwendung bereitzustellen.

In Agile wird ein Projekt, dessen Abschluss traditionell 12 Monate in Anspruch nimmt, in eine Reihe von Sprints unterteilt, die normalerweise ein bis zwei Wochen dauern.

In den Sprints durchläuft die Entwicklung den gesamten Prozess der Entscheidung über eine Reihe von User Stories, der Entwicklung dieser User Storys und der Bereitstellung dieser User Stories. Im Laufe der Zeit liefern Sie letztendlich die vollständige Anwendung. Aber weil Sie es in kleinere Teile zerlegen, können Sie bei jedem Sprint einchecken, um sicherzustellen, dass Sie das Richtige bauen. Dies ist ein entscheidender Faktor für DevOps, da wir damit Checkpoints für die Automatisierung der Bereitstellung dieser kleineren Blöcke erhalten.

Was ist kontinuierliches Testen?

Kontinuierliche Prüfung ist der Prozess des kontinuierlichen Testens der Anwendung. Klingt wie ein Kinderspiel, aber es gibt zwei Formen.

Der erste Pfad führt kontinuierlich Tests für die Anwendung aus. Sobald neue Builds verfügbar werden, überprüfen diese Tests, ob die Anwendung die erwartete Leistung erbringt. Die Kontinuität dieses Testansatzes ermöglicht es Ihnen, bei jeder Codeänderung sofortiges Feedback zu erhalten und sicherzustellen, dass sich etwas, das in einem früheren Build ausgeführt wurde, nicht auf die gesamte Anwendung auswirkt.

Die andere Möglichkeit, über kontinuierliche Tests nachzudenken, besteht darin, dass der Testprozess selbst kontinuierlich ist. Dies bedeutet, dass im Rahmen der kontinuierlichen Integration und der kontinuierlichen Lieferung von Pipelines auch eine kontinuierliche Teststrecke vorhanden ist. Dies bedeutet, dass die Testautomatisierung in die eigentliche Build- und Release-Pipeline integriert ist und als Qualitätsgatter dienen kann, um sicherzustellen, dass Anwendungen bestimmte Spezifikationen erfüllen, bevor sie automatisch über DevOps bereitgestellt werden.

Wenn Sie darüber nachdenken, ist kontinuierliches Testen für DevOps unerlässlich, da es als Mechanismus dient, um das Förderband anzuhalten, wenn etwas mit der Anwendung nicht stimmt. Wenn Sie Ihre Builds nehmen und sie sofort durch die Automatisierung in den Bereitstellungsprozess schieben, könnten Sie Fehler in der Produktion bereitstellen. Deshalb denke ich, dass das vollständige Bild ist DevOps und kontinuierliches Testen.

Was benötigen Sie, um kontinuierliche Tests für DevOps zu aktivieren?

Es gibt viele Technologien, die Teams während der automatisierten Testphase des nutzen können DevOps-Pipeline. Für sich genommen ist jede dieser Testtechniken und -prozesse sehr wertvoll. Der wahre Vorteil für Ihr Geld liegt in der durchgängigen Integration aller Technologien und Prozesse.

Automatisierte Code-Scans

Bei automatisierten Code-Scans führen Sie im Wesentlichen eine Rechtschreibprüfung für Ihren Code durch. Dies wird oft als statische Code-Analyse bezeichnet und geschieht, sobald die Codezeilen geschrieben sind.

Die Idee ist, dass das Werkzeug nach Mustern im Code sucht, von denen bekannt ist, dass sie zu schlechten Praktiken oder Fehlern auf der ganzen Linie führen. Mit diesem Ansatz verhindern Sie Fehler, anstatt sie zu erkennen, bevor sie in Ihre Anwendungen aufgenommen werden.

Automatisierte Testausführung

Sobald eine Anwendung erstellt wurde, wird der Code ausgeblendet. Der beste Weg, um Ihre Anwendung zu testen, besteht darin, Benutzereingaben und Schnittstellen zu validieren. Ihre Ziele hier sind UI-Tests, API-Tests, Datenbanktests, Leistungstests und Sicherheitstests. Sie möchten in der Lage sein, vollständige Regressionstests über die Benutzeroberflächen hinweg auszuführen und jede der exponierten APIs zu berühren.

Diese Tests werden als Funktionstests bezeichnet und ermöglichen es Ihnen, zu überprüfen, ob die Anwendungen wie erwartet funktionieren. Hier gibt es eine ganze Welt von Fähigkeiten, und ich persönlich denke, dass dies ein entscheidender Faktor für den DevOps-Prozess ist, da die Dinge seltsam werden, wenn sie miteinander integriert werden. Ein Ort, an dem Sie hier wirklich nachsehen können, sind API-Tests.

Anforderungsmanagement

Wenn wir eine Anwendung erstellen, erstellen wir eine Zuordnung zu den Anforderungen. Auf diese Weise haben wir einen Rahmen für die Erstellung der Anwendung, kennen aber auch die Geschäftserwartungen. Das Testen sollte dem gleichen Paradigma folgen. Sie erstellen Tests, die den Anforderungen zugeordnet sind. Dies hilft Ihnen nicht nur zu verstehen, ob Sie genug von der Anwendung abgedeckt haben, um den Stakeholdern zu versichern, dass die Anwendung ein ausreichendes Risiko für die Freigabe aufweist, sondern auch zu verstehen, auf welche Tests Sie sich konzentrieren müssen, wenn sich bestimmte Teile der Anwendung schlecht verhalten. Das Zuordnen von Testfällen zu Anforderungen wird zu einer kritischen Komponente der Priorisierung und zur Korrektur in der Testautomatisierung.

Änderungsmanagement

"Kontinuierlich" ist ein Versuch, eine höhere Geschwindigkeit zu erreichen. Wenn wir uns so schnell bewegen, wenn sich etwas ändert und wir es nicht erwartet haben, könnte unsere Pipeline brechen.

Die Testautomatisierung ist eine Alarmglocke, mit der wir sicherstellen können, dass wir wertvolle Software liefern, die in der Lieferpipeline fehlerfrei ist. Wenn sich die Anwendung ändert, muss die automatisierte Software dies wissen und sich an diese Änderungen anpassen, damit Sie keine falsch positiven oder, schlimmer noch, falsch negativen Ergebnisse erhalten. Durch das Einfügen eines Änderungsmanagementprozesses in die DevOps-Pipeline können Sie sicherstellen, dass die Ergebnisse Ihrer automatisierten Tests gültig sind.

Testdaten

Der Zugriff auf verwendbare und sichere Testdaten ist eine wichtige Voraussetzung für kontinuierliche Tests für DevOps. Um eine skalierbare DevOps-Pipeline zu erstellen, müssen Sie in der Lage sein, eine Kombination aus realistischen und / oder synthetisch generierten Testdaten zu haben, die in Ihre Testautomatisierung eingefügt werden können, damit Sie über genügend Daten verfügen, um die gewünschten Tests durchzuführen.

Zugriff und Simulation auf die Testumgebung

Ich habe bereits erwähnt, dass Funktionstests beim Erstellen der Anwendung eingesetzt werden. Ein wesentlicher Bestandteil davon ist die Tatsache, dass diese Anwendung in einer Art Umgebung erstellt und bereitgestellt wird.

Mit dem Aufkommen serviceorientierter Architekturen und Microservices sind verteilte Systeme eine Sammlung kleiner Anwendungen und Endpunkte, die miteinander arbeiten müssen. Um diese Testautomatisierung ausführen zu können, benötigen Sie eine stabile Testumgebung mit allen erforderlichen Abhängigkeiten. Hier kann die Simulation zu einem entscheidenden Faktor für die DevOps-Pipeline werden. Durch Simulation können Sie digitale Zwillinge von Endpunkten erstellen, die zum Zeitpunkt der Ausführung der Testautomatisierung nicht verfügbar sind oder nicht über die richtigen Testdaten verfügen.

Durch die Kombination von Service-Virtualisierung mit DevOps können Sie Umgebungsbedingungen beseitigen. Auf diese Weise kann das Unternehmen uneingeschränkten Zugriff und Kontrolle über die Testumgebung erhalten und sogar dynamische Testumgebungen bereitstellen.

In einer dynamischen Testumgebung stellen Sie eine containerisierte Umgebung bereit, die hauptsächlich simulierte Komponenten enthält. Durch diese Konfiguration können Sie sich auf die Anwendungen konzentrieren, die Sie validieren und den Rest entfernen möchten.

Beschleunigung von DevSecOps mit Containern und kontinuierlichen Tests

Sie können mehrere Kopien dieser dynamischen Testumgebungen ausgliedern. Wenn Sie sich überlegen, wie die eigentliche DevOps-Pipeline ablaufen soll, werden Testläufe in Abhängigkeit von Code-Check-Ins ausgeführt. Es kann zu jedem Zeitpunkt mehrere Code-Check-Ins geben, und Sie möchten nicht, dass sich Personen anstellen, die darauf warten, dass eine echte Testumgebung verfügbar ist. Dynamische Testumgebungen können einer der wichtigsten Faktoren sein, die für kontinuierliche Tests und DevOps erforderlich sind.

Kontinuierliches Feedback

Bei allem, was wir in kontinuierlichen Tests für DevOps tun, geht es darum, aussagekräftige Ergebnisse zu erzielen, auf die wir reagieren können. Das letzte Puzzleteil ist die kontinuierliche Rückmeldung.

In kontinuierlichem Feedback nehmen Sie die Ergebnisse Ihrer automatisierten Tests und kombinieren sie mit anderen qualitätsbezogenen Metriken wie Anforderungsabdeckung, API-Abdeckung und Codeabdeckung. Sie können diese dann automatisiert auswerten, um sicherzustellen, dass sie innerhalb definierter Schwellenwerte für die Qualitätsakzeptanz liegen.

Wenn die Anwendung in Ordnung ist, wird sie automatisch für die nächste Stufe bereitgestellt. Ist dies nicht der Fall, können Sie den Bereitstellungsprozess stoppen und ihn auf die Entwicklung zurückführen, die mit dem ursprünglichen Check-in verbunden ist. Dieser schnelle und iterative Feedback-Mechanismus ermöglicht es Ihnen, wirklich Vertrauen in Ihre kontinuierlichen Tests für DevOps zu haben.

Zusammenfassung

Dies ist nur eine allgemeine Ansicht dessen, was erforderlich ist, um eine skalierbare und zuverlässige Testautomatisierungsstrategie für Ihre DevOps-Pipeline zu ermöglichen. Es sind viel mehr Informationen erforderlich, wenn Sie sich eingehender mit jedem dieser einzelnen Themen befassen. Die Absicht dieses Blogs ist es, eine komprimierte, leicht konsumierbare Zusammenfassung bereitzustellen.

Ich empfehle Ihnen, unser Whitepaper zu kontinuierlichen Tests für DevOps zu lesen. Wir untersuchen Details zu ROI, Bereitstellungen und Leistungsindikatoren, um zu verstehen, ob Sie die richtige Technologie zur richtigen Zeit für Ihre DevOps-Pipeline einsetzen.

Kontinuierliches Testen für DevOps