cocoaheads rennes #7 : intégration continue pour les nuls
DESCRIPTION
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/37104049TRANSCRIPT
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
Intégra(on con(nue pour les Nuls
Qualimétrie d’un projet iOS (et Android)
Gaël DURAND - Architecte Mobilité - Pôle DevicesJérémy TOUDIC - Développeur Mobilité - Pôle Devices
16/02/2012
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
SIIQUEST
Démo SII Quest
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
ARCHITECTURE IC iOS
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
SVN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
JENKINS
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
JENKINS
Démo Jenkins
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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 »
TU
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
TU
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
TESTS IHM (na(fs)
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
TESTS IHM (na(fs)
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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 »
TESTS IHM (Web)
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
TESTS IHM (Web)
Démo Tests SeleniumDémo TU et TF
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
COUVERTURE DE CODE
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
COUVERTURE DE CODE
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
ANALYSE STATIQUE
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
ANALYSE STATIQUE
Démo Couverture Code Démo Analyse
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
DOCUMENTATION DOXYGEN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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ÉPLOIEMENT SUR SERVEUR
Démo Documentation
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
ARCHITECTURE IC Android
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
EMMA
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
CHECKSTYLE et FINDBUGS
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
PLAN
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
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
LA QUALIMETRIE POUR QUI ?POURQUOI ?
jeudi 16 février 2012
è www.groupe-‐sii.com le 16/02/2012 | SII Rennes | 3 bis, avenue Belle Fontaine| 35510 Cesson Sévigné
FIN
jeudi 16 février 2012