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
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