OPS05-BP02 Testen und Validieren von Änderungen
Jede eingesetzte Änderung muss getestet werden, um Fehler in der Produktion zu vermeiden. Diese bewährte Methode konzentriert sich auf das Testen von Änderungen von der Versionskontrolle bis zur Erstellung von Artefakten. Neben Änderungen am Anwendungscode sollten die Tests auch die Infrastruktur, die Konfiguration, die Sicherheitskontrollen und die Betriebsverfahren umfassen. Es gibt viele Formen des Testens, von Tests der Einheiten bis hin zur Softwarekomponentenanalyse (SCA). Wenn Tests im Softwareintegrations- und -bereitstellungsprozess weiter nach links verschoben werden, führt dies zu einer höheren Gewissheit der Artefaktqualität.
Ihr Unternehmen muss Teststandards für alle Software-Artefakte entwickeln. Automatisierte Tests verringern den Arbeitsaufwand und vermeiden manuelle Testfehler. In einigen Fällen können aber auch manuelle Tests notwendig sein. Entwickler müssen Zugang zu automatisierten Testergebnissen haben, um Feedbackschleifen zur Verbesserung der Softwarequalität zu erzeugen.
Gewünschtes Ergebnis:
-
Alle Softwareänderungen werden vor der Bereitstellung getestet.
-
Die Entwickler haben Zugang zu den Testergebnissen.
-
Ihr Unternehmen hat einen Teststandard, der für alle Softwareänderungen gilt.
Typische Anti-Muster:
-
Sie stellen eine neue Softwareänderung ohne jegliche Tests bereit. Sie wird in der Produktion nicht ausgeführt, was zu einem Ausfall führt.
-
Es werden neue Sicherheitsgruppen mit AWS CloudFormation eingesetzt, ohne in einer Vorproduktionsumgebung getestet zu werden. Durch die Sicherheitsgruppen ist Ihre App für Ihre Kunden unerreichbar.
-
Eine Methode wurde geändert, aber es gibt keine Tests der Einheiten. Die Software läuft nicht, wenn sie in der Produktion eingesetzt wird.
Vorteile der Nutzung dieser bewährten Methode:
-
Die Fehlerquote bei der Implementierung von Software wird reduziert.
-
Die Qualität der Software wird verbessert.
-
Die Entwickler haben ein größeres Bewusstsein für die Lebensfähigkeit ihres Codes.
-
Sicherheitsrichtlinien können zuverlässig eingeführt werden, um die Compliance des Unternehmens zu unterstützen.
-
Infrastrukturänderungen, wie z. B. automatische Aktualisierungen der Skalierungsrichtlinien, werden im Voraus getestet, um den Anforderungen des Datenverkehrs gerecht zu werden.
Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: hoch
Implementierungsleitfaden
Alle Änderungen, vom Anwendungscode bis zur Infrastruktur, werden im Rahmen Ihrer kontinuierlichen Integrationspraxis getestet. Die Testergebnisse werden veröffentlicht, damit die Entwickler schnelles Feedback erhalten. Ihr Unternehmen hat einen Teststandard, den alle Änderungen erfüllen müssen.
Kundenbeispiel
Als Teil der kontinuierlichen Integrationspipeline führt AnyCompany Retail verschiedene Arten von Tests für alle Software-Artefakte durch. Sie praktizieren eine testgesteurte Entwicklung, sodass die gesamte Software über Tests von Einheiten verfügt. Sobald das Artefakt erstellt ist, führen sie End-to-End-Tests durch. Nach Abschluss dieser ersten Testrunde führen sie einen statischen Anwendungssicherheitsscan durch, bei dem nach bekannten Schwachstellen gesucht wird. Die Entwickler erhalten Meldungen, sobald die einzelnen Prüfpunkte durchlaufen wurden. Sobald alle Tests abgeschlossen wurden, wird der Sofware-Artefakt in einem Artefakt-Repository gespeichert.
Implementierungsschritte
-
Arbeiten Sie mit den Beteiligten in Ihrem Unternehmen zusammen, um einen Teststandard für Software-Artefakte zu entwickeln. Welche Standardtests sollten alle Artefakte bestehen? Gibt es Compliance- oder Governance-Anforderungen, die bei der Testabdeckung berücksichtigt werden müssen? Müssen Sie die Qualität des Codes testen? Wer muss informiert werden, sobald die Tests abgeschlossen sind?
-
Die AWS Deployment Pipeline Reference Architecture
enthält eine maßgebliche Liste von Testtypen, die als Teil einer Integrationspipeline an Software-Artefakten durchgeführt werden können.
-
-
Instrumentieren Sie Ihre Anwendung mit den erforderlichen Tests auf der Grundlage Ihres Software-Teststandards. Jeder Testreihe sollte in weniger als zehn Minuten abgeschlossen sein. Tests sollten im Rahmen einer Integrationspipeline durchgeführt werden.
-
Amazon CodeGuru Reviewer kann Ihren Anwendungscode auf Fehler prüfen.
-
Mithilfe von AWS CodeBuild können Sie Tests auf Software-Artefakten durchführen.
-
AWS CodePipeline kann Ihre Softwaretest in eine Pipeline orchestrieren.
-
Ressourcen
Zugehörige bewährte Methoden:
-
OPS05-BP01 Verwendung einer Versionskontrolle – Alle Software-Artefakte müssen durch ein versionskontrolliertes Repository gesichert werden.
-
OPS05-BP06 Gemeinsame Design-Standards – Die Softwareteststandards Ihres Unternehmens bilden die Grundlage für Ihre Designstandards.
-
OPS05-BP10 Vollständige Automatisierung von Integration und Bereitstellung – Softwaretests sollten automatisch als Teil Ihrer größeren Integrations- und Bereitstellungspipeline ausgeführt werden.
Zugehörige Dokumente:
-
Adopt a test-driven development approach (Einführung eines testgesteuerten Entwicklungsansatzes)
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
(Automatisierte CloudFormation-Testpipeline mit TaskCat und CodePipeline) -
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
(Erstellen einer End-to-End-AWS DevSecOps-CI/CD-Pipeline mit Open-Source-SCA-, -SAST- und -DAST-Tools) -
Getting started with testing serverless applications
(Erste Schritte beim Testen von Serverless-Anwendungen) -
My CI/CD pipeline is my release captain
(Meine CI/CD-Pipeline ist mein Release Captain) -
Durchführung von dauerhafter Integration/dauerhafter Bereitstellung auf AWS – Whitepaper
Zugehörige Videos:
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
(AWS re:Invent 2020: Testbare Infrastruktur: Integrationstests auf AWS) -
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
(AWS Summit ANZ 2021 – Vorantreiben einer „Test-First“-Strategie mit CDK und testgesteuerter Entwicklung) -
Testing Your Infrastructure as Code with AWS CDK
(Testen Ihrer Infrastruktur als Code mit AWS CDK)
Zugehörige Ressourcen:
-
Policy as Code Workshop – Test Driven Development
(Richtlinie als Code – Workshop – testgesteuerte Entwicklung) -
Run unit tests for a Node.js application from GitHub by using AWS CodeBuild (Tests von Einheiten für eine Node.js-Anwendung aus GitHub mithilfe von AWS CodeBuild ausführen)
-
Use Serverspec for test-driven development of infrastructure code (Serverspec für die testgesteuerte Entwicklung von Infrastrukturcode verwenden)
Zugehörige Services: