Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
REL08-BP02 Intégrer les tests fonctionnels dans le cadre de votre déploiement
Utilisez des techniques telles que les tests unitaires et les tests d’intégration qui valident les fonctionnalités requises.
Un test unitaire est un processus consistant à tester la plus petite unité fonctionnelle du code afin de valider son comportement. Un test d’intégration vise à valider que chaque fonctionnalité de l’application respecte les exigences du logiciel. Alors que les tests unitaires visent à tester une partie d’une application de manière isolée, les tests d’intégration prennent en compte les effets secondaires (par exemple, l’effet de la modification des données lors d’une opération de mutation). Dans les deux cas, les tests doivent être intégrés dans un pipeline de déploiement et si les critères de réussite ne sont pas respectés, le pipeline est arrêté ou annulé. Ces tests sont exécutés dans un environnement de préproduction, qui est mis en place avant la production dans le pipeline.
Vous obtenez les meilleurs résultats lorsque ces tests sont exécutés automatiquement dans le cadre d’actions de génération et de déploiement. Par exemple, avec AWS CodePipeline, les développeurs valident les modifications apportées à un référentiel source dans lequel CodePipeline détecte automatiquement les modifications. L’application est générée et des tests unitaires sont exécutés. Une fois les tests unitaires réussis, le code ainsi généré est déployé sur les serveurs intermédiaires, à des fins de test. Depuis le serveur intermédiaire, CodePipeline exécute d’autres tests, tels que des tests d’intégration ou de chargement. Une fois ces tests terminés avec succès, CodePipeline déploie le code testé et approuvé sur les instances de production.
Résultat escompté : vous utilisez l’automatisation pour effectuer des tests unitaires et d’intégration afin de valider que votre code se comporte comme prévu. Ces tests sont intégrés au processus de déploiement, et un échec entraîne l’abandon du déploiement.
Anti-modèles courants :
-
Vous ignorez ou contournez les échecs de test et les plans pendant le processus de déploiement afin de raccourcir le délai de déploiement.
-
Vous effectuez manuellement des tests en dehors du pipeline de déploiement.
-
Vous sautez des étapes de test dans l’automatisation par le biais de flux de travail d’urgence manuels.
-
Vous exécutez des tests automatisés dans un environnement qui ne ressemble vraiment pas à l’environnement de production.
-
Vous créez une suite de tests trop peu flexible et difficile à maintenir, à mettre à jour ou à mettre à l’échelle à mesure de l’évolution de l’application.
Avantages liés au respect de cette bonne pratique : les tests automatisés effectués au cours du processus de déploiement détectent les problèmes à un stade précoce, ce qui réduit le risque d’une mise en production avec des bogues ou des comportements inattendus. Les tests unitaires valident le fait que le code se comporte comme souhaité et que les contrats d’API sont respectés. Les tests d’intégration valident le fait que le système fonctionne conformément aux exigences spécifiées. Ces types de tests vérifient l’état de fonctionnement escompté de composants tels que les interfaces utilisateur, les API, les bases de données et le code source.
Niveau d’exposition au risque si cette bonne pratique n’est pas respectée : élevé
Directives d’implémentation
Adoptez une approche de développement piloté par les tests (TDD) pour écrire des logiciels, dans laquelle vous développez des cas de test pour spécifier et valider votre code. Pour commencer, créez des cas de test pour chaque fonction. Si le test échoue, vous devez écrire un nouveau code pour réussir le test. Cette approche vous permet de valider le résultat escompté de chaque fonction. Exécutez des tests unitaires et validez leur réussite avant de valider le code dans un référentiel de code source.
Mettez en œuvre des tests unitaires et d’intégration dans le cadre des étapes de création, de test et de déploiement du pipeline CI/CD. Automatisez les tests et lancez automatiquement les tests chaque fois qu’une nouvelle version de l’application est prête à être déployée. Si les critères de réussite ne sont pas respectés, le pipeline est arrêté ou annulé.
Dans le cas d’une application Web ou mobile, effectuez des tests d’intégration automatisés sur plusieurs navigateurs de bureau ou sur des appareils réels. Cette approche est particulièrement utile pour valider la compatibilité et les fonctionnalités des applications mobiles sur un large éventail d’appareils.
Étapes d’implémentation
-
Rédigez des tests unitaires avant d’écrire du code fonctionnel (développement piloté par les tests ou TDD). Établissez des lignes directrices en matière de code afin que l’écriture et l’exécution de tests unitaires soient une exigence non fonctionnelle de codage.
-
Créez une suite de tests d’intégration automatisés qui couvrent les fonctionnalités testables identifiées. Ces tests doivent simuler les interactions avec les utilisateurs et valider les résultats attendus.
-
Créez l’environnement de test nécessaire pour exécuter les tests d’intégration. Cela peut inclure des environnements de préparation ou de pré-production qui imitent étroitement l’environnement de production.
-
Configurez vos étapes source, de construction, de test et de déploiement à l’aide de la console AWS CodePipeline ou de l’AWS Command Line Interface (CLI).
-
Déployez l’application une fois que le code a été créé et testé. AWS CodeDeploy peut la déployer dans vos environnements intermédiaire (tests) et de production. Ces environnements peuvent inclure des instances Amazon EC2, des fonctions AWS Lambda et des serveurs sur site. Le même mécanisme de déploiement doit être utilisé pour déployer l’application dans tous les environnements.
-
Surveillez la progression de votre pipeline et le statut de chaque étape. Utilisez des contrôles de qualité pour bloquer le pipeline en fonction du statut des tests. Vous pouvez aussi recevoir des notifications en cas d’échec ou d’achèvement d’une étape du pipeline.
-
Surveillez en permanence les résultats des tests et recherchez des modèles, des régressions ou des domaines nécessitant une plus grande attention. Utilisez ces informations pour améliorer la suite de tests, identifier les domaines de l’application nécessitant des tests plus approfondis et optimiser le processus de déploiement.
Ressources
Bonnes pratiques associées :
Documents connexes :