OPS06-BP04 Automatiser les tests et les restaurations - Pilier Excellence opérationnelle

OPS06-BP04 Automatiser les tests et les restaurations

Pour accroître la rapidité, la fiabilité et la confiance de votre processus de déploiement, mettez en place une stratégie de tests automatisés et de restauration dans les environnements de pré-production et de production. Automatisez les tests lors du déploiement en production afin de simuler les interactions entre l'homme et le système et de vérifier les modifications déployées. Automatisez la restauration pour revenir rapidement à un état antérieur sain connu. La restauration doit être déclenchée automatiquement dans des conditions prédéfinies, par exemple lorsque le résultat souhaité de la modification n'est pas atteint ou lorsque le test automatisé échoue. L'automatisation de ces deux activités améliore le taux de réussite de vos déploiements, minimise le temps de reprise et réduit l'impact potentiel sur l'entreprise.

Résultat souhaité : Vos tests automatisés et vos stratégies de restauration sont intégrés dans votre pipeline d'intégration continue et de livraison continue (CI/CD). Votre surveillance est en mesure de valider vos critères de réussite et de déclencher une restauration automatique en cas d'échec. Cela permet de minimiser l'impact sur les utilisateurs finaux et les clients. Par exemple, lorsque tous les résultats des tests ont été satisfaits, vous transférez votre code dans l'environnement de production où des tests de régression automatisés sont lancés, en utilisant les mêmes cas de test. Si les résultats des tests de régression ne correspondent pas aux attentes, une restauration automatisée est lancée dans le flux de travail du pipeline.

Anti-modèles courants :

  • Vos systèmes ne sont pas conçus de manière à pouvoir être mis à jour avec de petites versions. Par conséquent, il est difficile d'annuler ces modifications en bloc en cas d'échec du déploiement.

  • Votre processus de déploiement consiste en une série d'étapes manuelles. Après avoir apporté des modifications à votre charge de travail, vous commencez les tests de post-déploiement. Après les tests, vous vous rendez compte que votre charge de travail est inopérante et que les clients sont déconnectés. Vous commencez les opérations pour restaurer la version précédente. Toutes ces étapes manuelles retardent la reprise globale du système et ont un impact prolongé sur vos clients.

  • Vous avez passé du temps à développer des cas de tests automatisés pour des fonctionnalités qui ne sont pas fréquemment utilisées dans votre application, minimisant ainsi le retour sur investissement de votre capacité de tests automatisés.

  • Votre version est composée de mises à jour d'applications, d'infrastructures, de correctifs et de configurations qui sont indépendantes les unes des autres. Cependant, vous disposez d'un seul pipeline CI/CD qui fournit toutes les modifications en une seule fois. La défaillance d'un composant vous oblige à annuler toutes les modifications, ce qui rend votre restauration complexe et inefficace.

  • Votre équipe termine le travail de codage au cours du premier sprint et commence le travail du deuxième sprint, mais votre plan ne prévoyait pas de tests avant le troisième sprint. En conséquence, les tests automatisés ont révélé des défauts du premier sprint qui ont dû être résolus avant que les tests des produits livrables du deuxième sprint puissent commencer et la version entière est retardée, ce qui dévalorise vos tests automatisés.

  • Vos tests de régression automatisés pour la version de production sont terminés, mais vous ne surveillez pas l'état de la charge de travail. Comme vous ne savez pas si le service a redémarré ou non, vous ne savez pas si la restauration est nécessaire ou si elle a déjà eu lieu.

Avantages liés au respect de cette bonne pratique : L'automatisation des tests accroît la transparence de votre processus de test et votre capacité à couvrir davantage de fonctionnalités dans un laps de temps plus court. En testant et en validant les modifications en production, vous êtes en mesure d'identifier immédiatement les problèmes. L'amélioration de la cohérence avec les outils de test automatisés permet une meilleure détection des défauts. En restaurant automatiquement la version précédente, vous réduisez l'impact sur vos clients. La restauration automatisée inspire finalement plus de confiance dans vos capacités de déploiement en réduisant l'impact sur l'entreprise. Dans l'ensemble, ces capacités permettent de réduire les délais de livraison tout en garantissant la qualité.

Niveau de risque exposé si cette bonne pratique n'est pas respectée : Moyen

Directives d'implémentation

