Industrialisa+on	
  des	
  	
  
développements	
  Java

                Chris+an	
  Blavier	
  
               Benoît	
  Lafontaine	
  

                  Le	
  17/03/2010	
  
OCTO,	
  en	
  quelques	
  mots	
  
                                                                 NOTRE	
  MISSION	
  
                                                                        Aider	
  nos	
  clients	
  à	
  maitriser	
  la	
  complexité	
  
                                                                         de	
  leur	
  SI	
  pour	
  en	
  +rer	
  le	
  maximum	
  de	
  
                                                                         valeur	
  	
  	
  

      Conseil	
  en	
  Architecture	
  et	
  
       Management	
  des	
  SI	
                                 NOS	
  VALEURS	
  FONDATRICES	
  
      Un	
  cabinet	
  à	
  taille	
  humaine	
  :	
  130	
            L’indépendance	
  vis-­‐à-­‐vis	
  des	
  intégrateurs	
  et	
  
       consultants	
  fin	
  2009	
                                           des	
  éditeurs	
  	
  
                                                                        L’expérience	
  réelle	
  et	
  pragmaCque	
  des	
  SI	
  
      12	
  ans	
                                                       stratégiques	
  et	
  des	
  grands	
  projets	
  

      15,4	
  M€	
  de	
  CA	
  (2009)	
  	
  
                                                                 NOTRE	
  CULTURE	
  
      Un	
  posi+onnement	
  Grands	
  
       Comptes	
                                                        La	
  mul+-­‐valence	
  :	
  mé+er,	
  technique	
  et	
  
                                                                         communica+on	
  
      Deux	
  ouvertures	
  à	
  l’interna+onal	
  
       (Maroc,	
  Suisse)	
                                             L’échange	
  :	
  25	
  %	
  du	
  temps	
  réservé	
  à	
  la	
  
                                                                         capitalisa+on	
  des	
  connaissances	
  et	
  des	
  
                                                                         expériences	
  
©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                                                                  2	
  
L’industrialisa+on	
  c’est	
  quoi	
  ?	
  

                                                              IntégraCon	
  
                                                               conCnue	
  


                                                          Tests	
  automaCsés	
  


     Il	
  ne	
  s’agit	
  pas	
  
uniquement	
  des	
  ou+ls	
  de	
  
                                                            Mesure	
  de	
  la	
  
    développement	
  !	
                                      qualité	
  


©	
  OCTO	
  2010	
  	
                                                              3	
  
Ne	
  pas	
  se	
  tromper	
  d’époque	
  
 Une	
  approche	
  où	
  les	
  hommes	
  sont	
  au	
  centre	
  de	
  la	
  démarche	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                  4	
  
Pourquoi	
  faire	
  de	
  l’intégra+on	
  con+nue	
  ?	
  


         Plus	
  un	
  défaut	
  est	
  détecté	
  tard…	
  	
  
           	
  	
  	
  	
   	
  	
  	
  	
  	
  …plus	
  il	
  coûte	
  cher	
  à	
  corriger.	
  

         €



                                                                                                     

©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                             5	
  
Vous	
  ne	
  voulez	
  plus	
  travailler	
  
sans	
  filet	
  de	
  sécurité	
  ?	
  Faites	
  
  de	
  l’intégraCon	
  conCnue	
  




                                                    6	
  
L’intégra+on	
  con+nue	
  en	
  images	
  
                                                                                               Récupérer	
  	
  
                                                                                               les	
  dépendances	
  

                             GesConnaire	
  	
                                     Build	
     Compiler	
  
                              de	
  sources	
  
                                                            Serveur	
                                                                 RéférenCel	
  
    Build	
                                              d’intégraCon       	
                 Exécuter	
  les	
  tests	
              binaires	
  
    Local	
                                                conCnue     	
  

                                                                                               Vérifier	
  la	
  qualité	
  	
  
                                                                                               du	
  	
  code	
  

                                                                                               Packager	
  
                                                 NoCficaCons	
  

                                                                                               Déployer	
  

                                                                                                                                     Plateforme	
  
                                                                                               Documenter	
                            de	
  tests	
  

                                                                                                 Build

                                                                                                                                  DocumentaCon	
  
©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                                                       &	
  Indicateurs	
  
                                                                                                                                                          7	
  
