Transcript
Page 1: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

De l'intégration continue au déploiement continu sur Android & iOS

Thibaud CAVIN Simone CIVETTA Thomas GUERIN

Page 2: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Agenda

2

Introduction

Pourquoi se doter d’une usine

logicielle aussi sur mobile ?

Intégration continue sur

Android & iOSAutomatisation de la compilation, de

l'exécution des tests unitaires/fonctionnels...

Vers le déploiement continu

TestFlight pour iOS & Android

Partie 1 Partie 2 Partie 3

Page 3: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 3

Thibaud CAVIN

Responsable de la mobilité chez XebiaDéveloppement / Déploiement / Soumission des apps mobiles sur les stores grand-public ou d’entreprise

Thibaud CAVINResponsable Mobilité

Simone CIVETTA

Développeur iOS confirméDéveloppement des apps mobiles iOS, Android, hybrides et web mobiles

Simone CIVETTAConsultant iOS

Thomas GUERIN

Développeur Java & Android confirmé Développement des apps Android et web mobiles, également des backend auxquels elles s’y connectent

Thomas GUERINConsultant Android

Page 4: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

IntroductionPourquoi se doter d’une usine logicielle aussi sur mobile ?

Page 5: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Le marché de la mobilité arrive à

5

Une consolidation des acteurs en place :

✓ Rachat de la division mobile de Nokia par Microsoft✓ Blackberry ...✓ Suprématie Android en PDM / iOS pour les services

Attentes fortes des utilisateurs

Un relais de croissance déterminant

* : Chiffres de StatCounter GlobalStats en France

95% de PDM*

-iOS/Android/WP

Page 6: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Un projet mobile ...

6

... se réalise sur plusieurs plateformes mobiles (iOS & Android) :

✓ Les mêmes fonctionnalités, une ergonomie adaptée néanmoins✓ Fragmentation toujours importante sur Android

... possède un cycle de développement court

Page 7: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Pourquoi se doter d’une usine

7

Des projets mobiles aux produits mobiles :

✓ Mises à jour régulières (2 mois)✓ La qualité est importante ✓ Retours utilisateurs sur les stores

Améliorer son «Time-To-Market» dans un contexte concurrentiel

Une intégration de plus en plus complexe avec le SI pour des services mobiles à valeur ajoutée

Assurer la non régression de ses applications

Page 8: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

AnalyseBuild Tests

Les principales étapesIntégration continue

8

Page 9: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Serveur d’intégration continue

Utilisation de Jenkins CI

L’unité est le job

Nombreux plugins disponibles

3 jobs essentiels :

✓ Build du projet et exécution des tests unitaires✓ Exécution des tests fonctionnels✓ Déploiement du livrable

9

Page 10: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

Intégration continue sur Android

Automatisation de la compilation, de l'exécution des tests unitaires/fonctionnels ...

Page 11: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 11

Build

Page 12: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Gradle vs MavenQuel système de build ?

Maven :

✓ Configuration -> xml✓ Plugin créé par la communauté✓ Bonne intégration dans les IDE

Gradle:

✓ Configuration -> scripting groovy✓ Nouveau système de build “officiel” pour Android✓ Très vite adopté

12

Build

Page 13: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 13

Tests Unitaires

Page 14: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

JUnit ou Robolectric ?Tests unitaires

JUnit :

✓ Difficile de mocker les composants du sdk✓ Utile pour tester la logique du modèle métier

Robolectric :

✓ Plus de “java.lang.RuntimeException: Stub!”✓ Exécution des tests directement dans la JVM✓ Quelques limitations (gridlayout, menudrawer...)

14

TU

Page 15: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 15

Tests Fonctionnels

Page 16: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Tests fonctionnels

Framework d’instrumentation :

✓ Intégrer nativement au sein de la plate-forme✓ Permet d’intéragir avec les composants d’une application✓ Faible niveau d’abstraction

Robotium :

✓ Surcouche du framework d’instrumentation✓ Meilleur niveau d’abstraction✓ Écriture des tests simplifiés

16

TF

Page 17: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 17

Analyse

Page 18: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Analyse des rapports

Sonar :

✓ Suivi des principales métriques du code (couverture, duplication...) ✓ Adapter le profil qualité

Spoon :

✓ Exécution distribuée des tests fonctionnels✓ Génération de rapports d’exécution clairs✓ Format HTML

18

Page 19: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Démo

19

Démo

Page 20: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