Automatisez le test des environnements déployés pour confirmer les résultats souhaités plus rapidement. Automatisez la restauration du dernier état connu de bonne qualité lorsque les résultats prédéfinis ne sont pas atteints, afin de minimiser les temps de récupération et de réduire les erreurs causées par les processus manuels. Intégrez des outils de test au flux de travail de votre pipeline afin de tester de manière cohérente et de minimiser les saisies manuelles. Privilégiez l'automatisation des cas de test, tels que ceux qui atténuent les risques les plus importants et qui doivent être testés fréquemment à chaque modification. En outre, vous pouvez automatiser la restauration en fonction de conditions spécifiques prédéfinies dans votre plan de test.

Étapes d'implémentation

  1. Établissez un cycle de test pour votre cycle de développement qui définit chaque étape du processus de test, de la planification des exigences au développement des cas de test, en passant par la configuration des outils, les tests automatisés et la clôture des cas de test.

    1. Créez une approche de test spécifique à la charge de travail à partir de votre stratégie de test globale.

    2. Envisagez, le cas échéant, une stratégie de tests continus tout au long du cycle de développement.

  2. Choisissez des outils automatisés pour les tests et la restauration en fonction des besoins de votre entreprise et des investissements dans le pipeline.

  3. Décidez des cas de test que vous souhaitez automatiser et de ceux qui doivent être exécutés manuellement. Ceux-ci peuvent être définis en fonction de la priorité de la valeur commerciale de la fonctionnalité testée. Alignez chaque membre de l'équipe sur ce plan et vérifiez leur responsabilité en ce qui concerne l'exécution des tests manuels.

    1. Appliquez les capacités de test automatisé à des cas de test spécifiques qui se prêtent à l'automatisation, tels que les cas répétables ou fréquemment exécutés, ceux qui nécessitent des tâches répétitives ou ceux qui sont requis dans plusieurs configurations.

    2. Définissez les scripts d'automatisation des tests ainsi que les critères de réussite dans l'outil d'automatisation afin que l'automatisation continue du flux de travail puisse être lancée lorsque des cas spécifiques échouent.

    3. Définissez des critères d'échec spécifiques pour la restauration automatisée.

  4. Donnez la priorité à l'automatisation des tests afin d'obtenir des résultats cohérents grâce à un développement approfondi des cas de test où la complexité et l'interaction humaine présentent un risque d'échec plus élevé.

  5. Intégrez vos outils de tests automatisés et de restauration dans votre pipeline CI/CD.

    1. Définissez des critères de réussite clairs pour vos modifications.

    2. Surveillez et observez pour détecter ces critères et annuler automatiquement les modifications lorsque des critères de restauration spécifiques sont remplis.

  6. Procédez à différents types de tests de production automatisés, tels que :

    1. des tests A/B pour afficher les résultats par rapport à la version actuelle entre deux groupes d'utilisateurs ;

    2. des tests Canary qui vous permettent de déployer votre modification auprès d'un sous-ensemble d'utilisateurs avant de la diffuser à tous ;

    3. des tests d'indicateur de fonctions qui permettent d'activer et de désactiver une seule fonctionnalité de la nouvelle version depuis l'extérieur de l'application, de sorte que chaque nouvelle fonctionnalité puisse être validée une à la fois ;

    4. des tests de régression pour vérifier les nouvelles fonctionnalités avec les composants interdépendants existants.

  7. Contrôlez les aspects opérationnels de l'application, les transactions et les interactions avec d'autres applications et composants. Élaborez des rapports pour illustrer le degré de réussite des modifications en fonction de la charge de travail, afin que vous puissiez identifier les parties de l'automatisation et du flux de travail qui peuvent être encore optimisées.

    1. Élaborez des rapports sur les résultats des tests qui vous aideront à prendre des décisions rapides sur le fait d'appeler ou non les procédures de restauration.

    2. Mettez en œuvre une stratégie permettant une restauration automatisée sur la base de conditions d'échec prédéfinies résultant d'une ou de plusieurs de vos méthodes de test.

  8. Développez vos cas de test automatisés pour permettre leur réutilisation dans le cadre de futures modifications répétées.

Niveau d'effort du plan d'implémentation : Moyen

Ressources

Bonnes pratiques associées :

Documents connexes :

Exemples connexes :

Vidéos connexes :