Accélérer l’automatisation des tests par le DevOps (Partie 1)
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.
Dans le domaine de l'IT, les entreprises sont confrontées à une pression croissante pour réduire le time to market tout en garantissant une qualité optimale de leurs produits logiciels. L'automatisation des tests est devenue une composante essentielle de cette stratégie, et le DevOps offre des solutions efficaces pour y parvenir.
L'approche DevOps vise à fusionner les équipes de développement et d'exploitation, favorisant ainsi une collaboration fluide tout au long du cycle de vie du développement logiciel. L'automatisation des tests s'intègre parfaitement dans cette philosophie, permettant aux équipes de livrer des logiciels de haute qualité de manière rapide et régulière.
Pourquoi développer dans un container docker ?
Docker est une technologie de conteneurisation qui permet de packager des applications et leurs dépendances dans des conteneurs légers et portables. Les avantages de développer dans un conteneur Docker sont nombreux :
- Isolation et portabilité : Les conteneurs Docker offrent un environnement isolé, garantissant que les tests sont exécutés de manière cohérente, indépendamment de l'environnement de déploiement. Cela permet de reproduire les résultats des tests sur différentes machines et évite les problèmes liés à la compatibilité des environnements.
- Répétabilité des tests : Les conteneurs Docker encapsulent toutes les dépendances requises, ce qui facilite la reproductibilité des tests. Les développeurs et les testeurs peuvent spécifier précisément les versions des logiciels et des bibliothèques utilisées, ce qui permet d'exécuter les tests de manière cohérente à chaque itération.
- Gestion simplifiée des environnements : Docker facilite la configuration et la gestion des environnements de test. Les développeurs et automaticiens peuvent facilement créer des images Docker avec les configurations requises et les partager avec l'équipe de développement, ce qui accélère la mise en place des environnements de test.
- Productivité : Docker permet de reproduire un test dans les mêmes conditions et cela permet à tous les automaticiens d’une équipe de développer dans le même contexte technique et d’éviter le : “ça marche sur ta machine mais pas sur la mienne” ! Et ainsi d’éviter les longes et pénibles étables d’installation et de configuration d’un framework de test.
Cependant, il est important de noter quelques inconvénients potentiels :
- Complexité initiale : La mise en place de Docker peut nécessiter une courbe d'apprentissage initiale importante pour les équipes qui n'ont pas encore utilisé cette technologie. Une compréhension approfondie de Docker et de son écosystème est nécessaire pour optimiser son utilisation.
- Surcharge des ressources : L'exécution des tests dans des conteneurs Docker peut nécessiter plus de ressources système, en particulier si plusieurs tests sont exécutés, simultanément. Un PC I7 de 16 Go minimum est recommandé ou l’équivalent en mac.
Docker, se positionne comme un élément clé pour accélérer les tests automatisés. En encapsulant l'application et ses dépendances dans des conteneurs légers et portables, Docker assure une reproductibilité maximale de l'environnement de test. Cela élimine les problèmes liés aux variations d'environnement entre les différentes étapes du cycle de développement, garantissant ainsi une exécution de test consistante.
Les conteneurs Docker offrent une isolation efficace, permettant aux équipes de tester différentes versions de composants logiciels sans crainte d'interférences. L'intégration de Docker dans le processus de test contribue ainsi à minimiser les faux positifs et à maximiser la fiabilité des résultats.
Docker peut aussi être utilisé comme un environnement de développement à part entière.
Comment utiliser Docker pour développer ses scripts ?
Comment utiliser Docker pour développer ses scripts ?
L'automatisation des tests joue un rôle essentiel dans le processus de développement logiciel. Pour accélérer cette automatisation, il est important d'utiliser des outils et des technologies adaptés. Docker, combiné à l'environnement de développement intégré (IDE) de Visual Studio Code (VS Code), offre une solution puissante pour le développement de scripts automatisés.
En effet VS code permet d’intégrer facilement le développement dans un container et donc de développer efficacement des scripts automatisés.
Développer dans un container : comment ça marche ?
Une fois le container implémenté, il ne reste plus qu'à associer l’IDE VS code avec celui-ci pour :
- Développer le code vos scripts automatisés tous en utilisant les extensions de votre framework d’automatisation et sans installation autre que VS Code et Docker sur votre machine.
- Exécuter vos tests : depuis le container via VS Code vous permettant d'analyser les résultats et de corriger rapidement les erreurs.
- Debugger vos scripts pas à pas
- Collaborer plus facilement avec un environnement iso sur les ordinateurs de vos collègues et dans vos pipelines.
Les challenges du développement dans docker
Voici les challenges à relever pour avoir un environnement le plus proche possible d’un environnement traditionnel sur un PC ou un Mac pour un automaticien.
- Être en capacité d’exécuter les tests avec le mode multi navigateurs pour Chrome, Edge et Firefox.
- Permettre à des personnes ne maîtrisant pas Docker de l’utiliser facilement et sans se poser de questions.
- Utiliser un IDE permettant de développer dans un container et pas seulement d’exécuter les tests dans ce container. C’est pour cela que VSCode a été utilisé.
- Créer des images permettant de développer avec des frameworks d’automatisation dans un container de développement avec les dépendances nécessaires.
- Déployer le code des scripts disponible sur l’OS de notre PC dans le container au lancement du container dans un dossier dédié. Ceci a été possible grâce à la configuration d’un volume.
- Partager nativement les rapports générés dans le container sur le PC sans action supplémentaire de telle manière d’avoir les rapports disponibles rapidement même si les containers sont arrêtés. Ceci a été possible grâce à la configuration de d’un volume.
- Avoir la capacité de debugger en affichant le navigateur choisi pendant l’exécution du test. Le code étant généré dans un container linux, le navigateur ne se lance pas sur le PC Windows et il faut donc implémenter dans le container VNC et No VNC pour le permettre.
En configurant vos environnements à l'aide de DevContainers, vous bénéficiez de l'isolation, de la portabilité et de la simplicité de configuration offertes par Docker, tout en profitant des fonctionnalités avancées de développement de VS Code. En adoptant cette approche, vous pouvez accélérer le processus de développement, garantir la cohérence des tests et améliorer la collaboration au sein de l'équipe.
Dans les 2 prochains articles de cette série, les thèmes développés seront !
- 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.