Les tests continus, pilier du DevOps

Un DevOps efficace nécessite des outils de test adaptés

Mots-clés :
DevOps
Intégration continue
Tests continus
Livraison continue
Résumé : Ce document explique pourquoi les Tests Continus (CT) 2 sont la pierre angulaire qui rend la culture DevOps 1 efficace dans toute organisation.

Nous décrivons ce que c'est, quand l'utiliser et comment le construire tout au long de vos projets ; nous expliquons ensuite comment le concrétiser avec XQual et comment cela fonctionne avec l'Intégration Continue (CI) 3 et permet la Livraison Continue (CD) 4. Il n'y a pas de magie, juste une ingénierie rigoureuse et constante pour la rendre efficace et durable. Mais XQual peut considérablement faciliter le travail de l'outil de boucle CI et faire de la CD une réalité.

N'est-ce pas là l'un des fondements d'une organisation DevOps efficace ?

Sommaire

Introduction

Dans toute industrie pilotée par le logiciel, on entend beaucoup parler d'Intégration Continue (CI) qui, en fait, est un paradigme relativement ancien. Et ces dernières années, la Livraison Continue (CD) semble être devenue le nouvel objectif de la plupart des organisations. Nous partageons ce besoin d'un pipeline plus rationalisé et plus rapide, de l'idée jusqu'à la consommation.

Figure 1 : CI, CT et CD

Chacun peut constater que les Tests Continus (CT) sont rarement mentionnés, comme s'ils étaient une conséquence normale ou une simple composante des deux autres pratiques. Nous pensons au contraire que les CT sont clairement un élément indispensable du tableau ! Tout du moins si votre objectif est de livrer des solutions et des produits de haute qualité et de rendre votre activité durable sur le long terme.

CI et CD

Nous présentons ici les notions de base de l'Intégration Continue et de la Livraison Continue.

La CI vise à accomplir ce qui suit :
  • Détecter chaque fois qu'une partie d'un produit a été modifiée
  • (Re)construire et (ré)assembler un produit à partir de ses composants
  • Installer cet assemblage dans des environnements où il peut être exécuté ou utilisé
  • Surveiller ces étapes et faire remonter les succès/échecs aux bonnes parties prenantes
Elle est souvent mise en ½uvre sous la forme d'une boucle ou d'un graphe qui lance de multiples outils spécialisés, récupère leurs rapports, les analyse et présente les informations de synthèse dans un tableau de bord. Parmi les outils connus figurent Jenkins, Hudson, Bamboo et TeamCity.

La CD vise à accomplir ce qui suit :
  • Détecter chaque fois qu'un produit est prêt
  • Identifier et préparer les environnements cibles
  • Installer (ou livrer) le produit
  • Communiquer avec les bonnes parties prenantes, y compris les utilisateurs
  • Déclencher les processus post-installation (marketing, support, maintenance, supervision)
Dans la plupart des organisations, l'essentiel de cela est intégré dans la boucle de CI.
Beaucoup voient la CI comme le moyen de faire avancer les choses et la CD comme un bénéfice potentiel tiré de la CI. Mais ce n'est pas toute l'histoire.

Depuis le moment où vous modifiez une partie de votre produit jusqu'au moment où vous le mettez en production ou le livrez aux consommateurs, un ensemble de vérifications et de validations doit avoir lieu. Vous devez répondre à certaines questions :
  • Votre produit fonctionne-t-il toujours comme prévu ?
  • Est-il toujours sûr à utiliser ?
  • La nouvelle fonctionnalité apporte-t-elle une réelle valeur aux utilisateurs ?
  • Sommes-nous prêts à le supporter ?
  • Sommes-nous en phase avec nos campagnes marketing ?

Pipeline de livraison

Une autre notion utile, devenue plus répandue, est celle de pipeline de livraison.