Intégration continue sur iOS

Automatisation de la compilation, de l'exécution des tests unitaires/fonctionnels ...

Page 21: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 21

Build

Page 22: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Targets

Gestion des targets sous Xcode :

✓ Une target pour chaque configuration de l’appli

✓ Un job Jenkins pour chaque target

22

Build

Page 23: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Cocoa Pods

Pour ne pas réinventer la roue... cette fois-ci :

✓ Plusieurs composants d’un projet iOS proviennent de bibliothèques open-source

Un dependency manager pour les projets Xcode :

✓ Cocoa Pods : dependency manager qui les intègre automatiquement les composants dans le projet

✓ Configuré à partir d’un fichier de texte : podfile

✓ Chaque target peut avoir des dépendances (ou des versions de dépandances) spécifiques

23

Build

Page 24: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

xcodebuild

Back to the CLI

✓ Le build est exécuté par un outil en ligne de commande : xcodebuild (fournie avec Xcode)

✓ Des wrappers simplifient la configuration de l’outil et permettent d’obtenir du «pretty-printing» (xctool by Facebook)

24

Build

Page 25: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 25

Tests Unitaires

Page 26: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

GHUnit

Une IHM pour les tests fonctionnels indépendante de l’IDE

✓ Avec GHUnit l’exécution des tests et la visualisation du résultat peuvent être réalisés sur un terminal ou dans le simulateur

Test asynchrones

✓ GHUnit supporte nativement l'exécution de tests asynchrones

Intégration avec Jenkins

✓ Exécution en ligne de commande avec output en format JUnit XML pour intégrer les rapports dans un Job Jenkins

26

TU

Page 27: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 27

Tests Fonctionnels

Page 28: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Cucumber

Tests écrits en langage naturel

✓ Cucumber exécute des tests fonctionnels décrits par un langage de description en format naturel et localisable : Gherkin

✓ Un test se compose d’une liste de steps, qui composent un scénario. Plusieurs scenarios forment un feature.

Ruby inside

✓ Chaque step Gherkin correspond à un block de code écrit en ruby

28

TF

Page 29: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Calabash-iOS

Une extension pour Cucumber

✓ Calabash-iOS intègre Cucumber dans iOS

✓ permet l'exécution des steps sur un terminal ou un simulateur

✓ enrichit les fonctions ruby sous-jacentes à Gherkin en ajoutant des méthodes comme touch, swipe, scroll, etc

Rapports détaillés

✓ Les résultats d'un test Calabash peuvent être enregistrés sous forme de fichier HTML, JSON ou JUnit XML et être facilement intégrés dans Jenkins

29

TF

Page 30: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

| 30

Analyse

Page 31: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Couverture du code

Le bon vieux gcov..

✓ Les métriques de couverture du code sont fournies par le compilateur, qui produit des fichiers en format gcov

Intégration dans Jenkins

✓ Grâce à gconv il est possible de convertir les rapports en format Cobertura XML pour les intégrer facilement dans Jenkins

31

Page 32: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Visualisation des rapports des Tests Fonctionnels

Une extension pour Cucumber

✓ Si on décide d'enregistrer les résultats sous forme de JSON, il est très simple de construire un visualiseur de rapports afin de présenter les résultats des tests de façon plus intuitive et interactive

32

Page 33: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Démo

33

Démo

Page 34: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Vers le déploiement continuTestFlight pour Android & iOS

34

Page 35: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

Déploiement continu

Build, tests, analyse et .... déploiement

✓ A chaque instant, mettre à disposition ses applications aux utilisateurs tests

✓ Récupération des retours utilisateurs au plus tôt

Déploiement continu facile avec Jenkins et Testflight

✓ Plugin Testflight

35

Deploy

Page 36: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

|

TestFlight

36

Deploy

Builds et utilisateurs

Gérer ses builds (Dev, RCT, etc.) et

ses accès utilisateurs par projet

Crashs et logs à distance

Accéder sur le portail TestFlight aux logs et crashs remontés par vos applications « Analytics »

Temps moyen des sessions de tests,

types de terminaux ou d’OS..

« Checkpoints » et A/B Testing

Définition de checkpoints dans votre application pour savoir si vos

fonctionnalités sont accédées. Egalement

Sur iOS & Android !

Page 37: Open XKE - De l'intégration continue au déploiement continu sur iOS et Android par Thibaud Cavin, Simone Civetta & Thomas Guerin

Merci


Recommended