SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Intégra(on	
  con(nue	
  pour	
  les	
  Nuls
                              Qualimétrie	
  d’un	
  projet	
  iOS	
  (et	
  Android)




                                    Gaël DURAND - Architecte Mobilité - Pôle Devices
                                  Jérémy TOUDIC - Développeur Mobilité - Pôle Devices
                                                     16/02/2012
è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
AVANT	
  PROPOS




        ObjecAf	
  de	
  ce	
  Cocoaheads	
  :
        	
   -­‐	
  VulgarisaAon	
  de	
  l’IC	
  (focus	
  qualimétrie)

        Démarche	
  globale	
  de	
  la	
  présentaAon	
  :
        	
   -­‐	
  PrésentaAon	
  succincte	
  des	
  ouAls
        	
   -­‐	
  Comment	
  les	
  intégrer	
  à	
  notre	
  IC	
  /	
  Projet	
  iOS
        	
   -­‐	
  Une	
  démo	
  foncAonnelle



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
DEFINITION



        Intégrer	
  du	
  code	
  dans	
  un	
  dépôt	
  en	
  conAnu

        Build	
  du	
  logiciel	
  sur	
  une	
  machine	
  Aerce

        Etablir	
  des	
  rapports	
  sur	
  la	
  qualité	
  du	
  code

        Contrôle	
  régulier	
  des	
  rapports




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
SIIQUEST




       Démo SII Quest



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
ARCHITECTURE	
  IC	
  iOS




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
SVN


   Ou2l	
  de	
  ges2on	
  de	
  contrôle	
  des	
  sources

              §    Maintenir	
  un	
  dépôt	
  unique	
  de	
  code	
  source	
  versionné
              §    Tous	
  les	
  développeurs	
  peuvent	
  commi6er	
  dans	
  le	
  dépôt
              §    Les	
  conflits	
  de	
  code	
  peuvent	
  être	
  résolus
              §    Des	
  IDE	
  facilitent	
  l’u?lisa?on	
  de	
  SVN	
  (Tortoise,	
  svnX,	
  plugin	
  Eclipse…)

   	
  	
          Pourquoi	
  SVN
              §    Intégra?on	
  complète	
  avec	
  Jenkins
              §    Gratuité	
  de	
  la	
  solu?on
              §    Solu?on	
  très	
  répandue




è	
  www.groupe-­‐sii.com           le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
JENKINS


   Ou2l	
  open	
  source	
  d’intégra2on	
  con2nue
         §   Surveillance	
  des	
  dépôts	
  SVN
         §   Exécute	
  des	
  scripts	
  shell
         §   Construc?on	
  sur	
  machine	
  esclave
         §   Affiche	
  des	
  rapports	
  

   Pourquoi	
  Jenkins
         §   Richesse	
  des	
  plugins
         §   Mul?plateforme
         §   Simplicité

   Difficultés	
  rencontrées	
  Jenkins	
  /	
  iOS
         § Configura?on	
  de	
  l’esclave
         § Limita?on	
  des	
  plugins	
  pour	
  les	
  projets	
  iOS	
  



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
JENKINS




         Démo Jenkins



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TU


  Procédé	
  assurant	
  un	
  fonc2onnement	
  correct	
  d’une	
  par2e	
  du	
  logiciel

        §   OCUnit	
  est	
  un	
  framework	
  de	
  tests	
  unitaires	
  issu	
  de	
  XUnit
        §   Le	
  test	
  vérifie	
  que	
  la	
  par?e	
  du	
  code	
  a	
  le	
  comportement	
  a6endu
        §   Les	
  régressions	
  sont	
  détectées	
  après	
  une	
  modifica?on	
  déficiente
        §   Affichage	
  du	
  rapport	
  	
  dans	
  Jenkins
        §   Affichage	
  de	
  la	
  tendance	
  des	
  tests	
  dans	
  Jenkins

  Installa2on/Configura2on/U2lisa2on

        § Créer	
  un	
  nouveau	
  projet	
  iOS	
  en	
  cochant	
  la	
  case	
  «	
  Include	
  Unit	
  Tests	
  »
        § Lancer	
  les	
  tests	
  unitaires	
  dans	
  Jenkins	
  avec	
  un	
  script	
  Shell
        § Conver?r	
  le	
  résultat	
  OCUnit	
  au	
  format	
  Junit	
  avec	
  le	
  script	
  ocunit2junit.rb
        § Afficher	
   le	
  résultat	
   dans	
   Jenkins	
   en	
   cochant	
   l’op?on	
   «	
   Publier	
   le	
  rapport	
   des	
   résultats	
  
           des	
  tests	
  Junit	
  »

è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TU




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TESTS	
  IHM	
  (na(fs)

   Procédé	
  permeQant	
  de	
  tester	
  l’applica2on	
  na2ve	
  à	
  par2r	
  de	
  son	
  IHM

         § Fone	
  Monkey	
  est	
  un	
  framework	
  de	
  tests	
  IHM	
  mul?	
  OS	
  (iOS,	
  Android,	
  Flex)
         § Le	
  test	
  est	
  enregistré	
  à	
  par?r	
  des	
  ac?ons	
  de	
  l‘u?lisateur	
  sur	
  l’IHM
         § Les	
  tests	
  sont	
  	
  enregistrés	
  au	
  format	
  OCUnit
         § Les	
  tests	
  peuvent	
  être	
  retouchés	
  et	
  améliorés	
  au	
  besoin
         § Affichage	
  du	
  rapport	
  	
  dans	
  Jenkins
         § Affichage	
  de	
  la	
  tendance	
  des	
  tests	
  dans	
  Jenkins


   Installa2on/Configura2on/U2lisa2on

         § Récupéra?on	
  des	
  sources	
  FoneMonkey	
  pour	
  iOS	
  depuis	
  le	
  site	
  officiel
         § Installa?on	
  de	
  FoneMonkey	
  dans	
  le	
  projet	
  iOS
         § U?lisa?on	
  de	
  FoneMonkey	
  dans	
   le	
  projet	
  pour	
  enregistrer	
  les	
  tests	
  pendant	
  l’exécu?on	
  
            de	
  l’applica?on
         § Créa?on	
  des	
  tests	
  OCUnit	
  à	
  par?r	
  des	
  tests	
  enregistrés
         § Faire	
  un	
  script	
  Shell	
  dans	
  Jenkins
è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TESTS	
  IHM	
  (na(fs)




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TESTS	
  IHM	
  (Web)


   Procédé	
  permeQant	
  de	
  tester	
  l’applica2on	
  web	
  à	
  par2r	
  de	
  son	
  IHM

         §     Selenium	
  est	
  un	
  framework	
  d’applica?ons	
  web
         §     Le	
  test	
  est	
  configuré	
  via	
  un	
  plugin	
  Firefox
         §     Le	
  résultat	
  du	
  test	
  est	
  exporté	
  dans	
  le	
  langage	
  cible
         §     Les	
  tests	
  sont	
  lancés	
  sur	
  l’émulateur	
  ou	
  sur	
  l’appareil	
  via	
  un	
  web	
  driver

   Installa2on/Configura2on/U2lisa2on
         § Installer	
  le	
  plugin	
  Selenium	
  IDE	
  pour	
  Firefox
         § Créer	
  un	
  scénario	
  de	
  test	
  avec	
  Selenium	
  IDE
         § Exporter	
  le	
  scénario	
  dans	
  le	
  langage	
  qui	
  vous	
  convient	
  (p.ex.:	
  Java)
         § Modifier	
  le	
   code	
  du	
  test	
  généré	
  en	
  remplaçant	
  le	
  composant	
  gérant	
  les	
  interac?ons	
  avec	
  le	
  
            navigateur	
  Firefox	
  par	
  celui	
  gérant	
  les	
  interac?ons	
  avec	
  le	
  navigateur	
  de	
  l’iPhone	
  (Safari)
         § Ajouter	
  le	
  test	
  dans	
  votre	
  projet	
  web	
  Java	
  qui	
  cible	
  le	
  navigateur	
  de	
  l’iPhone
         § Configurer	
   le	
  projet	
   Java	
  qui	
  se	
  charge	
  de	
  lancer	
   les	
   tests	
  en	
   créant	
   une	
   étape	
  de	
   build	
   de	
  
            type	
  «	
  Appeler	
  Ant	
  »
         	
  
è	
  www.groupe-­‐sii.com       le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
TESTS	
  IHM	
  (Web)




                                  Démo Tests
     Démo TU et TF
                                   Selenium

è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
COUVERTURE	
  DE	
  CODE


 Procédé	
  assurant	
  une	
  bonne	
  couverture	
  de	
  code

       §   Détec?on	
  des	
  par?es	
  de	
  code	
  non	
  u?lisées
       §   Couverture	
  de	
  code	
  en	
  fonc?on	
  des	
  tests
       §   Rapport	
  de	
  l’analyse	
  dans	
  Jenkins

 Installa2on/Configura2on/U2lisa2on

       § Configurer	
  votre	
  projet	
  Xcode	
  avec
            § Les	
  valeurs	
  fprofile-­‐arcs	
  et	
  -­‐fest-­‐coverage	
  ajoutées	
  à	
  Other	
  C	
  Flags
            § La	
  bibliothèque	
  libprofile_rt.a	
  parmi	
  les	
  bibliothèques	
  à	
  lier	
  à	
  l’édi?on	
  des	
  liens
       § Créer	
  un	
  script	
  shell
            § Récupérer	
   les	
   fichiers	
   gcda	
   et	
   gcov	
   contenant	
   les	
   informa?ons	
   de	
   couverture	
   de	
  
               code
            § Conver?r	
  ces	
  fichiers	
  au	
  format	
  Cobertura	
  avec	
  	
  l’u?litaire	
  gcovr	
  

è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
COUVERTURE	
  DE	
  CODE




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
ANALYSE	
  STATIQUE


   Procédé	
  permeQant	
  de	
  contrôler	
  la	
  qualité	
  du	
  code

         §   Analyse	
  sta?que	
  dans	
  Xcode	
  (fuite	
  mémoire,	
  variable	
  non	
  ini?alisée…)
         §   Possibilité	
  de	
  forcer	
  l’analyse	
  sta?que	
  à	
  chaque	
  compila?on
         §   Rapport	
  de	
  l’analyse	
  intégré	
  dans	
  le	
  code

   Installa2on/Configura2on/U2lisa2on

         §   Lancer	
  la	
  commande	
  	
  Product	
  >Analyse	
  dans	
  Xcode




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
ANALYSE	
  STATIQUE




    Démo Couverture
                                  Démo Analyse
        Code

è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
DOCUMENTATION	
  DOXYGEN


   Système	
  de	
  généra2on	
  de	
  documenta2on	
  mul2	
  langage

         §   Objec?ve-­‐C	
  pris	
  en	
  charge	
  par	
  Doxygen
         §   Documenta?on	
  au	
  format	
  HTML	
  accessible	
  depuis	
  un	
  serveur
         §   Code	
  source	
  consultable	
  dans	
  la	
  doc
         §   Doxygen	
  helper	
  pour	
  générer	
  commentaires	
  au	
  format	
  Doxygen	
  (service)

   Installa2on/Configura2on/U2lisa2on

         § Installer	
  Doxygen
         § Ajouter	
  dans	
  le	
  projet	
  iOS	
  un	
  fichier	
  de	
  config	
  Doxyfile
         § Paramétrer	
  le	
  Doxyfile	
  afin	
  d’obtenir	
  une	
  doc	
  complète	
  et	
  agréable	
  à	
  parcourir
         § Ajouter	
  un	
  script	
  shell	
  dans	
  Jenkins	
  pour	
  lancer	
  la	
  doc
         § Rendre	
  la	
  doc	
  accessible	
  par	
  tous	
  les	
  membres	
  de	
  l’équipe	
  depuis	
  un	
  serveur


è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
DÉPLOIEMENT	
  SUR	
  SERVEUR	
  

   Procédé	
  permeQant	
  de	
  rendre	
  l’applica2on	
  disponible	
  aux	
  testeurs

         §   Un	
  script	
  construit	
  une	
  archive	
  au	
  format	
  ipa
         §   L’applica?on	
  est	
  installable	
  en	
  un	
  clic	
  sur	
  un	
  appareil	
  
         §   L’applica?on	
  et	
  la	
  doc	
  sont	
  accessibles	
  depuis	
  un	
  serveur



   Installa2on/Configura2on/U2lisa2on

         § Installer	
  la	
  clé	
  privée	
  de	
  l’applica?on	
  sur	
  la	
  machine	
  esclave
         § Ajouter	
  un	
  script	
  shell	
  dans	
  Jenkins	
  qui
              § exécute	
  xcodebuild	
  avec	
  les	
  informa?ons	
  de	
  provisioning
              § Déplace	
  l’applica?on	
  sur	
  un	
  serveur	
  accessible	
  par	
  tous	
  les	
  membres	
  de	
  l’équipe

        Démo
     Documentation

è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
ARCHITECTURE	
  IC	
  Android




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
EMMA




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
CHECKSTYLE	
  et	
  FINDBUGS




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
PLAN



              q    Objec2f	
  du	
  cocoaheads,	
  présenta2on	
  du	
  contexte

              q    SVN,	
  Jenkins

              q    Tests	
  unitaires	
  ,	
  Tests	
  fonc2onnels

              q    Couverture	
  de	
  code,	
  Analyse	
  Sta2que

              q    Documenta2on,	
  Déploiement

              q    Parlons	
  Android

              q    Conclusion



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
LA	
  QUALIMETRIE	
  POUR	
  QUI	
  ?
                                                   POURQUOI	
  ?


   Pour	
  les	
  développeurs
         §   Ecriture	
  de	
  tests	
  moins	
  rébarba?ve
         §   Documenta?on	
  constamment	
  à	
  jour
         §   Détec?on	
  plus	
  rapide	
  des	
  bugs	
  et	
  des	
  erreurs	
  de	
  programma?on

   Pour	
  les	
  chefs	
  de	
  projet
         § Confort	
  dans	
  le	
  suivi	
  du	
  développement
         § Analyse	
  en	
  profondeur	
  du	
  projet	
  à	
  par?r	
  de	
  rapports	
  complémentaires
         § Assurance	
  d’avoir	
  une	
  version	
  stable	
  disponible	
  à	
  tout	
  moment
         § Métriques	
  objec?ves	
  pour	
  faciliter	
  les	
  discussions	
  chef	
  de	
  projet/développeurs


   Pour	
  les	
  décideurs
         § Charge	
  sur	
  pe?t	
  projet	
  car	
  coût	
  de	
  la	
  mise	
  en	
  place	
  non	
  négligeable
         § Mais	
  économies	
  considérables	
  sur	
  les	
  projets	
  importants



è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012
FIN	
  




è	
  www.groupe-­‐sii.com   le	
  16/02/2012	
  |	
  SII	
  Rennes	
  |	
  3	
  bis,	
  avenue	
  Belle	
  Fontaine|	
  35510	
  Cesson	
  Sévigné

jeudi 16 février 2012

Contenu connexe

Tendances

Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOSCocoaHeads France
 
Tap publisher par Frédéric Aloé
Tap publisher par Frédéric AloéTap publisher par Frédéric Aloé
Tap publisher par Frédéric AloéCocoaHeads France
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolCocoaHeads France
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeadsRNS
 
Présentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParisPrésentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParisCocoaHeads France
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKituncatcrea
 
Panorama des solutions mobile hybrides
Panorama des solutions mobile hybridesPanorama des solutions mobile hybrides
Panorama des solutions mobile hybridesekino
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoCocoaHeads France
 
Kinect pour les développeurs Web
Kinect pour les développeurs WebKinect pour les développeurs Web
Kinect pour les développeurs Webekino
 
What’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. FornaciariWhat’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. FornaciariZenika
 
BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! Erwann Robin
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontZenika
 
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidL’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidChris Saez
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React NativeCocoaHeads France
 

Tendances (20)

Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOS
 
Tap publisher par Frédéric Aloé
Tap publisher par Frédéric AloéTap publisher par Frédéric Aloé
Tap publisher par Frédéric Aloé
 
How javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible toolHow javascript core helped PAW to move from a small app to an extensible tool
How javascript core helped PAW to move from a small app to an extensible tool
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
 
Présentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParisPrésentation retour d'experience sur l'application MyLittleParis
Présentation retour d'experience sur l'application MyLittleParis
 
Native script
Native scriptNative script
Native script
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
 
Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2
 
Panorama des solutions mobile hybrides
Panorama des solutions mobile hybridesPanorama des solutions mobile hybrides
Panorama des solutions mobile hybrides
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Apache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéroApache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéro
 
Xcode Server - Jeffrey Macko
Xcode Server - Jeffrey MackoXcode Server - Jeffrey Macko
Xcode Server - Jeffrey Macko
 
Kinect pour les développeurs Web
Kinect pour les développeurs WebKinect pour les développeurs Web
Kinect pour les développeurs Web
 
What’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. FornaciariWhat’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. Fornaciari
 
BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
 
Ns operationqueue
Ns operationqueueNs operationqueue
Ns operationqueue
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
Make Acccessibility Great Again
Make Acccessibility Great AgainMake Acccessibility Great Again
Make Acccessibility Great Again
 
L’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & AndroidL’environnement du développement mobile iOS & Android
L’environnement du développement mobile iOS & Android
 
J'ai fait une app native en React Native
J'ai fait une app native en React NativeJ'ai fait une app native en React Native
J'ai fait une app native en React Native
 

En vedette

Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Intégration continue
Intégration continueIntégration continue
Intégration continueKlee Group
 
Consumidores Online
Consumidores OnlineConsumidores Online
Consumidores Onlinetinchoiae
 
Multilevel Governance in Education and Training: Concept Note FR
Multilevel Governance in Education and Training: Concept Note FRMultilevel Governance in Education and Training: Concept Note FR
Multilevel Governance in Education and Training: Concept Note FRETF - European Training Foundation
 
Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)treballsana
 
Les différentes phases d’une action (5e partie) : Évaluation et promotion
Les différentes phases d’une action (5e partie) : Évaluation et promotionLes différentes phases d’une action (5e partie) : Évaluation et promotion
Les différentes phases d’une action (5e partie) : Évaluation et promotionRotary International
 
La población andaluza
La población andaluzaLa población andaluza
La población andaluzajesuso1971
 
Optique vision Montmorot
Optique vision MontmorotOptique vision Montmorot
Optique vision Montmorotopticien1
 
Guy Lafite : mes engagements et mes priorités pour biarritz
Guy Lafite : mes engagements et mes priorités pour biarritzGuy Lafite : mes engagements et mes priorités pour biarritz
Guy Lafite : mes engagements et mes priorités pour biarritzGuy Lafite
 
Estadistica y probabilidad
Estadistica y probabilidadEstadistica y probabilidad
Estadistica y probabilidadluiggi091
 
Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)treballsana
 

En vedette (20)

Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Intégration continue
Intégration continueIntégration continue
Intégration continue
 
Consumidores Online
Consumidores OnlineConsumidores Online
Consumidores Online
 
T rabajo de jessica
T rabajo de jessicaT rabajo de jessica
T rabajo de jessica
 
Multilevel Governance in Education and Training: Concept Note FR
Multilevel Governance in Education and Training: Concept Note FRMultilevel Governance in Education and Training: Concept Note FR
Multilevel Governance in Education and Training: Concept Note FR
 
Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)
 
Les différentes phases d’une action (5e partie) : Évaluation et promotion
Les différentes phases d’une action (5e partie) : Évaluation et promotionLes différentes phases d’une action (5e partie) : Évaluation et promotion
Les différentes phases d’une action (5e partie) : Évaluation et promotion
 
La población andaluza
La población andaluzaLa población andaluza
La población andaluza
 
Optique vision Montmorot
Optique vision MontmorotOptique vision Montmorot
Optique vision Montmorot
 
2012_2_ciBasico_Tema2BibliotecaJoanRegla
2012_2_ciBasico_Tema2BibliotecaJoanRegla2012_2_ciBasico_Tema2BibliotecaJoanRegla
2012_2_ciBasico_Tema2BibliotecaJoanRegla
 
2014_1_ciAvanzRecEspHistoria
2014_1_ciAvanzRecEspHistoria2014_1_ciAvanzRecEspHistoria
2014_1_ciAvanzRecEspHistoria
 
Los nuevos medios
Los nuevos medios Los nuevos medios
Los nuevos medios
 
Empresa
EmpresaEmpresa
Empresa
 
2014_1_ciAvanzTema6_5TrobesAvanzEncontrarRevistas
2014_1_ciAvanzTema6_5TrobesAvanzEncontrarRevistas2014_1_ciAvanzTema6_5TrobesAvanzEncontrarRevistas
2014_1_ciAvanzTema6_5TrobesAvanzEncontrarRevistas
 
Cahier csa 2013
Cahier csa 2013Cahier csa 2013
Cahier csa 2013
 
Guy Lafite : mes engagements et mes priorités pour biarritz
Guy Lafite : mes engagements et mes priorités pour biarritzGuy Lafite : mes engagements et mes priorités pour biarritz
Guy Lafite : mes engagements et mes priorités pour biarritz
 
Estadistica y probabilidad
Estadistica y probabilidadEstadistica y probabilidad
Estadistica y probabilidad
 
2014_1_ciAvanzTema4RecursosDinfEnLasBibliotecasUV
2014_1_ciAvanzTema4RecursosDinfEnLasBibliotecasUV2014_1_ciAvanzTema4RecursosDinfEnLasBibliotecasUV
2014_1_ciAvanzTema4RecursosDinfEnLasBibliotecasUV
 
Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)Practica 1 (aprenc a observar cèl·lules humanes)
Practica 1 (aprenc a observar cèl·lules humanes)
 
