Accélérer l’automatisation des tests par le DevOps (Partie 2)
Cette série d’articles est issue de l’article que j’ai écris pour le magazine Programmez ! paru en Janvier 2024.
Cette série d’articles explore en 3 partie les thèmes suivant :
- Les avantages de l'utilisation de Docker,
- Les avantages des pipelines d'intégration continue de tests avec GitLab CI ,
- L’exploitation du cloud pour renforcer l'efficacité des tests automatisés et d’améliorer la productivité dans le processus de développement de logiciels.
Les tests en continu (partie 2)
Pourquoi tester en continu ?
Aujourd’hui, il est indispensable d’un contexte de time-to-market de plus en plus contraignant d’avoir des feedbacks sur la qualité des développements le plus rapidement possible. La mise en place de test en continu via des pipelines est donc indispensable et permet de :
- Détecter plus rapidement : les problèmes et de les résoudre plus rapidement grâce aux feedbacks rapides.
- Utiliser efficacement : l'ensemble des ressources disponibles, c'est-à-dire des testeurs, de l'infrastructure de test, etc.
- Accélérer les tests : avec la capacité à exécuter des tests en parallèle.
- Partager les résultats : à 360 avec toutes les parties prenantes dans un gestionnaire de tests avec des dashboards dédiés.
- Améliorer la productivité : Les pipelines de test et de déploiement continu permettent aux équipes de développement de se concentrer sur la création de fonctionnalités plutôt que sur les tâches manuelles et répétitives liées aux tests et aux déploiements
Certaines contraintes sont aussi à prendre en compte au préalable :
- Complexité de la configuration initiale : La mise en place d'un pipeline de test et de déploiement continu nécessite une configuration initiale complexe. Les développeurs et les automaticiens doivent monter en compétences sur cette partie.
- Maintenance et évolutivité : Les pipelines de test et de déploiement continu nécessitent une maintenance continue pour s'adapter aux évolutions des projets et des exigences. Ils doivent être évolutifs pour prendre en charge l'ajout de nouveaux tests, la modification des configurations, etc.
GitLab CI : un outil adapté
GitLab CI, l'outil d'intégration continue de GitLab, s'inscrit comme une solution complémentaire à Docker.
Les fichiers de configuration YAML dans GitLab CI permettent de définir de manière flexible et transparente les différentes étapes du pipeline. Intégrer Docker dans ces pipelines offre une synergie puissante, où chaque étape du processus de test peut être orchestrée dans des conteneurs dédiés.
Cette approche modulaire favorise une gestion efficace des dépendances, simplifiant la configuration et la maintenance des pipelines.
L'utilisation de GitLab CI permet également d'assurer une traçabilité complète des modifications de code jusqu'aux résultats des tests et la synchronisation vers le gestionnaire de tests. Cela offre une visibilité inégalée sur l'état du code à chaque étape du pipeline, permettant une détection précoce des problèmes et accélérant la résolution des anomalies tout en partageant facilement les résultats des tests.
Un exemple de pipeline de test
Concrètement, l’utilisation de docker et de GitLab CI peut-être configurer dans ce contexte suivant afin de tester en continu :
- Gitlab pour le gestionnaire de code
- Gitlab CI pour les pipelines
- Docker pour déployer les environnements
- Xray comme gestionnaire de tests
- Lightouse pour les tests non fonctionnels.
- OpenCart comme SUT E-commerce via une image docker
- Selenium ou RobotFrameowk comme framework de test via un conteneur docker
Une intégration dans les pipelines de développement
Pour aller plus loin dans une démarche shift left, docker et les tests en continu peuvent être intégrés au pipeline de développement afin de permettre aux développeurs d’avoir des feedbacks très rapide et de corriger les anomalies remontées par le pipeline.
Les tests seront visibles et les résultats seront facilement accessibles et, par extension, l’automatisation des tests sera valorisée.
Dans le dernière article de cette série, les thèmes développés seront !
- L’exploitation du cloud pour renforcer l'efficacité des tests automatisés et d’améliorer la productivité dans le processus de développement de logiciels.