Présentation DevOps réalisée lors de la Journée du test logiciel à Tunis le 5 octobre 2017
La place du test dans un cycle de Continuous testing, Dev Ops
DevOps - Le Test dans le continuous testing - neolians
1. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
DevOps ? Où est le Test !
Continuous Testing
Patrick Albaret
patrick.albaret@neolians.com
2. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
2
Sommaire
DevOps?
Continuous Testing, pilier principal dans l’approche DevOps
Exemples
Question Réponses
3. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
3
DevOps?
Dev Ops
Développent un
produit à partir de
spécifications
Répondent aux
requis non
fonctionnels (perf,
déploiement,
disponibilités, ..)
Dev Ops
DevOps ???
Et le test, où est il?
4. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
4
De DevOps à DevTestOps
Dev Ops
Test logiciel
QA
5. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
5
DevOps en résumé
DevOps est une culture, un mouvement et une stratégie SI
visant principalement à améliorer la communication entre les
équipes afin de réduire le Time to market.
6. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
6
Les 4 axes de DevOps et l’automatisation
Démarche DevOps
Déploiement automatisé
Déploiement continu en production
Intégration
continue
Test acceptation automatisé
Développement Qualification ProductionDéploiement
Market
7. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
7
Process flow (DevTestOps DTO)
Spec
Continuous Integration CI
Continuous Testing CT
Continuous Deployement CDe
ToolchainDTO(inter-connected)
Provisionning
server
Continuous Monitoring CM
Build et CI system
QA management
system
Versionning
system
Deploy system
Reduce time to
market
• Conception & Developement
• UX design
• Code Review
• Code Quality
• Unit test
Business analyst Product owner
CMDB system
Continuous Delivery CD
• Design test cases from requirement
• Automation test cases TNR
• Code Review
• Code Quality
• Test Covrage
• Execution Report by build
• System administration
• Deploy application by stage (Dev,
Recette, Preprod et Prod)
• Pipeline Automation
• Real time feed back system.
• Detect any problem after
deployement
8. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
8
Continuous Testing, pilier principal dans l’approche DevOps
Tester Tôt
Tester Vite
Tester Souvent
Tester Automatisé
9. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
9
Que, Quand tester?
Revue de spécification, de code,…
Test Unitaire
Test fonctionnel
Test d’intégration
Test de performance
Test d’acceptance
Test d’upgrade
…
Test avant commit
Test à chaque build
Test à chaque release
Test Quotidien – nightly test
Test hebdomadaire (Régression, Perf)
Test permanent de surveillance
…
10. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
10
Où tester?
Env IntégrationEnv Dev.
Env Recette
Env ProductionEnv Pre-Prod
11. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
11
Les challenges du continuous testing?
Objectif:
S’assurer en permanence de la qualité des livrables
Challenges
Maturité de l’organisation SI et du test
Planification exécution et automatisation des test dans les différents
environnements (que tester, installation, …)
Les analyses de test
Tester avec efficacité
12. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
12
Développement
Revue spécifications
Conception des TC
Revue code
Dev des scripts auto
Tests unitaire
Intégration continue
1
Déploiement continu en prod
Production
Livraison de produit
Test d’acceptance
Test de monitoring
…
4
Déploiement
Exécution
auto/manuelle
Reporting post-
exécution
Test d’installation/Maj
Test d’intégration
Déploiement automatisé
2
Test & Qualification
Qualification de livrable
Contrôle avant livraison
Test de regession
Test de performance
…
Test d’acceptation auto
3
Exemple d’activités de tests par phase
13. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
13
Exemple de Pipeline Jenkins end-to-end
Continuous delivery
Continuous Testing
14. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
14
Exemple de Pipeline complexe
Daily Continuous testing – Test Regression – déclenchement planifié
Continuous Testing – Sélectif – sur chaque build
Continuous testing – Test Performance – déclenchement événementiel
Intégration
continue (TFS)
Livraison de 30
builds journalières
Sélection
Build
Exécution
test MAT
Exécution
test CAT
Exécution test
Performance
Scan des
différences
de code
Sélection
des tests
concernés
Exécution
des tests
sélectionnés
Stockage des
résultats et
notification
Stockage des
résultats et
notification
Stockage des
résultats et
notification
Continuous Testing – mesure de couverture
Installation
Build
Scan du
code
Exécution
des tests
Mesure de la
couverture de
code
Installation
Build
15. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
15
DevOps en résumé
DevOps est une culture, un mouvement et une stratégie SI
visant principalement à améliorer la communication entre les
équipes afin de réduire le Time to market.
16. neolians, rue du Riyal, Immeuble KPMG, Les Berges du Lac 2 -753 Tunis
Tél: +33 9 70 26 01 98 / +216 71 194 470 / Email: info@neolians.com
Patrick Albaret
patrick.albaret@neolians.com
Notes de l'éditeur
Présentation de 25’ Fin à 1:00
Fin à 2:00
Le DevOps est la contraction des deux mots Anglais « Development » et « Operations », ou traduit respectivement en Français « Développement » et « Exploitation ».
Il s’agit d’un mouvement dont le but est de définir un ensemble de règles et de techniques permettant aux différentes équipes (développement, tests et exploitation) de communiquer efficacement, ainsi que travailler à la fois en coopération et de manière optimale, le tout afin d’améliorer la qualité du produit.
Ce petit schéma situe la place du DevOps parmi les autres entités d’un projet :
les équipes de développement tentent de répondre à des spécifications fonctionnelles en provenance du métier ou du client. Elles travaillent dans leur propre environnement avec leurs outils optimisés pour les développements et ne se soucient pas de l’impact que peut avoir leurs codes lors de la phase d’exploitation qui, généralement, exécute l’application sur un environnement différent.
Les équipes placées du côté de l’exploitation tentent de répondre à des requis non fonctionnels tels que les performances ou la stabilité du système. De ce fait, elles sont plus enclin à minimiser l’impact des modifications afin de conserver ces performances, et cela peut constituer un goulot d’étranglement pour l’ajout de nouvelles fonctionnalités aux applications.
Fin à 3:00
Le but principale de Devops est l’optimisation, la réduction du temps pour livrer.
Donc livrer plus souvent, plus rapidement mais toujours en gardant un niveau d’exigence qualité élevé.
Qui dit niveau d’exigence qualité élevé dit obligatoirement la présence d’un effort de test.
Donc la brique test est importante afin de garantir la qualité à tous les niveaux développement, opération.
ANIMATION
Le focus est que contrairement à des méthodologies Waterfall où le test apparaît à la suite du cycle de développement, à des methodologies Scrum/Agile qui se concentre sur le block Développement, lors d’une approche DevOps, le test apparait tout au long de la chaine de production, sur toutes les phases de livraison
Dans DevOps, les tests ne sont pas à la fin du cycle de release- il est maintenant intégré au cycle principal / début des cycles de développement et sont au centre afin de delivrer un produit de qualité.
In DevOps, testing is not at the end of the release cycle — it is now brought into the mainstream/beginning of development cycles. Developers and system engineers get the code in the right environment for Continuous Integration and Continuous Delivery and those stakeholders enable Continuous Testing and Continuous Monitoring processes in which QA engineers then validates that the team has built the right application, by seeing and testing if it functions and performs as designed.
It is a fundamental role for testing teams to align their test design, test automation, and test case development with DevOps — not only to verify that code changes work but that the changes do not break the product. A key differentiator of DevOps is testing maturity. An organization can automate their integration, testing, delivery, and monitor it, but still have issues with the intelligence of test orchestration and automation, which can lead to a bottleneck if this is not resolved beforehand.
Fin à 4:00
Le but principale de Devops est l’optimisation, la réduction du temps pour livrer.
Donc livrer plus souvent, plus rapidement mais toujours en gardant un niveau d’exigence qualité élevé.
Dev Ops se découpe en plusieurs axes.
Fin à 5:30
Continuous Integration: Gestionnaire de source, compilation, packaging de l’application, test unitaire
Continuous Delivery: Capacité à livrer le produit sur different environnement (test, recette, preprod, demo, performance, ….)
Continuous Testing: Validation du produit sur les différents environnements
Continuous deployment and Monitoring: avant une mise en production déploiement, contrôle du serveur
Une des particularité de devops dans sa version ultime dont on a parlé est la suppression de la notion séquentielle. On essaie de faire l’ensemble des étapes en parallèle.
Du developpement aux operations….
Les développeurs et les ingénieurs Système livre le code dans le bon environnement pour la Continuous Integration et le Continuous Delivery .
Ensuite, ils permettent le lancement du Continuous Testing et du Continuous Monitoring dans lesquels les ingénieurs QA valident alors que l'équipe a construit la bonne application, en voyant et testant si elle fonctionne et fonctionne comme prévu.
Les testeurs ont un rôle fondamental dans les équipes afin d'aligner leur conception de test, l'automatisation des tests et le développement de cas de test avec DevOps, non seulement pour vérifier que les changements de code fonctionnent mais que les modifications ne rompent pas le produit.
Un facteur de différenciation clé de DevOps est la maturité du test. Une organisation peut automatiser l’intégration, la tester, la livrer et la surveiller, tout en ayant des problèmes avec l'intelligence de l'orchestration de test et de l'automatisation,
Fin: 7:00
On va essayer de décrire un exemple de process
A Droite: les environnement
Au centre: les différentes étapes
A Gauche les outils: Config Management DataBase: ex puppet,….
1, on a une idée, un besoin
DTO: Dev Test ops
Deploy system: Ansible, …
Fin 8:30
Les principes du test logiciel appliqué à DevOps
On veut tester en permanence et en continu
Comme tout système de test:
Tester Tôt plus on test tôt, plus il est facile de corriger les défauts, et moins ils reviennent cher et plus on a de chance que les défauts soit corrigé avec un minimum d’impact.
On ne doit pas se limite pas au code livré, on doit pouvoir tester, revoir également les spécifications (cf ISTQB)
Tester tôt, on se doit de tester toute la chaîne. On doit pouvoir aussi appréhender les problème de mise en production, d’upgrade, de sécurité, de performance. Pour cela, monter les tests sur l’ensemble des environnement est important.
Par exemple si on ajoute une fonctionnalité, un nouveau concept, ne pas oublier les script de mise à jour de base pour passer d’une version N à N+1, c’est pareil pour l’installation. Il est ballot de s’apercevoir au moment de la mise en prod qu’il manque un alter table ou que dans la configuration Websphere on a oublié un paramètre car l’ensemble des tests ont été réalisé sur un environnement Apache
Tester Vite: Tester c’est exécuter et également analyser les résultats.
Tester ne se limite au lancement de test, il faut également analyser les résultats en cas de Failure dans les tests. Il faut etre capable de prendre les actions correctives
Avoir des tests Fiable pour minimiser l’analyse
C’est également Tester mieux, optimiser, choisir les technique de test, les zones à tester les plus adequat
Tester Souvent: Vérifier les impacts, être sûr en permanence de la qualité d’un livrable.
Par exemple: un éditeur à des cycles standard de livraison de 9 semaines, et des cycle de dev de 3 semaines. Il a besoin de livrer pour un nouveau client. Cette livraison n’intervient pas en fin de cycle mais en milieu de cycle. Il a besoin de s’assurer que la livraison en milieu de cycle est correct, il a besoin d’être sur de la qualité de son produit.
Tester automatisé c’est la conséquence.
La multiplication des branches, des environnements rend le nombre d’exécution important.
Le test manuel ne peut répondre à l’ensemble de ces sollicitations donc L’automatisation est necessaire.
Le test automatisé ne se limite pas au test automatique, c’est l’ensemble du processus qui doit être automatisé afin de gagner du temps au déclenchement, à la parallélisation des efforts, à la mise en place des pré-requis de test,la publication des résultats, …
Mais Qui teste, où tester et Que tester
durée: 2’30 Fin 9:30
Que tester:
devOps n’apporte pas de nouveauté par rapport au Standard de l’ISTQB. Il implique une plus grande collaboration entre les différents acteurs.
En s’affranchissant de la notion séquentielle, Les acteurs ont plus de lien entre eux. En mettant le focus sur la rapidité de livraison, l’ensemble des acteurs BusinessAnalystes, developpeur, intégrateur, ingenieur IT, ingenieur qualité ont besoin de collaborer sur la notion de qualité général du produit et des processus
Quand tester:
* Une des axiome du continuous testing est tester Souvent. Donc il est necessaire d’optimiser le Quand et le Quoi afin d’obtenir une efficacité optimale
Pour chaque phase, action, on a besoin de définir, en fonction de la maturité des équipes et des process, les types de test, leur fréquence à planifier, exécuter.
Durée 2’30 Fin 12:00
Je voudrais faire un focus particulier sur les environnements ou l’on exécute les tests.
En effet en tant que testeur on se focalise généralement essentiellement sur un seul environnement (recette) sur lequel on va dérouler l’ensemble de nos tests.
Dans une approche DevOps, le but est de livrer le plus rapidement possible. Pour livrer, on passe par différents environnements.
Dans une approche Continuous testing, avec un focus sur l’automatisation, on développe des scripts soit de test ou soit IT. Le coût d’un script est essentiellement dans son développement, son ROI est dans la fréquence d’utilisation.
Donc il est très intéressant, optimal de pouvoir lancer les scripts sur les différents environnements intermédiaire afin de s’assurer de la qualité finale du livrable.
Sur chaque environnement, on va tester différemment et pas forcément les même choses:
en environnement de dev: test unitaires, revue de code, test statique d’analyse de code, compilation, …
En environnement d’integration: la mise à jour de l’environnement, la communication entre les différents modules, les tests minimaux
Recette: tests fonctionnel bout en bout, mise à jour d’un environnement incrémental
Pre-prod: performance, mise à jour d’environnement, ….
Production: surveillance de la disponibilité du service, des performances, test d’acceptation, ….
Durée 1’00 Fin: 13:00
Objectif:
Le cycle de livraison est appelé à se réduire, il faut donc s’assurer sur l’ensemble de la chaîne de la qualité
Un impact est de diminuer les risques business
Challenges:
On est dans processus très automatisé, il faut que l’ensemble des acteurs, métiers communique, et que les processus spécifique à chaque métier s’intègre les uns aux autres, les dépendance sont importantes dans la chaîne d’où une maturité importante
La gestion des différent environnement avec leur contraintes, leur mise à jour, les types d’actions autorisée. Par exemplesur un environnement de Prod afin de vérifier la disponibilité d’un service, le passage de transaction doit être bridé
Les analyses de test: Multiplication des execution => multiplication des analyses. Si il y en a trop, si on ne peut pas analyser certains tests (si trop long, trop instable, …), il n’est plus interessant de les passer car ils nous apportent rien, seulement du bruit, du temps perdu
Le but n’est pas de tester plus mais de tester Mieux. Tester les bonnes choses au bon moment, le but n’est pas de tout tester tout le temps car on va se trouver confronter au pb precedent.Le but n’est pas d’avoir 10 heures de test, car test on les bonnes choses, les fonctionnalité utilisées, le code modifiés,… La notion de couverture de code est un indicateur pour augmenter la couverture et la confiance dans les tests.
Un facteur de différenciation clé de DevOps est la maturité du test. Une organisation peut automatiser l’intégration, la tester, la livrer et la surveiller, tout en ayant des problèmes avec l'intelligence de l'orchestration de test et de l'automatisation,
Fin 14:00
Les 4 différentes phases de mise en production d’un projet
1, Développement
2, Déploiement sur des environnements distinct (Dev, test, Intégration, Recette, preprod,…)
3, Test validation, contrôle sur l’environnement choisi
4, Livraison
Le but est de maximiser l’automatisation afin de réduire les temps d’attente. Par exemple etre capable d’utiliser les 24h d’une journée pour gagner du temps et non être limité au 8h de travail humain par jour
Ici on a des phases standard, mais ou est la spécificité de la méthodologie DevOps.
Fin 17:00
Outil: Config Management DataBase: ex puppet,….
Deploy system: Ansible, …
Fin 20:00
Utilisation de 50 Vms pour tester 6 lignes de produits en permanence (7,10 8,1; 8,2, 8,4, 8,5, 8,6) et différentes branches
Execution des MAT: environ 1heure Installation et execution sur environ 30 Vms en parallèles
Execution des MAT: environ 8heures Installation et execution sur environ 30 Vms en parallèles
Test sélectifs: Utilisation de Coverity Test advisor, et intégration dans le flow: Execution de seulement des tests impacté, par les changement de code
Fin à 4:00
Le but principale de Devops est l’optimisation, la réduction du temps pour livrer.
Donc livrer plus souvent, plus rapidement mais toujours en gardant un niveau d’exigence qualité élevé.
Dev Ops se découpe en plusieurs axes.