SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
NATIVE MOBILE E2E TESTS IN JS
HAPPN
PLAN
1. Automatiser des apps mobiles natives
avec Javascript
2. Intégration dans Jenkins
3. Développement personnel et
contributions open source
1. AUTOMATISER DES APPS
MOBILES AVEC JAVASCRIPT
HAPPN D’UN
POINT DE VUE
TECHNIQUE
• 2 apps natives (iOS & Android)
• Géoloc
• FB / SMS auth
• Nombreuses interractions avec
d’autres utilisateurs
MOI, D’UN POINT DE VUE
TECHNIQUE
Oui :-)
Niveau correct en Nodejs
A bricolé du C# et Ruby
Niveau académique
(lointain) en C
Non :’(
Swift
Java
CHOIX TECHNIQUES
APPIUM
• Permet de faire du iOS et Android
• Protocole standard
• Open source
WEBDRIVERIO
• Framework complet (va bien au delà d’une
simple implem du protocole webdriver)
• Flexible (peut être utilisé avec Mocha, Jasmine
et Cucumber)
• Nodejs
• Possibilité d’écrire le code de manière
synchrone (fibers)
CUCUMBER
• Permet de se poser les bonnes questions
• Rend plus accessible la lecture et
l’écriture des scenario de test
Happn E2E tests
ARCHITECTURE DU CODE
Happn
Backend
iOS /

Android
Happn E2E tests
ARCHITECTURE DU CODE
Appium
server
Happn
Backend
iOS /

Android
Native
cmd
Happn E2E tests
ARCHITECTURE DU CODE
Appium
server
Happn
Backend
Click,
swipe ..
iOS /

Android
Webdriverio Native
cmd
Happn E2E tests
ARCHITECTURE DU CODE
Appium
server
Happn
Backend
Click,
swipe ..
iOS /

Android
Webdriverio
Page
Objects
Native
cmd
Happn E2E tests
ARCHITECTURE DU CODE
Appium
server
Happn
Backend
Click,
swipe ..
iOS /

Android
Webdriverio
Page
Objects
Bots
Create user, charm,
like, set prefs,
update position ..
Native
cmd
Happn E2E tests
ARCHITECTURE DU CODE
Appium
server
Happn
Backend
Click,
swipe ..
iOS /

Android
Webdriverio
Cucumber
•Features & scenarii
•Step definitions
•Hooks routines
Page
Objects
Bots
Create user, charm,
like, set prefs,
update position ..
require
Native
cmd
PATTERN “PAGEOBJECT”
page.js
profile-
list.page.js
home.page.js
• Basé sur de l’héritage
• Je me définis un contrat
• Je factorise mon code
• Le projet est lisible et
extensible
DES WIDGETS POUR GÉRER LES
LISTES
notifications.page.js
•Hérite de page.js
•Définit ses sélecteurs
•Contient les hacks éventuels liés

aux spécificités de cet écran
notification.widget.js
•Hérite de baseWidget.js
•Définit ses sélecteurs
•Implémente l’interface widget
INTÉGRATION AVEC CUCUMBER
RAPPEL: FONCTIONNEMENT DE
CUCUMBER
EXEMPLE CONCRET
EXEMPLE CONCRET
AUTRE EXEMPLE
AUTRE EXEMPLE
CUCUMBER PARTAGE L’ÉTAT DU
SCENARIO VIA LE « THIS » DES STEPS
• Step definitions très génériques et réutilisables
• Attention à savoir ce que vous manipulez et écrire
des scenario cohérents ..
Démo
CONCLUSION PARTIE 1.
• Très satisfait de Webdriverio et Appium
• Le pattern PageObject est simple et accessible,
en particulier sur mobile
• Cucumber rajoute de la bonne difficulté
• Projet vivant et grossissant, comme le produit
2. INTÉGRATION DANS JENKINS
VUE D’ENSEMBLE
VUE D’ENSEMBLE
Projet
automatisation
Local mac
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Job unit
tests
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
Job unit
tests
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
Job
ui_tests
Job unit
tests
Trigger
• mon.apk
• <branch>
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
Job
ui_tests
Git pull <branch>
Job unit
tests
Trigger
• mon.apk
• <branch>
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
.apk
GCS
Job
ui_tests
GCS
.apk
Git pull <branch>
Job unit
tests
Trigger
• mon.apk
• <branch>
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
.apk
GCS
Job
ui_tests
saucelabs.comGCS
.apk
Sauce
Storage
.apk
Git pull <branch>
Job unit
tests
Trigger
• mon.apk
• <branch>
VUE D’ENSEMBLE
GitHub
Projet
automatisation
Git push
Local mac Jenkins - Pod0
Jenkins - Pod0
Job
Android
alpha
.apk
GCS
Job
ui_tests
Android
emulators
saucelabs.comGCS
.apk
Sauce
Storage
.apk .apk
http
Git pull <branch>
Job unit
tests
Trigger
• mon.apk
• <branch>
AU PASSAGE
Auteur du package « sauce-storage »
• Sans dépendances
• https://www.npmjs.com/package/sauce-
storage
JENKINS DECLARATIVE PIPELINES
JENKINS DECLARATIVE PIPELINES
JENKINS DECLARATIVE PIPELINES
JENKINS DECLARATIVE PIPELINES
JENKINS DECLARATIVE PIPELINES
CONCLUSION PARTIE 2.
• Lire la documentation
• Faire le moins de groovy possible
• Se limiter autant que possible aux
declarative pipelines
3. DÉVELOPPEMENT PERSONNEL
ET CONTRIBUTION OPEN SOURCE
OU DE L’IMPORTANCE DE TRAVAILLER SON
IMAGE DE SOI
PRÉSENTATION DES RÉSULTATS
AVEC « ALLURE TEST REPORT»
• Outil open source permettant de présenter des
résultats de tests (http://allure.qatools.ru/)
• Webdriverio dispose d’un plugin « @wdio/
allure-reporter »
PROBLÈME: MES RÉSULTATS DE
TEST SONT FUSIONNÉS
• Couverture de iOS 11 & 12, Android 5, 6, 7, 8, 9
• Allure mélange tous les résultats et perd
l’information du device
PROBLÈME: CA NE VIENT PAS
DE MON CODE
PROBLÈME: JE SUIS UN « FAUX »
DEVELOPPEUR
• 5-6 ans de test fonctionnel
• En 2017 j’ai environ deux ans d’xp en
tant que dev
Aka syndrôme de

l’imposteur
SOLUTION: CE QUI M’A
APPORTÉ LE PLUS DE SOUTIEN
• Méditation (tous les jours)
• Hypnothérapie
• Pratique régulière d’ateliers de
Communication Non Violente (CNV)
VERS L’INFINI ET AU DELÀ
• Et depuis des contributions multiples à la
V5 de Webdriverio, ainsi qu’à Appium
Merci

Weitere ähnliche Inhalte

Was ist angesagt?

JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924Gregory Boissinot
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
Présentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaPrésentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaCocoaHeads France
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeadsRNS
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudsonxmacina
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsOCTO Technology
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ ekino
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Microsoft
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPATouchify
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaTest flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaCocoaHeads France
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeadsRNS
 

Was ist angesagt? (20)

REX react native
REX react nativeREX react native
REX react native
 
JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003JENKINS_BreizhJUG_20111003
JENKINS_BreizhJUG_20111003
 
JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924JENKINS_OWF11_OSDC_PARIS20110924
JENKINS_OWF11_OSDC_PARIS20110924
 
Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Présentation de Carthage par Simone Civetta
Présentation de Carthage par Simone CivettaPrésentation de Carthage par Simone Civetta
Présentation de Carthage par Simone Civetta
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par Celedev
 
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/HudsonSonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
SonarQube Manuel Automatisation d'analyse ANT JENKINS/Hudson
 
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIsPetit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
Petit déjeuner OCTO Technology - Nouvelles Architectures Web Front-End et APIs
 
Native script
Native scriptNative script
Native script
 
Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+ Symfony et Sonata Project chez Canal+
Symfony et Sonata Project chez Canal+
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
Grunt / Bower / Yeoman ou comment automatiser le développement d’un projet we...
 
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPAGrunt, Bower, Yeoman ou comment automatiser un projet web SPA
Grunt, Bower, Yeoman ou comment automatiser un projet web SPA
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaTest flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebia
 
Presentation
PresentationPresentation
Presentation
 
CocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & AndroidCocoaHeads Rennes #5 : iOS & Android
CocoaHeads Rennes #5 : iOS & Android
 

Ähnlich wie Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successfull story

CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptxMEDOBEST1
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Thierry Régagnon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinThierry Buisson
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3Benoit Fillon
 
Microservices based application development with Docker (French)
Microservices based application development with Docker (French)Microservices based application development with Docker (French)
Microservices based application development with Docker (French)Cédric Villa
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsThomas Bassetto
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueAZUG FR
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720Romain Linsolas
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Celinio Fernandes
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 

Ähnlich wie Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successfull story (20)

CI-Jenkins.pptx
CI-Jenkins.pptxCI-Jenkins.pptx
CI-Jenkins.pptx
 
Maven
MavenMaven
Maven
 
La Rochelle workshop 2016
La Rochelle workshop 2016La Rochelle workshop 2016
La Rochelle workshop 2016
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2Développement web mobile avec IONIC 2
Développement web mobile avec IONIC 2
 
Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)Le Kit du Parfait Petit Intégrateur (PW2009)
Le Kit du Parfait Petit Intégrateur (PW2009)
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
 
Microservices based application development with Docker (French)
Microservices based application development with Docker (French)Microservices based application development with Docker (French)
Microservices based application development with Docker (French)
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
L'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objetsL'Open Web en tant que pierre angulaire du développement multi-objets
L'Open Web en tant que pierre angulaire du développement multi-objets
 
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et DerueGab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
Gab17 lyon-Docker pour quoi faire - Cédric Leblond et Derue
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 

Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successfull story