Dans le cycle de vie du développement logiciel, les tests automatisés intégrés dans le pipeline d'intégration et de livraison continues (CI/CD) sont essentiels pour garantir la qualité des logiciels. Les tests automatisés permettent de détecter rapidement les erreurs, réduisent le travail manuel et améliorent la précision et la couverture des tests. Dans le pipeline CI/CD, les tests automatisés sont généralement effectués une fois la construction terminée et avant le déploiement du code, notamment des tests unitaires, des tests d'interface utilisateur et des tests d'intégration, qui peuvent être exécutés en parallèle pour accélérer l'exécution. Les tests d'intégration sont particulièrement importants dans un pipeline CI/CD car ils testent les interactions entre les composants de l'application et valident la fonctionnalité globale du système.
Dans l'article précédent, nous avons abordé divers cas d'utilisation de cas de tests automatisés pour les équipes agiles. Un scénario est celui où une équipe souhaite intégrer les tests à chaque build et mettre en œuvre une intégration continue dans le cadre du processus de build.
Dans cet article, nous discuterons des tests d'intégration dans les plateformes d'intégration continue/de livraison continue.
Commençons par les bases.
Qu'est-ce que les tests automatisés ?
Les tests logiciels font référence à l'exécution de tests basés sur un ensemble de cas de test et à la comparaison des résultats réels avec les résultats prédits. Il existe plusieurs étapes et techniques de test à suivre au cours de ce processus. Les tests sont essentiels pour garantir la qualité du produit. Ce processus est généralement effectué manuellement par des équipes de testeurs. Cependant, dans les tests automatisés, le processus est automatisé à l’aide d’outils et de techniques logiciels. Ici, les étapes manuelles ne sont plus nécessaires mais les scripts sont automatiquement créés et les cas de test exécutés. Les tests automatisés éliminent les erreurs humaines, la couverture et bien d’autres problèmes. Cela permet également de gagner du temps, d’améliorer la commodité de la réalisation des tests et d’augmenter l’efficience et l’efficacité.
Tests automatisés dans le pipeline CI/CD
Les tests automatisés sont un élément essentiel du pipeline CI/CD, car les tests à exécution rapide fournissent un retour d'information précoce aux développeurs. Les problèmes ou les erreurs détectés tôt peuvent être corrigés plus tôt. En conséquence, les produits publiés seront plus précis et sans erreurs. Cela améliore la qualité globale du produit, gagnant ainsi la satisfaction du client. En bref, les avantages des tests automatisés dans les pipelines CI/CD sont les suivants :
Conforme au concept CI/CD de « construire rapidement, échouer rapidement »
Réduire la quantité de travail manuel, économisant ainsi temps et réduisant la possibilité d'erreurs sexuelles.
À mesure que le nombre de cas de test augmente, les résultats des tests sont plus précis et peuvent couvrir une zone plus large.
Obtenez un retour immédiat sur tout problème
Plusieurs résultats de tests peuvent être générés et comparés pour garantir la qualité et la cohérence
Types de tests automatisés utilisés dans les pipelines CI/CD
Tests unitaires : Il s'agit des tests de bas niveau effectués une fois le module codé et révisé. Les cas de test sont conçus pour tester des composants individuels. Le but est de garantir que chaque composant fonctionne comme prévu en toutes circonstances.
Tests d'intégration : l'intégration fait référence au test de l'interaction des composants au sein d'une application. Ce test est effectué une fois que tous les modules ont été testés unitairement. L'objectif principal est de tester l'interface du module et de vérifier s'il y a des erreurs dans le passage des paramètres lorsqu'un module appelle la fonction d'un autre module.
Tests du système : les tests sont conçus pour valider le système entièrement développé et garantir qu'il est conforme au document de spécification des exigences. Généralement, à ce stade, le logiciel est prêt à être utilisé par les utilisateurs potentiels. Ces types de tests système sont appelés tests alpha (effectués par une équipe de développement au sein d'une organisation), bêta (effectués par un groupe sélectionné d'utilisateurs/clients) ou tests d'acceptation (effectués par des utilisateurs/clients pour déterminer l'acceptation d'un système livré).
Que sont l'intégration continue et la livraison continue ?
En bref, l'intégration continue permet aux équipes de développement d'intégrer leur code dans un référentiel partagé. Cela permet de maintenir la qualité du code et d’identifier rapidement les problèmes potentiels avec les versions locales de votre code.
La livraison continue est aussi souvent appelée « déploiement continu ». Tout ce que l'équipe de développement fusionne constamment est constamment déployé dans l'environnement réel.
Étant donné que la plupart des développeurs travaillent en parallèle, intégrer constamment leur code dans un référentiel signifie que la branche master est constamment mise à jour avec de nouvelles fonctionnalités. Pour garantir que la qualité du code ne soit pas affectée par des changements trop rapides, les tests doivent s'exécuter au même rythme.
Sans surprise, les tests manuels dans cet environnement ne sont pas le meilleur moyen d'atteindre cet objectif. Les tests automatisés sont la clé de la réussite des tests dans votre pipeline CI/CD.
9 Phases de livraison continue
Développement : les développeurs créent du code en fonction des exigences du projet ou des demandes de fonctionnalités.
Écrire des tests : Une fois que vous avez écrit le code, vous devez écrire des tests. À ce stade, ces tests sont généralement des tests unitaires écrits par les développeurs.
Tests locaux : effectuez ensuite des tests locaux pour vérifier si tous les tests réussissent et assurez-vous que le code ne se casse pas. En règle générale, le pourcentage est défini sur le taux de réussite que les tests en cours doivent atteindre.
Rebase et résoudre les conflits : dans les scénarios de développement réels, plusieurs personnes fusionneront leur code. Les développeurs doivent s'assurer que leurs branches sont toujours mises à jour. La mise à jour d'une branche avec le dernier code fusionné est appelée « rebasage ». Une fois repositionné, certains conflits peuvent survenir et doivent être résolus. Ensuite, réexécutez le test sur le code rebasé.
Commit : Une fois les tests réussis, le code est prêt à valider toutes les modifications.
Build : Le code source développé est ensuite assemblé pour construire un artefact de déploiement qui peut être exécuté sur une instance, telle qu'un serveur où l'environnement est local. Ce code est maintenant prêt à être déployé dans un autre environnement de test.
UAT : Le code est ensuite déployé sur un serveur de test et les testeurs commencent à tester la fonctionnalité. Ces tests peuvent être automatisés ou manuels.
Fusion : Si le commit sous test est approuvé par les testeurs, il est fusionné dans la branche master.
Déploiement en production : une fois le code fusionné, il est déployé en production.
Chaque build codé par un développeur doit terminer le processus ci-dessus.
Quelle est la place des tests automatisés dans le pipeline CI/CD ?
Idéalement, les tests automatisés ont lieu une fois la phase de construction terminée et le code peut être déployé. Les tests unitaires, les tests d'interface utilisateur et les tests d'intégration peuvent tous être exécutés à ce stade. Ces tests permettent de garantir que le code répond aux normes de qualité.
Cette phase peut durer de quelques minutes à quelques heures, selon l'architecture de l'automatisation.
Les tests peuvent être exécutés en parallèle pour les exécuter plus rapidement. Si le code échoue pendant la phase de test, la build peut être rejetée sans investir davantage de temps de test manuel.
Outils pour CI/CD
Jenkins : Jenkins est un outil open source pour l'intégration continue. Son utilisation est gratuite et les tâches peuvent être configurées via l'interface et les scripts.
Travis CI : Cet outil est gratuit pour les projets open source et hébergé sur GitHub.
Gitlab : Gitlab est un outil de contrôle de version avec sa propre approche cloud de CI. Il est pris en charge sur plusieurs plates-formes et propose des versions gratuites et payantes.
Bamboo : Bamboo est un outil CI pour Jira. Si votre organisation utilise Jira, il serait utile de consulter cet outil. Il prend également en charge la fusion automatique lors de l'approbation du ticket.
Meilleures pratiques pour les pipelines CI/CD afin de tirer le meilleur parti de l'automatisation des tests
Changements incrémentiels : il est toujours recommandé de suivre une approche fonctionnalité par fonctionnalité. Si une fonctionnalité est vraiment volumineuse, il est préférable de la diviser en fonctionnalités plus petites et plus rapides à tester. Ceci est important pour l’automatisation, car si quelque chose ne va pas, il est plus facile d’identifier la cause première. Si votre engagement est trop important, déterminer la cause du problème sera une tâche ardue.
Déterminez ce qui peut être automatisé : il est courant que les équipes se lancent rapidement et disent « automatisons tout », mais c'est une erreur courante. Nous devons comprendre le but de l'automatisation et identifier les cas de test qui doivent être automatisés.
Tests parallèles : les tests doivent être exécutés en parallèle pour rendre les tests plus efficaces et plus rapides. Cela peut réduire considérablement le temps nécessaire à l’exécution des tests, donnant ainsi des résultats plus rapidement. Mais il ne suffit pas d'exécuter ces tests en parallèle ; il est également important de faire évoluer la taille du serveur exécutant les tests pour réellement augmenter la vitesse des tests.
Conclusion
Les tests automatisés sont un élément important du déploiement réussi de projets tout en maintenant les normes de qualité. Garantir que les tests sont exécutés à chaque étape offre une bonne transparence sur la qualité du code. Les erreurs peuvent être détectées rapidement et tous les retards qui pourraient en être la cause peuvent être résolus rapidement. Disposer d'un pipeline CI/CD pour les tests intégrés permet d'accélérer le processus de test et de déploiement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!