CocoaHeads Rennes #7 : Intégration continue pour les nuls
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

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

  • 3,726 views
Uploaded on

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
3,726
On Slideshare
1,238
From Embeds
2,488
Number of Embeds
4

Actions

Shares
Downloads
26
Comments
0
Likes
0

Embeds 2,488

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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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