Recursos de información bibliotecas UV
Recursos de información bibliotecas UVRecursos de información bibliotecas UV
Recursos de información bibliotecas UV
 

Similaire à CocoaHeads Rennes #7 : Intégration continue pour les nuls

Jenkins2 : le retour ( d'expérience) : TouraineTech 2018
Jenkins2 : le retour ( d'expérience) : TouraineTech 2018Jenkins2 : le retour ( d'expérience) : TouraineTech 2018
Jenkins2 : le retour ( d'expérience) : TouraineTech 2018Alexandre Touret
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez EngieLeClubQualiteLogicielle
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etapeZaïd BOUDAMOUZ
 
Cv Ouaz Ines
Cv Ouaz InesCv Ouaz Ines
Cv Ouaz InesInes Ouaz
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeadsRNS
 
Etendez votre Lync
Etendez votre LyncEtendez votre Lync
Etendez votre LyncMicrosoft
 
XWiki : Evolutions 2012
XWiki : Evolutions 2012XWiki : Evolutions 2012
XWiki : Evolutions 2012XWiki
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Adrien Blind
 
Cv ines ouaz
Cv ines ouazCv ines ouaz
Cv ines ouazInes Ouaz
 
What's Next Replay - Flex Mobile
What's Next Replay - Flex MobileWhat's Next Replay - Flex Mobile
What's Next Replay - Flex MobileZenikaOuest
 
Eole Ng
Eole NgEole Ng
Eole NgEole
 
Ecosystème Lync : le Big Bang
Ecosystème Lync : le Big BangEcosystème Lync : le Big Bang
Ecosystème Lync : le Big BangMicrosoft Ideas
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Publicis Sapient Engineering
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Publicis Sapient Engineering
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
Gui android eclipse
Gui android eclipseGui android eclipse
Gui android eclipseESPRIT
 
Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Cynapsys It Hotspot
 

Similaire à CocoaHeads Rennes #7 : Intégration continue pour les nuls (20)

Jenkins2 : le retour ( d'expérience) : TouraineTech 2018
Jenkins2 : le retour ( d'expérience) : TouraineTech 2018Jenkins2 : le retour ( d'expérience) : TouraineTech 2018
Jenkins2 : le retour ( d'expérience) : TouraineTech 2018
 
20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie20171122 01 - REX : Intégration et déploiement continu chez Engie
20171122 01 - REX : Intégration et déploiement continu chez Engie
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etape
 
Cv Ouaz Ines
Cv Ouaz InesCv Ouaz Ines
Cv Ouaz Ines
 
CocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOSCocoaHeads Rennes #4 : Tests automatisés sur iOS
CocoaHeads Rennes #4 : Tests automatisés sur iOS
 
Etendez votre Lync
Etendez votre LyncEtendez votre Lync
Etendez votre Lync
 
Evolutions XWiki 2012
Evolutions XWiki 2012Evolutions XWiki 2012
Evolutions XWiki 2012
 
XWiki : Evolutions 2012
XWiki : Evolutions 2012XWiki : Evolutions 2012
XWiki : Evolutions 2012
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
Cv ines ouaz
Cv ines ouazCv ines ouaz
Cv ines ouaz
 
What's Next Replay - Flex Mobile
What's Next Replay - Flex MobileWhat's Next Replay - Flex Mobile
What's Next Replay - Flex Mobile
 
Eole Ng
Eole NgEole Ng
Eole Ng
 
Ecosystème Lync : le Big Bang
Ecosystème Lync : le Big BangEcosystème Lync : le Big Bang
Ecosystème Lync : le Big Bang
 
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
Open XKE - Introduire le Continuous Delivery dans votre entreprise par Jean-L...
 
cv_hamidi
cv_hamidicv_hamidi
cv_hamidi
 
SonarQube et la Sécurité
SonarQube et la SécuritéSonarQube et la Sécurité
SonarQube et la Sécurité
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
Gui android eclipse
Gui android eclipseGui android eclipse
Gui android eclipse
 
Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017Catalogue pfe cynapsys_2016_2017
Catalogue pfe cynapsys_2016_2017
 

Plus de CocoaHeadsRNS

CocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeadsRNS
 
CocoaHeads Rennes #14: iOS7 Controllers Transitions
 CocoaHeads Rennes #14: iOS7 Controllers Transitions CocoaHeads Rennes #14: iOS7 Controllers Transitions
CocoaHeads Rennes #14: iOS7 Controllers TransitionsCocoaHeadsRNS
 
CocoaHeads Rennes #13 : Magical Record
CocoaHeads Rennes #13 : Magical RecordCocoaHeads Rennes #13 : Magical Record
CocoaHeads Rennes #13 : Magical RecordCocoaHeadsRNS
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeadsRNS
 
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeadsRNS
 
CocoaHeads Rennes #10 : Notifications
CocoaHeads Rennes #10 : NotificationsCocoaHeads Rennes #10 : Notifications
CocoaHeads Rennes #10 : NotificationsCocoaHeadsRNS
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeadsRNS
 
CocoaHeads Rennes #4 : la rotation sur iOS
CocoaHeads Rennes #4 : la rotation sur iOSCocoaHeads Rennes #4 : la rotation sur iOS
CocoaHeads Rennes #4 : la rotation sur iOSCocoaHeadsRNS
 
Cocoaheads Rennes #3 : Bien coder sur iOS
Cocoaheads Rennes #3 : Bien coder sur iOSCocoaheads Rennes #3 : Bien coder sur iOS
Cocoaheads Rennes #3 : Bien coder sur iOSCocoaHeadsRNS
 
CocoaHeads Rennes #3 : Bien débuter sur iOS
CocoaHeads Rennes #3 : Bien débuter sur iOSCocoaHeads Rennes #3 : Bien débuter sur iOS
CocoaHeads Rennes #3 : Bien débuter sur iOSCocoaHeadsRNS
 
CocoaHeads Rennes #2 : Xcode 4
CocoaHeads Rennes #2 : Xcode 4CocoaHeads Rennes #2 : Xcode 4
CocoaHeads Rennes #2 : Xcode 4CocoaHeadsRNS
 
CocoaHeads Rennes #2 : Pratiques de développement itératif
CocoaHeads Rennes #2 : Pratiques de développement itératifCocoaHeads Rennes #2 : Pratiques de développement itératif
CocoaHeads Rennes #2 : Pratiques de développement itératifCocoaHeadsRNS
 
CocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeadsRNS
 
CocoaHeads Rennes #1 : internationalisation
CocoaHeads Rennes #1 : internationalisationCocoaHeads Rennes #1 : internationalisation
CocoaHeads Rennes #1 : internationalisationCocoaHeadsRNS
 

Plus de CocoaHeadsRNS (14)

CocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubsCocoaHeads Rennes #16: OHHTTPStubs
CocoaHeads Rennes #16: OHHTTPStubs
 
CocoaHeads Rennes #14: iOS7 Controllers Transitions
 CocoaHeads Rennes #14: iOS7 Controllers Transitions CocoaHeads Rennes #14: iOS7 Controllers Transitions
CocoaHeads Rennes #14: iOS7 Controllers Transitions
 
CocoaHeads Rennes #13 : Magical Record
CocoaHeads Rennes #13 : Magical RecordCocoaHeads Rennes #13 : Magical Record
CocoaHeads Rennes #13 : Magical Record
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPods
 
CocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock ObjectsCocoaHeads Rennes #10 : Mock Objects
CocoaHeads Rennes #10 : Mock Objects
 
CocoaHeads Rennes #10 : Notifications
CocoaHeads Rennes #10 : NotificationsCocoaHeads Rennes #10 : Notifications
CocoaHeads Rennes #10 : Notifications
 
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expertCocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
CocoaHeads Rennes #9 : Gestion mémoire, du débutant à l'expert
 
CocoaHeads Rennes #4 : la rotation sur iOS
CocoaHeads Rennes #4 : la rotation sur iOSCocoaHeads Rennes #4 : la rotation sur iOS
CocoaHeads Rennes #4 : la rotation sur iOS
 
Cocoaheads Rennes #3 : Bien coder sur iOS
Cocoaheads Rennes #3 : Bien coder sur iOSCocoaheads Rennes #3 : Bien coder sur iOS
Cocoaheads Rennes #3 : Bien coder sur iOS
 
CocoaHeads Rennes #3 : Bien débuter sur iOS
CocoaHeads Rennes #3 : Bien débuter sur iOSCocoaHeads Rennes #3 : Bien débuter sur iOS
CocoaHeads Rennes #3 : Bien débuter sur iOS
 
CocoaHeads Rennes #2 : Xcode 4
CocoaHeads Rennes #2 : Xcode 4CocoaHeads Rennes #2 : Xcode 4
CocoaHeads Rennes #2 : Xcode 4
 
CocoaHeads Rennes #2 : Pratiques de développement itératif
CocoaHeads Rennes #2 : Pratiques de développement itératifCocoaHeads Rennes #2 : Pratiques de développement itératif
CocoaHeads Rennes #2 : Pratiques de développement itératif
 
CocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central DispatchCocoaHeads Rennes #1 : Grand Central Dispatch
CocoaHeads Rennes #1 : Grand Central Dispatch
 
CocoaHeads Rennes #1 : internationalisation
CocoaHeads Rennes #1 : internationalisationCocoaHeads Rennes #1 : internationalisation
CocoaHeads Rennes #1 : internationalisation
 

CocoaHeads Rennes #7 : Intégration continue pour les nuls

  • 1. Intégra(on  con(nue  pour  les  Nuls Qualimétrie  d’un  projet  iOS  (et  Android) Gaël DURAND - Architecte Mobilité - Pôle Devices Jérémy TOUDIC - Développeur Mobilité - Pôle Devices 16/02/2012 è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 2. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 3. AVANT  PROPOS ObjecAf  de  ce  Cocoaheads  :   -­‐  VulgarisaAon  de  l’IC  (focus  qualimétrie) Démarche  globale  de  la  présentaAon  :   -­‐  PrésentaAon  succincte  des  ouAls   -­‐  Comment  les  intégrer  à  notre  IC  /  Projet  iOS   -­‐  Une  démo  foncAonnelle è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 4. DEFINITION Intégrer  du  code  dans  un  dépôt  en  conAnu Build  du  logiciel  sur  une  machine  Aerce Etablir  des  rapports  sur  la  qualité  du  code Contrôle  régulier  des  rapports è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 5. SIIQUEST Démo SII Quest è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 6. ARCHITECTURE  IC  iOS è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 7. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 8. SVN Ou2l  de  ges2on  de  contrôle  des  sources § Maintenir  un  dépôt  unique  de  code  source  versionné § Tous  les  développeurs  peuvent  commi6er  dans  le  dépôt § Les  conflits  de  code  peuvent  être  résolus § Des  IDE  facilitent  l’u?lisa?on  de  SVN  (Tortoise,  svnX,  plugin  Eclipse…)     Pourquoi  SVN § Intégra?on  complète  avec  Jenkins § Gratuité  de  la  solu?on § Solu?on  très  répandue è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 9. JENKINS Ou2l  open  source  d’intégra2on  con2nue § Surveillance  des  dépôts  SVN § Exécute  des  scripts  shell § Construc?on  sur  machine  esclave § Affiche  des  rapports   Pourquoi  Jenkins § Richesse  des  plugins § Mul?plateforme § Simplicité Difficultés  rencontrées  Jenkins  /  iOS § Configura?on  de  l’esclave § Limita?on  des  plugins  pour  les  projets  iOS   è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 10. JENKINS Démo Jenkins è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 11. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 12. TU Procédé  assurant  un  fonc2onnement  correct  d’une  par2e  du  logiciel § OCUnit  est  un  framework  de  tests  unitaires  issu  de  XUnit § Le  test  vérifie  que  la  par?e  du  code  a  le  comportement  a6endu § Les  régressions  sont  détectées  après  une  modifica?on  déficiente § Affichage  du  rapport    dans  Jenkins § Affichage  de  la  tendance  des  tests  dans  Jenkins Installa2on/Configura2on/U2lisa2on § Créer  un  nouveau  projet  iOS  en  cochant  la  case  «  Include  Unit  Tests  » § Lancer  les  tests  unitaires  dans  Jenkins  avec  un  script  Shell § Conver?r  le  résultat  OCUnit  au  format  Junit  avec  le  script  ocunit2junit.rb § Afficher   le  résultat   dans   Jenkins   en   cochant   l’op?on   «   Publier   le  rapport   des   résultats   des  tests  Junit  » è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 13. TU è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 14. TESTS  IHM  (na(fs) Procédé  permeQant  de  tester  l’applica2on  na2ve  à  par2r  de  son  IHM § Fone  Monkey  est  un  framework  de  tests  IHM  mul?  OS  (iOS,  Android,  Flex) § Le  test  est  enregistré  à  par?r  des  ac?ons  de  l‘u?lisateur  sur  l’IHM § Les  tests  sont    enregistrés  au  format  OCUnit § Les  tests  peuvent  être  retouchés  et  améliorés  au  besoin § Affichage  du  rapport    dans  Jenkins § Affichage  de  la  tendance  des  tests  dans  Jenkins Installa2on/Configura2on/U2lisa2on § Récupéra?on  des  sources  FoneMonkey  pour  iOS  depuis  le  site  officiel § Installa?on  de  FoneMonkey  dans  le  projet  iOS § U?lisa?on  de  FoneMonkey  dans   le  projet  pour  enregistrer  les  tests  pendant  l’exécu?on   de  l’applica?on § Créa?on  des  tests  OCUnit  à  par?r  des  tests  enregistrés § Faire  un  script  Shell  dans  Jenkins è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 15. TESTS  IHM  (na(fs) è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 16. TESTS  IHM  (Web) Procédé  permeQant  de  tester  l’applica2on  web  à  par2r  de  son  IHM § Selenium  est  un  framework  d’applica?ons  web § Le  test  est  configuré  via  un  plugin  Firefox § Le  résultat  du  test  est  exporté  dans  le  langage  cible § Les  tests  sont  lancés  sur  l’émulateur  ou  sur  l’appareil  via  un  web  driver Installa2on/Configura2on/U2lisa2on § Installer  le  plugin  Selenium  IDE  pour  Firefox § Créer  un  scénario  de  test  avec  Selenium  IDE § Exporter  le  scénario  dans  le  langage  qui  vous  convient  (p.ex.:  Java) § Modifier  le   code  du  test  généré  en  remplaçant  le  composant  gérant  les  interac?ons  avec  le   navigateur  Firefox  par  celui  gérant  les  interac?ons  avec  le  navigateur  de  l’iPhone  (Safari) § Ajouter  le  test  dans  votre  projet  web  Java  qui  cible  le  navigateur  de  l’iPhone § Configurer   le  projet   Java  qui  se  charge  de  lancer   les   tests  en   créant   une   étape  de   build   de   type  «  Appeler  Ant  »   è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 17. TESTS  IHM  (Web) Démo Tests Démo TU et TF Selenium è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 18. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 19. COUVERTURE  DE  CODE Procédé  assurant  une  bonne  couverture  de  code § Détec?on  des  par?es  de  code  non  u?lisées § Couverture  de  code  en  fonc?on  des  tests § Rapport  de  l’analyse  dans  Jenkins Installa2on/Configura2on/U2lisa2on § Configurer  votre  projet  Xcode  avec § Les  valeurs  fprofile-­‐arcs  et  -­‐fest-­‐coverage  ajoutées  à  Other  C  Flags § La  bibliothèque  libprofile_rt.a  parmi  les  bibliothèques  à  lier  à  l’édi?on  des  liens § Créer  un  script  shell § Récupérer   les   fichiers   gcda   et   gcov   contenant   les   informa?ons   de   couverture   de   code § Conver?r  ces  fichiers  au  format  Cobertura  avec    l’u?litaire  gcovr   è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 20. COUVERTURE  DE  CODE è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 21. ANALYSE  STATIQUE Procédé  permeQant  de  contrôler  la  qualité  du  code § Analyse  sta?que  dans  Xcode  (fuite  mémoire,  variable  non  ini?alisée…) § Possibilité  de  forcer  l’analyse  sta?que  à  chaque  compila?on § Rapport  de  l’analyse  intégré  dans  le  code Installa2on/Configura2on/U2lisa2on § Lancer  la  commande    Product  >Analyse  dans  Xcode è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 22. ANALYSE  STATIQUE Démo Couverture Démo Analyse Code è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 23. DOCUMENTATION  DOXYGEN Système  de  généra2on  de  documenta2on  mul2  langage § Objec?ve-­‐C  pris  en  charge  par  Doxygen § Documenta?on  au  format  HTML  accessible  depuis  un  serveur § Code  source  consultable  dans  la  doc § Doxygen  helper  pour  générer  commentaires  au  format  Doxygen  (service) Installa2on/Configura2on/U2lisa2on § Installer  Doxygen § Ajouter  dans  le  projet  iOS  un  fichier  de  config  Doxyfile § Paramétrer  le  Doxyfile  afin  d’obtenir  une  doc  complète  et  agréable  à  parcourir § Ajouter  un  script  shell  dans  Jenkins  pour  lancer  la  doc § Rendre  la  doc  accessible  par  tous  les  membres  de  l’équipe  depuis  un  serveur è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 24. DÉPLOIEMENT  SUR  SERVEUR   Procédé  permeQant  de  rendre  l’applica2on  disponible  aux  testeurs § Un  script  construit  une  archive  au  format  ipa § L’applica?on  est  installable  en  un  clic  sur  un  appareil   § L’applica?on  et  la  doc  sont  accessibles  depuis  un  serveur Installa2on/Configura2on/U2lisa2on § Installer  la  clé  privée  de  l’applica?on  sur  la  machine  esclave § Ajouter  un  script  shell  dans  Jenkins  qui § exécute  xcodebuild  avec  les  informa?ons  de  provisioning § Déplace  l’applica?on  sur  un  serveur  accessible  par  tous  les  membres  de  l’équipe Démo Documentation è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 25. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 26. ARCHITECTURE  IC  Android è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 27. EMMA è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 28. CHECKSTYLE  et  FINDBUGS è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 29. PLAN q Objec2f  du  cocoaheads,  présenta2on  du  contexte q SVN,  Jenkins q Tests  unitaires  ,  Tests  fonc2onnels q Couverture  de  code,  Analyse  Sta2que q Documenta2on,  Déploiement q Parlons  Android q Conclusion è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 30. LA  QUALIMETRIE  POUR  QUI  ? POURQUOI  ? Pour  les  développeurs § Ecriture  de  tests  moins  rébarba?ve § Documenta?on  constamment  à  jour § Détec?on  plus  rapide  des  bugs  et  des  erreurs  de  programma?on Pour  les  chefs  de  projet § Confort  dans  le  suivi  du  développement § Analyse  en  profondeur  du  projet  à  par?r  de  rapports  complémentaires § Assurance  d’avoir  une  version  stable  disponible  à  tout  moment § Métriques  objec?ves  pour  faciliter  les  discussions  chef  de  projet/développeurs Pour  les  décideurs § Charge  sur  pe?t  projet  car  coût  de  la  mise  en  place  non  négligeable § Mais  économies  considérables  sur  les  projets  importants è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012
  • 31. FIN   è  www.groupe-­‐sii.com le  16/02/2012  |  SII  Rennes  |  3  bis,  avenue  Belle  Fontaine|  35510  Cesson  Sévigné jeudi 16 février 2012