Dit simplement, c'est le processus que subit un produit chaque fois qu'il doit être livré à vos utilisateurs et clients. Définir un pipeline de livraison, c'est comme pour tout processus :
  • Définir les étapes
  • Déterminer les conditions permettant de passer d'une étape à l'autre
  • Identifier les tâches de chaque étape
  • Définir les conditions (pré et post) et les résultats attendus de ces tâches
  • Et ainsi de suite
Voici un schéma d'étapes courant, à ne toutefois pas considérer comme une bonne pratique recommandée :
  • Construire et intégrer au sein du système (build & intégration système)
  • Tester les fonctions (tests de qualité produit)
  • Vérifier que l'utilisation est sûre et sécurisée (vérification sécurité/sûreté)
  • Tester l'intégration avec les environnements environnants (tests de bout en bout)
  • S'assurer que les utilisateurs en retirent une réelle valeur (tests de recette utilisateur)
  • Si nécessaire, vérifier qu'il est robuste, scalable...
typical release pipeline
Figure 2 : Un pipeline de livraison type

Notez que le pipeline de livraison n'impose pas l'ensemble des environnements de test. Les tests d'intégration système et fonctionnels produit peuvent être réalisés sur un environnement de QA, tandis que les tests de sécurité/sûreté, de bout en bout et de recette utilisateur peuvent être réalisés sur un environnement de staging, et les tests de type '-ités' seraient réalisés sur un environnement de pré-production.

mapping release stages to environments
Figure 3 : Correspondance entre les étapes de livraison et les environnements

Tout dépend de l'ensemble des conformités que vous devez atteindre (IEC 62304 & ISO 14971, FDA Title 21 CFR Part 11, ISO 14971, et IEC 60601, ISO 26262, DO-178C & DO-254), de vos propres contraintes organisationnelles, et de vos moyens financiers.

Et les CT dans tout ça ?

Un pipeline de livraison réalise donc 4 types de tâches :
  • Mettre en place et nettoyer les environnements si nécessaire
  • Installer les produits
  • Vérifier et valider
  • Prendre des décisions ou aider à les prendre entre les étapes
Dans l'industrie pilotée par le logiciel, l'ensemble de tâches le plus chronophage est (enfin... 'devrait être') la Vérification et la Validation.

À chaque étape, vous devez effectuer des tests spécifiques pour vous assurer que votre produit, nouveau ou modifié, répond bien à ses attributs de qualité et aux valeurs attendues.

Chaque fois que vous souhaitez livrer une nouvelle version du produit, vous devez vous assurer qu'elle améliore, ou du moins maintient, le même niveau de qualité et de sécurité perçues que la version précédente, tout en apportant de nouvelles fonctionnalités ou en améliorant les existantes.

Voici ce que les Tests Continus apportent :
  • Tester et mesurer les niveaux de qualité sans relâche
  • Le faire aussi rapidement et facilement que possible
  • Fournir aux décideurs les bonnes informations pour piloter le pipeline de livraison
  • Automatiser la décision chaque fois que possible
Si l'on prend l'exemple de l'étape de Tests Fonctionnels, on pourrait observer les étapes suivantes.

functional testing stages
Figure 4 : Étapes des tests fonctionnels

Notez que la mise en place de l'environnement et le nettoyage peuvent être extrêmement chronophages et coûteux selon le type de produit concerné (un simple logiciel n'est pas aussi complexe qu'une automobile, par exemple...).

Mais l'enjeu est de réduire la durée de chacune de ces étapes. Cela permet de les franchir plus souvent. Le mot d'ordre et la pratique clé ici sont donc l'automatisation.

Chaque étape est un test

