OPS05-BP02 Tester et valider les modifications
Chaque changement déployé doit être testé pour éviter des erreurs de production. Cette bonne pratique est axée sur les tests des changements du contrôle des versions à la création d'artefacts. En plus des changements du code de l'application, les tests doivent inclure l'infrastructure, la configuration, les contrôles de sécurité et les procédures opérationnelles. Les tests peuvent prendre de nombreuses formes, des tests d'unités à l'analyse des composants d'un logiciel (SCA). Pousser les tests encore plus loin dans le processus d'intégration et de livraison de logiciels entraîne une plus grande certitude de la qualité des artefacts.
Votre organisation doit développer des normes de test pour tous les artefacts logiciels. Les tests automatisés réduisent la quantité de travail et évitent les erreurs de test manuels. Des tests manuels peuvent être nécessaires dans certains cas. Les développeurs doivent avoir accès aux résultats des tests automatisés pour créer des boucles de rétroaction qui améliorent la qualité du logiciel.
Résultat souhaité :
-
Tous les changements apportés au logiciel sont testés avant d'être livrés.
-
Les développeurs ont accès aux résultats des tests.
-
Votre organisation a une norme de test qui s'applique à tous les changements apportés au logiciel.
Anti-modèles courants :
-
Vous déployez un nouveau changement apporté au logiciel sans aucun test. Il ne s'exécute pas en production, ce qui entraîne une panne.
-
De nouveaux groupes de sécurité sont déployés avec AWS CloudFormation sans être testés dans un environnement de préproduction. Les groupes de sécurité empêchent les clients d'atteindre votre application.
-
Une méthode est modifiée mais il n'existe aucun test d'unité. Le logiciel échoue quand il est déployé en production.
Avantages liés au respect de cette bonne pratique :
-
Le taux d'échec des changement lors des déploiements de logiciel diminue.
-
La qualité du logiciel s'améliore.
-
Les développeurs ont une meilleure connaissance de la viabilité de leur code.
-
Des politiques de sécurité peuvent être déployées en toute confiance pour soutenir la conformité de l'organisation.
-
Les changements apportés à l'infrastructure, tels que les mises à jour de la politique de mise à l'échelle automatique, sont testés avant de répondre aux besoins du trafic.
Niveau de risque exposé si cette bonne pratique n'est pas respectée : élevé
Directives d'implémentation
Des tests sont réalisés sur tous les changements, du code de l'application à l'infrastructure, dans le cadre de votre pratique d'intégration continue. Les résultats des tests sont publiés afin que les développeurs disposent d'une rétroaction rapide. Votre organisation a une norme de test que tous les changements doivent respecter.
Exemple de client
Dans le cadre de leur pipeline d'intégration continue, AnyCompany Retail réalise plusieurs types de test sur tous les artefacts logiciels. L'entreprise pratique le développement axé sur les tests afin que tous les logiciels bénéficient de tests d'unités. Une fois l'artefact créé, elle exécute des tests de bout en bout. Une fois cette première série de tests terminée, elle exécute une analyse de la sécurité des applications statiques qui cherchent des vulnérabilités connues. Les développeurs reçoivent des messages indiquant que chaque pallier de test est validé. Une fois tous les tests terminés, l'artefact logiciel est stocké dans un référentiel d'artefacts.
Étapes d'implémentation
-
Collaborez avec les parties prenantes dans votre organisation pour développer une norme de test pour les artefacts logiciels. Quels tests standards tous les artefacts doivent-ils valider ? Des exigences en termes de conformité ou de réglementation doivent-elles être incluses dans la couverture des tests ? Faut-il réaliser des tests de qualité du code ? Qui doit être informé de la fin des tests ?
-
L'AWS Deployment Pipeline Reference Architecture
(Architecture de référence des pipelines de déploiement d'AWS) contient une liste fiable des types de tests qui peuvent être réalisés sur des artefacts logiciels dans le cadre d'un pipeline d'intégration.
-
-
Instrumentalisez votre application avec les tests nécessaires en fonction de la norme de test de votre logiciel. Chaque ensemble de tests doit être réalisé en moins de dix minutes. Les tests doivent être exécutés dans le cadre d'un pipeline d'intégration.
-
Amazon CodeGuru Reviewer peut tester le code de votre application à la recherche de défauts.
-
Vous pouvez utiliser AWS CodeBuild pour réaliser des tests sur les artefacts logiciels.
-
AWS CodePipeline peut orchestrer vos tests logiciels dans un pipeline.
-
Ressources
Bonnes pratiques associées :
-
OPS05-BP01 Utiliser le contrôle de version : tous les artefacts logiciels doivent être étayés par un référentiel avec contrôle de version.
-
OPS05-BP06 Partager les normes de conception : les normes de tests logiciels de votre vos organisation informent vos normes de conception.
-
OPS05-BP10 Automatiser complètement l'intégration et le déploiement : des tests logiciels doivent être automatiquement exécutés dans le cadre plus large de votre pipeline d'intégration et de déploiement.
Documents connexes :
-
Adopt a test-driven development approach (Adopter une approche de développement axé sur les tests)
-
Automated AWS CloudFormation Testing Pipeline with TaskCat and CodePipeline
(Pipeline de test AWS CloudFormation automatisé avec TaskCat et CodePipeline) -
Building end-to-end AWS DevSecOps CI/CD pipeline with open source SCA, SAST, and DAST tools
(Création d'un pipeline DevSecOps CI/CD AWS de bout en bout avec des outils SCA, SAST et DAST open source) -
Getting started with testing serverless applications
(Démarrer avec les applications de test sans serveur) -
My CI/CD pipeline is my release captain
(Mon pipeline d'intégration/livraison continues est mon « release captain », responsable de la cohérence du code) -
Practicing Continuous Integration and Continuous Delivery on AWS Whitepaper (Livre blanc Pratique d'intégration et de diffusion continue sur AWS)
Vidéos connexes :
-
AWS re:Invent 2020: Testable infrastructure: Integration testing on AWS
(AWS re:Invent 2020 : infrastructure testable : tests d'intégration sur AWS) -
AWS Summit ANZ 2021 - Driving a test-first strategy with CDK and test driven development
(AWS Summit ANZ 2021 : mener une stratégie donnant la priorité aux tests avec CDK et le développement axé sur les tests) -
Testing Your Infrastructure as Code with AWS CDK
(Tester votre infrastructure en tant que code avec AWS CDK)
Ressources connexes :
-
AWS Deployment Pipeline Reference Architecture - Application
(Architecture de référence des pipelines de déploiement d'AWS : application) -
AWS Kubernetes DevSecOps Pipeline
(Pipeline AWS Kubernetes DevSecOps) -
Policy as Code Workshop – Test Driven Development
(Atelier Politique en tant que code : développement axé sur les tests) -
Run unit tests for a Node.js application from GitHub by using AWS CodeBuild (Exécution de tests d'unités pour une application Node.js de GitHub l'aide d'AWS CodeBuild)
-
Use Serverspec for test-driven development of infrastructure code (Utilisation de Serverspec pour le développement axé sur les tests du code d'infrastructure)
Services associés :