L’intégra+on	
  con+nue	
  en	
  images	
  
                         CVS	
  
                          SVN	
                                                                Récupérer	
  	
  
                                                                                               les	
  dépendances	
  
                           GIT	
                       Hudson	
                                                                      Nexus	
  
                             GesConnaire	
  	
                                     Build	
     Compiler	
  
                              de	
  sources	
  
                                                            Serveur	
                                                                 RéférenCel	
  
    Build	
                                              d’intégraCon       	
                 Exécuter	
  les	
  tests	
              binaires	
  
    Local	
                                                conCnue     	
  

                                                                                               Vérifier	
  la	
  qualité	
  	
  
                                                                                               du	
  	
  code	
  

                                                                                               Packager	
  
                                                 NoCficaCons	
  

                                                                                               Déployer	
  

                                                                                                                                     Plateforme	
  
                                                                                               Documenter	
                            de	
  tests	
  

                                                                                                 Build

                                                                                                                                  DocumentaCon	
  
©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                                                       &	
  Indicateurs	
  
                                                                                                                                                          8	
  
Les	
  défis	
  de	
  l’intégra+on	
  con+nue	
  


                            Défi	
  #1	
  :	
  la	
  performance	
  



              Défi	
  #2	
  :	
  éviter	
  l’instabilité	
  du	
  build	
  



©	
  OCTO	
  2010	
  	
                                                      9	
  