Toute étape (y compris la mise en place d'un environnement), lorsqu'elle ne nécessite pas trop d'interventions manuelles, devrait être automatisée et son résultat vérifié comme pour tout test.

Par exemple, si vous vous appuyez sur des machines virtuelles (VM), vous pouvez utiliser Vagrant pour les démarrer, puis effectuer quelques vérifications pour vous assurer qu'elles sont bien opérationnelles. Lors de l'installation du produit, vous pouvez utiliser ANSIBLE pour le déployer et le configurer, puis vérifier certains fichiers. Vous pouvez ensuite lancer des tests de fumée de base à l'aide de Robot Framework ou SOAPUI pour les API, et ainsi de suite.
Vous devez utiliser plusieurs outils et frameworks de test automatisé au sein d'une seule et même étape de votre pipeline de livraison.
C'est là qu'intervient XQual.

La capacité de XQual à lancer tout type de tests et à interpréter et récupérer les résultats facilite considérablement la gestion d'un pipeline de livraison.

Vous concevez vos campagnes pour chaque étape. Une fois exécutée, chaque session de test fournit les résultats des tests. Ceux-ci servent à décider de la marche à suivre pour l'étape suivante.

Vous utilisez un outil de CI tiers pour orchestrer les différentes campagnes.

Le XContinuousIntegration de XQual est utilisé par ces outils de CI pour lancer les différentes campagnes et en récupérer les rapports et les résultats de test.

xcontinuous integration integration
Figure 5 : Intégration de XContinuousIntegration

XContinuousIntegration fournit tous les rapports détaillés et ajoute un fichier de synthèse au format JUNIT que les différents outils de CI peuvent analyser. C'est l'outil de CI qui reste seul décisionnaire de la gestion de la boucle (par exemple, pour savoir si l'étape suivante peut démarrer ou si l'étape en cours doit être arrêtée).
Ce modèle permet de découpler l'implémentation de vos étapes de la boucle de CI principale. Les résultats détaillés sont gérés dans la base de données de XQual. Tous les résultats sont consolidés grâce aux KPI intelligents de XQual
Quel que soit l'outil de gestion de tests que vous utilisez, l'automatisation est un facteur clé si vous voulez tenir un cycle de livraison plus rapide.

XQual prend en charge près de 90 frameworks de test automatisé et vous pouvez en ajouter un nouveau en quelques heures seulement. Mais rien ne se passera si vous n'investissez pas dans l'automatisation des tests.

the test pyramid
Figure 6 : La pyramide de tests

Compte tenu du large éventail d'outils parmi lesquels choisir pour construire votre pyramide de tests, bénéficier d'une plateforme d'orchestration de tests centralisée et polyvalente comme XQual est indispensable pour réussir.
Conclusion :
LORSQU'IL S'AGIT DE TRANSFORMER UNE ORGANISATION PILOTÉE PAR LE LOGICIEL VERS LE DEVOPS, IL FAUT VEILLER À CONSTRUIRE LES BONNES PRATIQUES ET LA BONNE CULTURE. MAIS TRANSFORMATION N'EST PAS RÉVOLUTION. LES ACTIVITÉS DE TEST SONT AU C¼UR DE LA LIVRAISON CONTINUE. VOUS NE POUVEZ PAS CRÉER, CONSTRUIRE ET LIVRER PLUS VITE, SI VOUS NE TESTEZ PAS PLUS VITE. L'AUTOMATISATION EST ESSENTIELLE, TOUT COMME L'INTÉGRATION DES ACTIVITÉS DE TEST DANS LE FLUX DE LIVRAISON. VOUS DEVEZ VOUS APPUYER SUR LES PRATIQUES ET OUTILS DE TEST QUI SIMPLIFIENT LA TRANSFORMATION. XQUAL EST UN ACTEUR CLÉ POUR CELA.

Références :
1 DevOps : https://en.wikipedia.org/wiki/DevOps
2 Tests Continus (CT) : https://en.wikipedia.org/wiki/Continuous_testing
3 Intégration Continue (CI) : https://en.wikipedia.org/wiki/Continuous_integration
4 Livraison Continue (CD) : https://en.wikipedia.org/wiki/Continuous_delivery
5 Agile : https://agilemanifesto.org/


Try XQual for Free for 30 Days!

No credit card, No install, No Ads and No SPAM.