Articles
Tutoriels
Guides interactifs
Comment les tests automatisés améliorent-ils DevOps ?
L'automatisation des tests permet aux équipes de développement de développer, tester et livrer plus rapidement et de façon plus fiable.
Anton Hristov
Responsable produit, Mabl
Au début des années 2000, les entreprises se sont lancées dans l'adoption de pratiques Agile, en adoptant un cycle de vie du développement accéléré, marqué par du feedback client fréquent. Cela a ensuite conduit à l'adoption d'outils permettant l'intégration continue et la livraison continue, lesquelles automatisent les processus de développement, de test, de configuration et de déploiement.
Cependant, les fonctions clés comme le développement, les tests et la livraison en production étaient exécutées par des équipes distinctes cloisonnées. La conséquence ? Des inefficacités et l'enlisement du cycle de vie de développement logiciel (SDLC). Ainsi sont donc nés DevOps, les philosophies organisationnelles, les pratiques et les outils qui permettent aux petites équipes transverses (également connues sous le nom de squads) d'être responsables de la livraison continue et de la qualité des mises à jour produit, de bout en bout.
Au départ, DevOps n'unifiait que les équipes de développement et dédiées aux opérations informatiques, et les tests étaient effectués par une équipe distincte, de manière essentiellement manuelle. La méthodologie a permis de relever les défis liés à la livraison et à la surveillance d'apps cloud. De plus, elle a conduit à la création de pipelines de CI/CD totalement automatisés. Cependant, les cycles de livraison n'ont pas été considérablement accélérés, car les tests étaient cloisonnés et constituaient souvent un processus chronophage et manuel.
Pour pallier les goulots d'étranglement des tests, les organisations s'éloignent à présent des équipes de QA centralisées pour intégrer l'assurance qualité au sein de l'ensemble de l'équipe de développement.
Qu'est-ce que l'automatisation des tests ?
L'automatisation des tests est la pratique qui consiste à réviser et à valider automatiquement un logiciel, comme une app web, pour s'assurer qu'il répond aux normes de qualité prédéfinies en matière de style de code, de fonctionnalités (logique métier) et d'expérience utilisateur.
Les pratiques de tests impliquent généralement les étapes suivantes :
- Tests unitaires : valident les unités individuelles de code, telles qu'une fonction, afin qu'elles fonctionnent comme prévu
- Tests d'intégration : garantissent que plusieurs éléments de code peuvent fonctionner ensemble sans conséquence inattendue
- Tests de bout en bout : valident le fait que l'app répond aux attentes de l'utilisateur
- Tests exploratoires : adoptent une approche non structurée pour passer en revue de nombreux domaines d'une app du point de vue de l'utilisateur, afin de découvrir tout problème fonctionnel ou visuel
Les différents types de tests sont souvent visualisés sous forme de pyramide. À mesure que vous gravissez la pyramide, le nombre de tests de chaque type diminue, et le coût de création et d'exécution de ces derniers augmente.
Traditionnellement, tous les tests de la pyramide étaient réalisés manuellement. Ce processus était lent, coûteux et source d'erreurs jusqu'à la création d'outils de test automatisés.
Aujourd'hui, la majorité des tests unitaires sont totalement automatisés, et leur automatisation est considérée comme une bonne pratique. Les tests d'intégration sont également largement automatisés et, dans le cas contraire, ils sont généralement ignorés au profit de tests de bout en bout plus manuels. La vague actuelle qui vise à automatiser les tests est majoritairement axée sur l'automatisation de la couche de bout en bout de la pyramide des tests, ce qui réduit la nécessité de tests d'intégration.
Bien que les outils d'automatisation existent depuis plus de dix ans, bon nombre d'entre eux nécessitent de posséder des compétences en programmation. Il en résulte des tests peu fiables et fragiles, qui sont extrêmement coûteux à dépanner et à gérer à grande échelle. De nombreuses équipes créent alors leurs propres frameworks d'automatisation des tests personnalisés. Il devient donc difficile et chronophage d'intégrer de nouveaux membres dans l'équipe en raison de la courbe d'apprentissage abrupte. Les frameworks personnalisés finissent également par nécessiter leurs propres mesures de maintenance et d'amélioration pour s'adapter aux changements de la stack technique. En conséquence, la plupart des tests de bout en bout constituaient jusqu'à présent un processus manuel.
À mesure que les organisations font évoluer leurs pratiques DevOps, la nécessité d'automatisation des tests tout au long du cycle de vie est importante pour tirer parti des principaux avantages de DevOps : la possibilité de développer, tester et livrer plus rapidement et de façon plus fiable, de simplifier les réponses aux incidents, et d'améliorer la collaboration et la communication au sein des équipes. Il n'est plus possible qu'un build de version soit aux mains de l'équipe de QA pendant plusieurs jours avant que les développeurs ne reçoivent du feedback et corrigent les problèmes identifiés. Les équipes de QA doivent aligner leurs efforts dans le cycle DevOps en s'assurant que les scénarios de tests sont automatisés et atteignent une couverture de code proche de 100 %. Les environnements doivent être standardisés, et le déploiement sur leurs sandbox de QA doit être automatisé. Les tâches de tests préalables, de nettoyage, ou encore les tests en aval doivent être automatisés et alignés sur le cycle d'intégration continue.
Il existe à présent des outils « low-code » tels que Mabl qui permettent d'intégrer des tests de bout en bout fiables et automatisés à chaque étape du pipeline de CI/CD. Les problèmes sont ainsi détectés beaucoup plus tôt dans le cycle de vie du développement. C'est bien connu, plus les problèmes liés à une version sont détectés tôt, plus leur résolution sera rapide et moins elle sera coûteuse.
Tests automatisés dans DevOps
En pratique, cela signifie que les développeurs s'orientent vers l'écriture de tests unitaires pour valider le fait que le code fonctionne comme prévu, alors que les experts en qualité et les Product Owners créent des tests d'interface utilisateur automatisés qui valident l'expérience utilisateur de bout en bout. Les experts en qualité organisent également des sessions de tests exploratoires au cours desquelles l'équipe examine manuellement différentes zones de l'app pour détecter les problèmes.
Une bonne pratique DevOps consiste à exécuter des tests automatisés le plus tôt et le plus souvent possible dans le pipeline de CI/CD. Cela inclut l'exécution de tests d'interface utilisateur automatisés en production afin de surveiller de façon proactive les problèmes d'expérience utilisateur. Puisque les apps actuelles reposent sur de nombreux services avec plusieurs composantes mobiles, effectuer une surveillance synthétique des transactions en exécutant des tests en production peut détecter les problèmes grâce à des services tiers avant que vos utilisateurs ne les détectent.
Matériel connexe
Essayez la solution gratuitement
Matériel connexe
Améliorez les pratiques DevOps grâce aux tests
Se lancer avec les tests automatisés
Il n'existe pas de solution universelle. Cependant, voici quelques éléments importants à prendre en compte lors de la définition d'une stratégie d'automatisation des tests pour votre équipe :
Fréquence de livraison
Plus les livraisons sont fréquentes, plus vous devez investir dans l'automatisation des tests, en particulier dans les tests de bout en bout qui doivent être exécutés sur chaque déploiement. Si vous ne disposez pas d'un cycle de livraison fréquent et que vous souhaitez l'accélérer, vous pouvez tout d'abord augmenter la couverture des tests unitaires et créer des smoke tests simples et automatisés de l'interface utilisateur pour effectuer un contrôle rapide de l'intégrité de chaque build. Vous pouvez ensuite investir progressivement dans la création de tests de bout en bout plus automatisés qui vous permettront de réduire le temps nécessaire à la vérification des régressions dans une livraison.
Disponibilité des outils
Les outils d'automatisation des tests modernes amélioreront considérablement la capacité de votre équipe à livrer en continu des logiciels d'excellente qualité. Lors de l'évaluation des outils de test, tenez compte de la facilité de création des tests, de la fiabilité, de la nécessité de maintenance et de l'intégration avec votre stack de CI/CD.
Il est tout aussi important de cerner la courbe d'apprentissage ainsi que les compétences à posséder pour un outil donné. Plus votre solution est facile à utiliser, plus votre équipe pourra se lancer rapidement. De plus, elle sera accessible à un plus grand nombre de personnes dans votre équipe, ce qui peut augmenter la couverture de test et aider à instaurer une culture de la qualité. Une méthode efficace pour évaluer les solutions de tests consiste à demander à tous les membres de l'équipe de passer du temps à automatiser quelques scénarios de test avec les principales solutions retenues.
Maturité du produit
Si votre équipe travaille sur un produit ayant de nombreux clients existants et une base de code mature, il y a de fortes chances que vous ayez déjà une cadence de livraison ainsi que des pratiques de tests. À mesure que votre équipe passe à l'intégration continue ou à une CI/CD totale, il est important d'inclure l'automatisation des tests en tant qu'élément clé de l'automatisation du pipeline. Une livraison et un feedback rapides sont peu viables si les tests ne sont pas automatisés avant le développement et tout au long de ce dernier.
En revanche, si votre équipe développe un nouveau produit, c'est l'opportunité idéale pour l'équiper de tests automatisés dès le début. Définissez un objectif pour la couverture de tests unitaires dès le départ et concentrez-vous sur la définition de scénarios de test de bout en bout pour chaque fonctionnalité. Il est préférable d'attendre qu'une fonctionnalité soit sur le point d'être livrée avant d'ajouter des tests de bout en bout automatisés. En effet, vous évitez ainsi les échecs de tests dus à des changements de l'interface utilisateur.
Environnements de CI/CD et données de tests
La création de tests automatisés est un défi en soi, mais c'est souvent le manque d'environnements épurés et disposant de données de test qui empêche les équipes d'adopter l'automatisation des tests plus tôt dans le pipeline de CI/CD. Par conséquent, il est important d'échanger de façon précoce en équipe à propos de la stratégie de tests et de s'engager à créer l'infrastructure de tests nécessaire. Par exemple, les développeurs doivent implémenter le support pour les comptes utilisateur de test et avoir la possibilité de charger un environnement qui comprend les données de test à l'aide d'une API. Un développement anticipé d'une infrastructure de provisionnement de tests éphémère accélérera considérablement le cycle de revue et de feedback sur les livraisons.
Comment les tests automatisés modifient-ils le rôle de l'équipe de QA ?
Comment les tests automatisés optimisent-ils DevOps ?
Les tests automatisés sont à présent considérés comme une bonne pratique DevOps. Implémenter des tests automatisés sur une grande partie de votre pipeline de développement peut sembler intimidant de prime abord, mais vous pouvez, dans un premier temps, automatiser un seul scénario de bout en bout et exécuter ce test selon un planning. De nouveaux outils facilitent également les tests automatisés, et les résultats en valent réellement la peine. Après tout, qui ne veut pas satisfaire ses utilisateurs ?
L'adoption de tests automatisés permet de tirer de DevOps les avantages suivants :
- Rapidité sans compromis sur la qualité : obtenez une vélocité produit élevée, qui rend les développeurs heureux et leur permet de livrer plus de valeur aux utilisateurs, plus rapidement
- Collaboration améliorée au sein de l'équipe : la responsabilité partagée de la qualité permet une meilleure collaboration entre les membres de l'équipe
- Fiabilité : améliorez la fiabilité des livraisons en augmentant la couverture grâce à l'automatisation des tests. Les problèmes en production ne devraient pas être la norme, ils devraient être rares
- Évolutivité : produisez des résultats de qualité cohérente avec un risque réduit en distribuant le développement entre plusieurs petites équipes qui fonctionnent de manière autonome
- Sécurité : avancez rapidement sans compromis en termes de sécurité et de conformité en tirant parti des politiques de conformité automatisées, des contrôles avancés ainsi que des techniques de gestion des configurations
- Satisfaction client améliorée : une fiabilité améliorée ainsi que des réponses rapides au feedback client augmentent la satisfaction des utilisateurs et les incitent à davantage recommander le produit
Conclusion…
À terme, l'adoption de l'automatisation des tests pour tirer pleinement parti de DevOps réduira les goulots d'étranglement et améliorera l'efficacité. Ces deux éléments auront un impact direct sur la satisfaction des employés et des clients, ainsi que sur le résultat.
Lancez-vous dans l'automatisation de vos tests avec Bitbucket Pipelines ou à l'aide des nombreux outils d'automatisation des tests ou des ressources disponibles sur l'Atlassian Marketplace.
Partager cet article
Thème suivant
Lectures recommandées
Ajoutez ces ressources à vos favoris pour en savoir plus sur les types d'équipes DevOps, ou pour les mises à jour continues de DevOps chez Atlassian.