Problèmes de performance
:-­‐(	
  


                                                                        Build	
  



                                                                        Build	
  
:-­‐(	
  




                        GesConnaire	
  	
                               Build	
  
                         de	
  sources	
  
                                                 Serveur	
  
      Build	
                                 d’intégraCon       	
  
      Local	
                                   conCnue     	
  
                                                                        Build	
  
:-­‐(	
  




                                                                        Build	
  



                                                                        Build	
  
                  ...                                                               ...
Build profilé
                                                                                                                    Toutes	
  les...	
  


                                                                                                                       10	
  min	
  

                                                                   Build	
  rapide	
  :	
  tests	
  unitaires	
  

                                                                                                                        nuits	
  

                                                                   Build	
  documentaCon	
  

                                                                                                                          4	
  h	
  
                  GesConnaire	
  	
                                Build	
  tests	
  intégraCon	
  
                   de	
  sources	
  
                                           Serveur	
  
Build	
                                 d’intégraCon       	
                                                           nuits	
  
Local	
                                   conCnue     	
  
                                                                   Build	
  qualimétrie	
  
                                                                                                                       A	
  la	
  	
  
                                                                                                                     demande	
  
                                                                   Build	
  complet	
  

                                                                                                                       A	
  la	
  	
  
                                                                                                                     demande	
  
                                                                   Build	
  packaging	
  
            ...                                                                              ...
Build distribué
                                                                                                                                     	
  

                                                                                   Build	
  documentaCon	
  
                                                                                                                                    240	
  


                                                                                   Build	
  tests	
  intégraCon	
  

                                                                                                                                    10	
  


                         GesConnaire	
  	
  
                                                                                   Build	
  rapide	
  :	
  tests	
  unitaires	
  
                          de	
  sources	
  
                                                     Serveur	
  
Build	
                                           d’intégraCon        	
                                                             	
  
Local	
                                             ConCnue      	
  

                                                                                   Build	
  qualimétrie	
  
                                                                                                                                    	
  

                                                                                   Build	
  complet	
  
                                                                                                                                    	
  

 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                      Build	
  packaging	
  
Build distribué
                                                                                                                                               	
  

                                                                                             Build	
  documentaCon	
  
                                                                                                                                              240	
  


                                                                             Agent	
  	
     Build	
  tests	
  intégraCon	
  

                                                                                                                                              10	
  


                         GesConnaire	
  	
  
                                                                                             Build	
  rapide	
  :	
  tests	
  unitaires	
  
                          de	
  sources	
  
                                                     Serveur	
  
Build	
                                           d’intégraCon        	
                                                                       	
  
Local	
                                             ConCnue      	
  
                                                   (maître)	
  
                                                                                             Build	
  qualimétrie	
  
                                                                                                                                              	
  

                                                                                             Build	
  complet	
  
                                                                                                                                              	
  
                                                                             Agent	
  
 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                Build	
  packaging	
  
Applications multi-tout : le défi ?


Tester sur des environnements différents




                                                  Pro




 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
           14	
  
Build distribué & plateformes

                                                                                         Build	
  tests	
  interface	
  IE	
  6	
  


                                                                             Agent	
  
                                                                                  	
  
                                                                                          Build	
  tests	
  interface	
  FF	
  


                                                                                                              Build	
  tests	
  interface	
  

                                                                                         Build	
  tests	
  interface	
  IE	
  7	
  
                          GesConnaire	
  	
  
                           de	
  sources	
  
                                                     Serveur	
               Agent	
  
                                                                                  	
  
Build	
                                           d’intégraCon        	
  
Local	
                                             ConCnue      	
                      Build	
  tests	
  interface	
  Chrome	
  
                                                     (maître)	
  




                                                                                         Build	
  complet	
  
                                                                             Agent
                                                                                 	
  
 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
  
Les	
  défis	
  de	
  l’intégra+on	
  con+nue	
  


                            Défi	
  #1	
  :	
  la	
  performance	
  



              Défi	
  #2	
  :	
  éviter	
  l’instabilité	
  du	
  build	
  



©	
  OCTO	
  2010	
  	
                                                      16	
  
Instaurer	
  une	
  culture	
  du	
  build	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                             17	
  
Instabilité du build : le problème



                                                                                                    Récupérer	
  	
  
                                                                                                    les	
  dépendances	
  

                                                  GesConnaire	
  	
                                 Compiler	
  
                                                   de	
  sources	
         Serveur	
  
                                                                        d’intégraCon        	
     Exécuter	
  les	
  tests	
  
                                                                          ConCnue      	
  

                                                                                                      Build	
  
Développeurs	
  




 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
  
                                                                                                                                  18	
  
Instabilité du build : le défi ?

•  Conserver un référentiel de sources « propre »

•  Empêcher un développeur de bloquer les autres

•  Favoriser l’utilisation décomplexée du référentiel de sources
                                                    GesConnaire	
     	
  
                                                     de	
  sources
                                                                 	
  




   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                              19	
  
Une solution : le build
                                incassable



                                                                         Récupérer	
  	
  
                                                                         les	
  dépendances	
  

                   GesConnaire	
      	
                                 Compiler	
  
                    de	
  sources	
             Serveur	
  
                     protégé   	
            d’intégraCon        	
  
                                               ConCnue      	
          Exécuter	
  les	
  tests	
  

                                                                           Build	
  
Développeurs	
  




                                                                                                   20	
  
Outils d’intégration continue
•  Serveur	
  d’IntégraCon	
  
      –      Hudson	
  
      –      TeamCity	
  	
  €	
  
      –      Bamboo	
  €	
  
      –      Pulse	
  €	
  
      –      CruiseControl	
  
      –      Apache	
  Con+nuum	
  
      –      QuickBuild	
  €	
  
      –      Team	
  Funda+on	
  Server	
  €	
  
      –      LuntBuild	
  




  ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
        21	
  
Savoir	
  si	
  son	
  code	
  compile,	
  
c’est	
  bien	
  …	
  mais	
  savoir	
  s’il	
  
  foncConne	
  c’est	
  mieux	
  !	
  




   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
     22	
  
Test	
  Driven	
  Development	
  

                                                              Ecrire	
  
                                                             test	
  en	
  
                                                              échec	
  


                                                                               Faire	
  
                                           Remanier	
  
                                            le	
  code	
  
                                                                              passer	
  
                                                                              le	
  test	
  



©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                   23	
  
«	
  Outside-­‐in	
  »	
  development	
  
                                    Tests	
  unitaires	
  :	
  cycle	
  TDD	
  répété	
  plusieurs	
  
                                             fois	
  pour	
  chaque	
  foncConnalité	
  

                                                                        Ecrire	
  
                                                                       test	
  en	
  
  Ecrire	
                                                              échec	
                            Faire	
  
 test	
  de	
                                                                                            passer	
  le	
  
 receoe	
                                                                                Faire	
  
                                                                                                         tests	
  de	
  
                                                     Remanier	
  
en	
  échec	
                                         le	
  code	
  
                                                                                        passer	
          receoe	
  
                                                                                        le	
  test	
  




             Nouveau	
  cycle	
  répété	
  à	
  chaque	
  nouvelle	
  foncConnalité	
  
   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                                    24	
  
Pourquoi	
  des	
  tests	
  de	
  receoe	
  automa+sés	
  ?	
  




      Conserver	
  la	
                         Communiquer	
                             Préserver	
  la	
                     Gagner	
  du	
  
      connaissance	
                            sans	
  ambiguïté	
                         qualité	
                           temps	
  
•  Capitaliser	
  à	
  un	
  endroit	
      •  Spécifier	
  de	
  façon	
  
   unique	
  sur	
  ce	
  que	
  fait	
        univoque	
  par	
  les	
  tests	
     •  Construire	
  un	
  harnais	
  de	
     •  Eviter	
  les	
  erreurs	
  
   effecCvement	
  le	
  logiciel	
                                                      tests	
                                    manuelles	
  
                                            •  Minimiser	
  les	
  problèmes	
  
                                                                                     •  Détecter	
  les	
  régressions	
        •  Rejouer	
  fréquemment	
  
•  Rendre	
  «	
  exécutables	
  »	
           de	
  coordinaCon	
  en	
  
                                                                                        au	
  plus	
  tôt	
                        l’intégralité	
  des	
  tests	
  
   les	
  spécificaCons	
                       receoe	
  


                                            Tests	
  de	
  recehe	
  automaCsés	
  


   ©	
  OCTO	
  2010	
  	
                                                                                                                                         25	
  
Plusieurs	
  approches	
  de	
  TDR	
  


                                       Tests	
  d’IHM	
  


                              SpécificaCons	
  exécutables	
  


                            Behavior	
  Driven	
  Development	
  

©	
  OCTO	
  2010	
  	
                                                 26	
  
Tests	
  d’IHM	
  

                                            Certains	
  ou+ls	
  disposent	
  d’un	
  mode	
  
                                           d’émula+on	
  du	
  navigateur,	
  plus	
  rapide	
  



                            Selenium	
  



     WaCr	
  




©	
  OCTO	
  2010	
  	
                                                                            27	
  
Le	
  pour,	
  le	
  contre	
  …	
  

                  Avantages                                       Inconvénients

Quasi-exhaustifs                                            Enregistrés / écrits par des
                                                            développeurs
Rassurants pour le métier
                                                            Temps d’exécution

                                                            Quasi exhaustifs ;-)




   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                            28	
  
Plusieurs	
  approches	
  de	
  TDR	
  


                                       Tests	
  d’IHM	
  


                              SpécificaCons	
  exécutables	
  


                            Behavior	
  Driven	
  Development	
  

©	
  OCTO	
  2010	
  	
                                                 29	
  
Dites	
  le	
  avec	
  un	
  tableau	
  !	
  
Règle de gestion : création de compte
Lors de la création de compte, un utilisateur doit obligatoirement
choisir un mot de passe contenant des lettres et des chiffres


  Utilisateur! !Mot de passe! !Message

  jdoe ! ! ! !elephant ! ! !
                     !                                                          Echec !

  dgray ! !
      !                                              toto           ! ! ! !Echec !

  dcooper! !                                         d1ane4ever! ! !            Succès !! !

          . . . ! ! ! ! !. . . ! ! ! ! !. . . !
  ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                     30	
  
Par	
  exemple	
  :	
  GreenPepper	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                  31	
  
Par	
  exemple	
  :	
  GreenPepper	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                  32	
  
Spécifica+ons	
  exécutables	
  




                                                Code	
  de	
     Système	
  
                                                 liaison	
         testé	
  
Pages	
  de	
  tests	
  
    wiki	
                                     (fixtures)	
  


   ©	
  OCTO	
  2010	
  	
                                                     33	
  
Le	
  pour,	
  le	
  contre	
  …	
  

                  Avantages                                       Inconvénients

Expressivité : les tests                                    Par défaut ne permet pas
peuvent être formulés par                                   de tester une IHM
des utilisateurs
                                                            Pourrait être encore plus
On peut fusionner tests et                                  expressif
documentation




   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                            34	
  
Plusieurs	
  approches	
  de	
  TDR	
  


                                       Tests	
  d’IHM	
  


                              SpécificaCons	
  exécutables	
  


                            Behavior	
  Driven	
  Development	
  

©	
  OCTO	
  2010	
  	
                                                 35	
  
Et	
  si	
  on	
  racontait	
  une	
  histoire	
  ?	
  

BDD	
  (Behavior	
  Driven	
  Development),	
  une	
  manière	
  de	
  
                    formaliser	
  ses	
  histoires	
  :	
  



                             Etant donnée … [ un contexte ]

                             Quand … [ un événement ]

                             Alors… [ un état attendu ]

 ©	
  OCTO	
  2010	
  	
                                                     36	
  
BDD	
  avec	
  Cucumber	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                   37	
  
BDD,	
  a	
  new	
  genera+on	
  




Evolution syntaxique de TDD                                    Tests d’acceptance
Orienté développeur                                            Prise en compte du reste de l'équipe
Tout est dans le code                                          Extraction des scénarios



   ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                38	
  
Le	
  pour,	
  le	
  contre	
  …	
  

                  Avantages                  Inconvénients

Extrêmement expressif                  Pas d’outils collaboratifs

S’intègre très naturellement           L’intégration de cucumber
avec un outil de test d’IHM            avec le monde Java est peu
                                       documentée
L’avenir du test
d’acceptance automatisé



   ©	
  OCTO	
  2010	
  	
                                            39	
  
On	
  n’améliore	
  que	
  ce	
  
  que	
  l’on	
  mesure	
  




  ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                 40	
  
                                                   http://www.flickr.com/photos/55145236@N00/146617178/
Quels	
  indicateurs	
  ?	
  
•  Indicateur	
  de	
  «	
  le	
  code	
  compile	
  »	
  :	
  le	
  Build	
  
        –  Eviter	
  le	
  «	
  ça	
  compile	
  sur	
  mon	
  poste	
  »	
  
        –  Ou+ls	
  :	
  Hudson	
  +	
  Maven	
  


•  Indicateurs	
  de	
  bonne	
  santé	
  :	
  tests	
  automa+sés	
  
        –  Ou+ls	
  :	
  XUnit,	
  Surefire,	
  JCoverage	
  /	
  Cobertura	
  …	
  


•  Indicateurs	
  de	
  la	
  qualité	
  du	
  code	
  :	
  analyse	
  sta+que	
  
        –  Ou+ls	
  :	
  PMD,	
  CheckStyle,	
  Findbugs	
  
        –  Aggrégateur	
  :	
  Sonar	
  

  ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                        41	
  
Jusqu’ici	
  tout	
  va	
  bien	
  
 ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
     42	
  
Mesurer	
  les	
  tendances	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                       43	
  
Mesurer	
  les	
  tendances	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                       44	
  
Les	
  indicateurs	
  subjec+fs	
  




                                                                              http://www.infoq.com/news/2007/08/agile-kanban-boards
©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                                                          45	
  
Mesurer	
  la	
  produc+vité	
  ?	
  


                         	
  Débit	
  de	
  foncConnalités	
  	
  

Le	
  nombre	
  de	
  fonc+onnalités,	
  pondérées	
  par	
  la	
  valeur	
  
mé+er,	
  ajoutées	
  au	
  logiciel	
  pendant	
  un	
  laps	
  de	
  temps	
  
        donné	
  et	
  répondant	
  aux	
  exigences	
  qualités	
  



©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                             46	
  
Récapitulons	
  

•  Repousser	
  les	
  limites	
  de	
  l’intégra+on	
  con+nue	
  
        –  Profiler	
  et	
  distribuer	
  les	
  builds	
  
        –  Meore	
  en	
  place	
  une	
  poli+que	
  de	
  build	
  incassable	
  


•  Automa+sez	
  vos	
  tests	
  de	
  receoe	
  
        –  En	
  suivant	
  des	
  cycles	
  de	
  développement	
  «	
  outside-­‐in	
  »	
  
        –  En	
  impliquant	
  votre	
  MOA,	
  grâce	
  à	
  des	
  ou+ls	
  conviviaux	
  


•  Mesurer	
  pour	
  s’améliorer	
  
        –  Privilégier	
  un	
  ensemble	
  d’indicateurs,	
  objec+fs	
  et	
  subjec+fs	
  
        –  Mesurer	
  la	
  produc+vité	
  


  ©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                                   47	
  
Université	
  du	
  SI	
  2010	
  
                   Le	
  rendez-­‐vous	
  des	
  geeks	
  et	
  des	
  boss	
  




©	
  OCTO	
  Technology	
  -­‐	
  	
  2010	
                                          48	
  

Industrialisation des développements Java

  • 1.
    Industrialisa+on  des     développements  Java Chris+an  Blavier   Benoît  Lafontaine   Le  17/03/2010  
  • 2.
    OCTO,  en  quelques  mots   NOTRE  MISSION     Aider  nos  clients  à  maitriser  la  complexité   de  leur  SI  pour  en  +rer  le  maximum  de   valeur         Conseil  en  Architecture  et   Management  des  SI   NOS  VALEURS  FONDATRICES     Un  cabinet  à  taille  humaine  :  130     L’indépendance  vis-­‐à-­‐vis  des  intégrateurs  et   consultants  fin  2009   des  éditeurs       L’expérience  réelle  et  pragmaCque  des  SI     12  ans   stratégiques  et  des  grands  projets     15,4  M€  de  CA  (2009)     NOTRE  CULTURE     Un  posi+onnement  Grands   Comptes     La  mul+-­‐valence  :  mé+er,  technique  et   communica+on     Deux  ouvertures  à  l’interna+onal   (Maroc,  Suisse)     L’échange  :  25  %  du  temps  réservé  à  la   capitalisa+on  des  connaissances  et  des   expériences   ©  OCTO  Technology  -­‐    2010   2  
  • 3.
    L’industrialisa+on  c’est  quoi  ?   IntégraCon   conCnue   Tests  automaCsés   Il  ne  s’agit  pas   uniquement  des  ou+ls  de   Mesure  de  la   développement  !   qualité   ©  OCTO  2010     3  
  • 4.
    Ne  pas  se  tromper  d’époque   Une  approche  où  les  hommes  sont  au  centre  de  la  démarche   ©  OCTO  Technology  -­‐    2010   4  
  • 5.
    Pourquoi  faire  de  l’intégra+on  con+nue  ?   Plus  un  défaut  est  détecté  tard…                      …plus  il  coûte  cher  à  corriger.   €  ©  OCTO  Technology  -­‐    2010   5  
  • 6.
    Vous  ne  voulez  plus  travailler   sans  filet  de  sécurité  ?  Faites   de  l’intégraCon  conCnue   6  
  • 7.
    L’intégra+on  con+nue  en  images   Récupérer     les  dépendances   GesConnaire     Build   Compiler   de  sources   Serveur   RéférenCel   Build   d’intégraCon   Exécuter  les  tests   binaires   Local   conCnue   Vérifier  la  qualité     du    code   Packager   NoCficaCons   Déployer   Plateforme   Documenter   de  tests   Build DocumentaCon   ©  OCTO  Technology  -­‐    2010   &  Indicateurs   7  
  • 8.
    L’intégra+on  con+nue  en  images   CVS   SVN   Récupérer     les  dépendances   GIT   Hudson   Nexus   GesConnaire     Build   Compiler   de  sources   Serveur   RéférenCel   Build   d’intégraCon   Exécuter  les  tests   binaires   Local   conCnue   Vérifier  la  qualité     du    code   Packager   NoCficaCons   Déployer   Plateforme   Documenter   de  tests   Build DocumentaCon   ©  OCTO  Technology  -­‐    2010   &  Indicateurs   8  
  • 9.
    Les  défis  de  l’intégra+on  con+nue   Défi  #1  :  la  performance   Défi  #2  :  éviter  l’instabilité  du  build   ©  OCTO  2010     9  
  • 10.
    Problèmes de performance :-­‐(   Build   Build   :-­‐(   GesConnaire     Build   de  sources   Serveur   Build   d’intégraCon   Local   conCnue   Build   :-­‐(   Build   Build   ... ...
  • 11.
    Build profilé Toutes  les...   10  min   Build  rapide  :  tests  unitaires   nuits   Build  documentaCon   4  h   GesConnaire     Build  tests  intégraCon   de  sources   Serveur   Build   d’intégraCon   nuits   Local   conCnue   Build  qualimétrie   A  la     demande   Build  complet   A  la     demande   Build  packaging   ... ...
  • 12.
    Build distribué    Build  documentaCon   240   Build  tests  intégraCon   10   GesConnaire     Build  rapide  :  tests  unitaires   de  sources   Serveur   Build   d’intégraCon      Local   ConCnue   Build  qualimétrie      Build  complet      ©  OCTO  Technology  -­‐    2010   Build  packaging  
  • 13.
    Build distribué    Build  documentaCon   240   Agent     Build  tests  intégraCon   10   GesConnaire     Build  rapide  :  tests  unitaires   de  sources   Serveur   Build   d’intégraCon      Local   ConCnue   (maître)   Build  qualimétrie      Build  complet      Agent   ©  OCTO  Technology  -­‐    2010   Build  packaging  
  • 14.
    Applications multi-tout :le défi ? Tester sur des environnements différents Pro ©  OCTO  Technology  -­‐    2010   14  
  • 15.
    Build distribué &plateformes Build  tests  interface  IE  6   Agent     Build  tests  interface  FF   Build  tests  interface   Build  tests  interface  IE  7   GesConnaire     de  sources   Serveur   Agent     Build   d’intégraCon   Local   ConCnue   Build  tests  interface  Chrome   (maître)   Build  complet   Agent   ©  OCTO  Technology  -­‐    2010  
  • 16.
    Les  défis  de  l’intégra+on  con+nue   Défi  #1  :  la  performance   Défi  #2  :  éviter  l’instabilité  du  build   ©  OCTO  2010     16  
  • 17.
    Instaurer  une  culture  du  build   ©  OCTO  Technology  -­‐    2010   17  
  • 18.
    Instabilité du build: le problème Récupérer     les  dépendances   GesConnaire     Compiler   de  sources   Serveur   d’intégraCon   Exécuter  les  tests   ConCnue   Build   Développeurs   ©  OCTO  Technology  -­‐    2010   18  
  • 19.
    Instabilité du build: le défi ? •  Conserver un référentiel de sources « propre » •  Empêcher un développeur de bloquer les autres •  Favoriser l’utilisation décomplexée du référentiel de sources GesConnaire     de  sources   ©  OCTO  Technology  -­‐    2010   19  
  • 20.
    Une solution :le build incassable Récupérer     les  dépendances   GesConnaire     Compiler   de  sources   Serveur   protégé   d’intégraCon   ConCnue   Exécuter  les  tests   Build   Développeurs   20  
  • 21.
    Outils d’intégration continue • Serveur  d’IntégraCon   –  Hudson   –  TeamCity    €   –  Bamboo  €   –  Pulse  €   –  CruiseControl   –  Apache  Con+nuum   –  QuickBuild  €   –  Team  Funda+on  Server  €   –  LuntBuild   ©  OCTO  Technology  -­‐    2010   21  
  • 22.
    Savoir  si  son  code  compile,   c’est  bien  …  mais  savoir  s’il   foncConne  c’est  mieux  !   ©  OCTO  Technology  -­‐    2010   22  
  • 23.
    Test  Driven  Development   Ecrire   test  en   échec   Faire   Remanier   le  code   passer   le  test   ©  OCTO  Technology  -­‐    2010   23  
  • 24.
    «  Outside-­‐in  »  development   Tests  unitaires  :  cycle  TDD  répété  plusieurs   fois  pour  chaque  foncConnalité   Ecrire   test  en   Ecrire   échec   Faire   test  de   passer  le   receoe   Faire   tests  de   Remanier   en  échec   le  code   passer   receoe   le  test   Nouveau  cycle  répété  à  chaque  nouvelle  foncConnalité   ©  OCTO  Technology  -­‐    2010   24  
  • 25.
    Pourquoi  des  tests  de  receoe  automa+sés  ?   Conserver  la   Communiquer   Préserver  la   Gagner  du   connaissance   sans  ambiguïté   qualité   temps   •  Capitaliser  à  un  endroit   •  Spécifier  de  façon   unique  sur  ce  que  fait   univoque  par  les  tests   •  Construire  un  harnais  de   •  Eviter  les  erreurs   effecCvement  le  logiciel   tests   manuelles   •  Minimiser  les  problèmes   •  Détecter  les  régressions   •  Rejouer  fréquemment   •  Rendre  «  exécutables  »   de  coordinaCon  en   au  plus  tôt   l’intégralité  des  tests   les  spécificaCons   receoe   Tests  de  recehe  automaCsés   ©  OCTO  2010     25  
  • 26.
    Plusieurs  approches  de  TDR   Tests  d’IHM   SpécificaCons  exécutables   Behavior  Driven  Development   ©  OCTO  2010     26  
  • 27.
    Tests  d’IHM   Certains  ou+ls  disposent  d’un  mode   d’émula+on  du  navigateur,  plus  rapide   Selenium   WaCr   ©  OCTO  2010     27  
  • 28.
    Le  pour,  le  contre  …   Avantages Inconvénients Quasi-exhaustifs Enregistrés / écrits par des développeurs Rassurants pour le métier Temps d’exécution Quasi exhaustifs ;-) ©  OCTO  Technology  -­‐    2010   28  
  • 29.
    Plusieurs  approches  de  TDR   Tests  d’IHM   SpécificaCons  exécutables   Behavior  Driven  Development   ©  OCTO  2010     29  
  • 30.
    Dites  le  avec  un  tableau  !   Règle de gestion : création de compte Lors de la création de compte, un utilisateur doit obligatoirement choisir un mot de passe contenant des lettres et des chiffres Utilisateur! !Mot de passe! !Message jdoe ! ! ! !elephant ! ! ! ! Echec ! dgray ! ! ! toto ! ! ! !Echec ! dcooper! ! d1ane4ever! ! ! Succès !! ! . . . ! ! ! ! !. . . ! ! ! ! !. . . ! ©  OCTO  Technology  -­‐    2010   30  
  • 31.
    Par  exemple  :  GreenPepper   ©  OCTO  Technology  -­‐    2010   31  
  • 32.
    Par  exemple  :  GreenPepper   ©  OCTO  Technology  -­‐    2010   32  
  • 33.
    Spécifica+ons  exécutables   Code  de   Système   liaison   testé   Pages  de  tests   wiki   (fixtures)   ©  OCTO  2010     33  
  • 34.
    Le  pour,  le  contre  …   Avantages Inconvénients Expressivité : les tests Par défaut ne permet pas peuvent être formulés par de tester une IHM des utilisateurs Pourrait être encore plus On peut fusionner tests et expressif documentation ©  OCTO  Technology  -­‐    2010   34  
  • 35.
    Plusieurs  approches  de  TDR   Tests  d’IHM   SpécificaCons  exécutables   Behavior  Driven  Development   ©  OCTO  2010     35  
  • 36.
    Et  si  on  racontait  une  histoire  ?   BDD  (Behavior  Driven  Development),  une  manière  de   formaliser  ses  histoires  :   Etant donnée … [ un contexte ] Quand … [ un événement ] Alors… [ un état attendu ] ©  OCTO  2010     36  
  • 37.
    BDD  avec  Cucumber   ©  OCTO  Technology  -­‐    2010   37  
  • 38.
    BDD,  a  new  genera+on   Evolution syntaxique de TDD Tests d’acceptance Orienté développeur Prise en compte du reste de l'équipe Tout est dans le code Extraction des scénarios ©  OCTO  Technology  -­‐    2010   38  
  • 39.
    Le  pour,  le  contre  …   Avantages Inconvénients Extrêmement expressif Pas d’outils collaboratifs S’intègre très naturellement L’intégration de cucumber avec un outil de test d’IHM avec le monde Java est peu documentée L’avenir du test d’acceptance automatisé ©  OCTO  2010     39  
  • 40.
    On  n’améliore  que  ce   que  l’on  mesure   ©  OCTO  Technology  -­‐    2010   40   http://www.flickr.com/photos/55145236@N00/146617178/
  • 41.
    Quels  indicateurs  ?   •  Indicateur  de  «  le  code  compile  »  :  le  Build   –  Eviter  le  «  ça  compile  sur  mon  poste  »   –  Ou+ls  :  Hudson  +  Maven   •  Indicateurs  de  bonne  santé  :  tests  automa+sés   –  Ou+ls  :  XUnit,  Surefire,  JCoverage  /  Cobertura  …   •  Indicateurs  de  la  qualité  du  code  :  analyse  sta+que   –  Ou+ls  :  PMD,  CheckStyle,  Findbugs   –  Aggrégateur  :  Sonar   ©  OCTO  Technology  -­‐    2010   41  
  • 42.
    Jusqu’ici  tout  va  bien   ©  OCTO  Technology  -­‐    2010   42  
  • 43.
    Mesurer  les  tendances   ©  OCTO  Technology  -­‐    2010   43  
  • 44.
    Mesurer  les  tendances   ©  OCTO  Technology  -­‐    2010   44  
  • 45.
    Les  indicateurs  subjec+fs   http://www.infoq.com/news/2007/08/agile-kanban-boards ©  OCTO  Technology  -­‐    2010   45  
  • 46.
    Mesurer  la  produc+vité  ?    Débit  de  foncConnalités     Le  nombre  de  fonc+onnalités,  pondérées  par  la  valeur   mé+er,  ajoutées  au  logiciel  pendant  un  laps  de  temps   donné  et  répondant  aux  exigences  qualités   ©  OCTO  Technology  -­‐    2010   46  
  • 47.
    Récapitulons   •  Repousser  les  limites  de  l’intégra+on  con+nue   –  Profiler  et  distribuer  les  builds   –  Meore  en  place  une  poli+que  de  build  incassable   •  Automa+sez  vos  tests  de  receoe   –  En  suivant  des  cycles  de  développement  «  outside-­‐in  »   –  En  impliquant  votre  MOA,  grâce  à  des  ou+ls  conviviaux   •  Mesurer  pour  s’améliorer   –  Privilégier  un  ensemble  d’indicateurs,  objec+fs  et  subjec+fs   –  Mesurer  la  produc+vité   ©  OCTO  Technology  -­‐    2010   47  
  • 48.
    Université  du  SI  2010   Le  rendez-­‐vous  des  geeks  et  des  boss   ©  OCTO  Technology  -­‐    2010   48