kalafoto - stock.adobe.com
Containers : une aubaine pour le testing et la qualité logicielle
L’un des objectifs des containers est de faciliter les processus de développement. Mais les équipes de tests peuvent elles-aussi s’approprier cette technologie pour isoler leurs environnements et multiplier les procédures de testing.
Docker permet aux responsables IT de créer et de gérer des containers pour isoler le code sans trop de surcharge. Les containers offrent des environnements jetables, à la demande, qui démarrent rapidement et qui peuvent être redistribués de manière répétée, à la fois localement et dans le cloud.
Bien que Docker ne soit pas le seul fournisseur de containers, il a quand même contribué à populariser la technologie. Comme pour les machines virtuelles, les containers partagent les ressources informatiques physiques - CPU, mémoire, réseau et stockage - avec plusieurs systèmes invités. Mais contrairement aux VM, les containers reposent sur l’OS hôte, ce qui leur permet de démarrer en quelques secondes.
On crée des images de container pour regrouper tous les éléments nécessaires à l'exécution d'une application sur cet OS partagé (les bibliothèques préinstallées et préconfigurées), sans aucun autre composant. Ceux-ci sont considérés comme inutiles et susceptibles de créer une surcharge sans intérêt. Ils sont suffisamment petits pour pouvoir s’insérer, en tant qu’unité, dans le cycle de delivery du logiciel.
Chaque image Docker comprend une couche lecture-écriture au-dessus des données de l'instance, mais les autres couches sont immuables. Elles ne peuvent donc pas changer une fois créées.
Avec les containers, l'image testée est celle déployée en production. Les containers sont identiques d’une machine à l’autre et se comportent de la même manière dans les environnements de développement, de test et de production.
Voici comment utiliser Docker à des fins de test et faciliter la qualité logicielle.
Des environnements à usage unique pour les tests
Parce que les images de containers sont constantes dans le temps, les instances démarrent et semblent identiques à chaque fois. Leur capacité de démarrage rapide permet à l’équipe en charge du contrôle qualité d'effectuer des tests intrusifs pouvant laisser le container dans un état indéterminé. L'assurance qualité peut alors tuer le container et créer une nouvelle copie pour le prochain test. L’on crée ici des systèmes jetables avec Docker uniquement à des fins de test.
La conception de base de containers Docker repose sur l’automatisation, ce qui signifie que les développeurs peuvent utiliser des commandes simples et des appels API pour démarrer plusieurs containers à partir d’images différentes. Chaque container est capable d’en découvrir d’autres et de fonctionner avec eux si le code l’indique. Par exemple, une seule commande peut démarrer une base de données, un serveur d'applications et un serveur Web pour exécuter un programme donné. Quelques secondes après la requête, l’environnement tout entier peut être opérationnel et prêt à être testé.
Avec cette approche, tous les membres de l'équipe IT, peu importe le pipeline de développement, de test et de déploiement, peuvent exécuter un même environnement, avec la même configuration. Si l'application ou la fonctionnalité fonctionne sur une seule machine, elle fonctionnera sur toutes.
Plus de tests en parallèle
Avec cette fonctionnalité conviviale qui permet de démarrer et stopper des environnements de container, Docker ouvre de nouvelles possibilités de test. Par exemple, on peut prévoir de faire tourner de longues suites de tests en parallèle. Les containers permettent aussi d'effectuer des tests de résistance, d’autres via une simulation des conditions de production et d’autres portant sur la haute disponibilité. Ceux-là peuvent être mis en place beaucoup plus tôt qu'ils ne le sont habituellement dans le cycle de vie d'une version. On peut aussi effectuer des tests de sécurité, qui prennent normalement plusieurs jours, en parallèle à des tests de régression complets, tandis que des testeurs manuels effectuent des tests exploratoires.
Docker donne aussi la possibilité de tester l’outillage avec le même code. Pour cela, il convient d’installer et configurer l'outil en tant qu'image et et de le lancer à la demande. La configuration des outils, telle qu’on la connait, devient une chose du passé.
Avec Docker, l'assurance qualité n'a pas besoin d'apprendre à interagir avec un écosystème étendu. Des commandes simples démarrent l'environnement. Les outils d’orchestration permettent de choisir parmi des bibliothèques d’images prédéfinies; et les outils d’automatisation démarrent et arrêtent les containers en fonction des besoins. Les testeurs peuvent donc se concentrer sur les tests et non plus sur la gestion des outils et de l'environnement.