• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
CocoaHeads Rennes #7 : Intégration continue pour les nuls
 

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

on

  • 3,526 views

Screencast de la présentation du 16 février 2011 aux Cocoaheads Rennes. ...

Screencast de la présentation du 16 février 2011 aux Cocoaheads Rennes.

« Mais je comprends pas, ça marchait avant, ça ne marche plus ! ». Qui n’a jamais prononcé cette phrase au cours d’un projet ? Pourtant, la solution existe : l’intégration continue. Cette méthode consiste, entre autre, à vérifier l’intégrité d’un projet à chaque modification. Et ceci, de façon automatique. L’intégration continue pourrait sonner le glas du principe de régression et garantir la qualité de vos réalisations.

Cette présentation a été assurée par Jérémy Toudic (développeur mobilité, SII Rennes) et Gaël Durand (référent technique sur les technologies mobiles au sein de SII Rennes). Gaël est aussi l’auteur de « Objective-C Créez vos applications iPhone et iPad » et enseigne à l’université.

Vidéo sur la session sur Vimeo: http://vimeo.com/37104049

Statistics

Views

Total Views
3,526
Views on SlideShare
1,054
Embed Views
2,472

Actions

Likes
0
Downloads
22
Comments
0

4 Embeds 2,472

http://cocoaheads.fr 2451
http://feeds.feedburner.com 18
http://plus.url.google.com 2
http://feedproxy.google.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

    • 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