Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

694 views

Published on

Those are the slides I presented on November the 21st. I go through technical aspects about implementing end to end tests for the happn application, and personal development practices that helped me in my professional life.

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. NATIVE MOBILE E2E TESTS IN JS HAPPN
  2. 2. PLAN 1. Automatiser des apps mobiles natives avec Javascript 2. Intégration dans Jenkins 3. Développement personnel et contributions open source
  3. 3. 1. AUTOMATISER DES APPS MOBILES AVEC JAVASCRIPT
  4. 4. HAPPN D’UN POINT DE VUE TECHNIQUE • 2 apps natives (iOS & Android) • Géoloc • FB / SMS auth • Nombreuses interractions avec d’autres utilisateurs
  5. 5. 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
  6. 6. CHOIX TECHNIQUES
  7. 7. APPIUM • Permet de faire du iOS et Android • Protocole standard • Open source
  8. 8. 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)
  9. 9. CUCUMBER • Permet de se poser les bonnes questions • Rend plus accessible la lecture et l’écriture des scenario de test
  10. 10. Happn E2E tests ARCHITECTURE DU CODE Happn Backend iOS /
 Android
  11. 11. Happn E2E tests ARCHITECTURE DU CODE Appium server Happn Backend iOS /
 Android Native cmd
  12. 12. Happn E2E tests ARCHITECTURE DU CODE Appium server Happn Backend Click, swipe .. iOS /
 Android Webdriverio Native cmd
  13. 13. Happn E2E tests ARCHITECTURE DU CODE Appium server Happn Backend Click, swipe .. iOS /
 Android Webdriverio Page Objects Native cmd
  14. 14. 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
  15. 15. 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
  16. 16. 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
  17. 17. 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
  18. 18. INTÉGRATION AVEC CUCUMBER
  19. 19. RAPPEL: FONCTIONNEMENT DE CUCUMBER
  20. 20. EXEMPLE CONCRET
  21. 21. EXEMPLE CONCRET
  22. 22. AUTRE EXEMPLE
  23. 23. AUTRE EXEMPLE
  24. 24. 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 ..
  25. 25. Démo
  26. 26. 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
  27. 27. 2. INTÉGRATION DANS JENKINS
  28. 28. VUE D’ENSEMBLE
  29. 29. VUE D’ENSEMBLE Projet automatisation Local mac
  30. 30. VUE D’ENSEMBLE GitHub Projet automatisation Git push Local mac
  31. 31. VUE D’ENSEMBLE GitHub Projet automatisation Git push Local mac Jenkins - Pod0 Job unit tests
  32. 32. VUE D’ENSEMBLE GitHub Projet automatisation Git push Local mac Jenkins - Pod0 Jenkins - Pod0 Job Android alpha Job unit tests
  33. 33. 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>
  34. 34. 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>
  35. 35. 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>
  36. 36. 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>
  37. 37. 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>
  38. 38. AU PASSAGE Auteur du package « sauce-storage » • Sans dépendances • https://www.npmjs.com/package/sauce- storage
  39. 39. JENKINS DECLARATIVE PIPELINES
  40. 40. JENKINS DECLARATIVE PIPELINES
  41. 41. JENKINS DECLARATIVE PIPELINES
  42. 42. JENKINS DECLARATIVE PIPELINES
  43. 43. JENKINS DECLARATIVE PIPELINES
  44. 44. CONCLUSION PARTIE 2. • Lire la documentation • Faire le moins de groovy possible • Se limiter autant que possible aux declarative pipelines
  45. 45. 3. DÉVELOPPEMENT PERSONNEL ET CONTRIBUTION OPEN SOURCE OU DE L’IMPORTANCE DE TRAVAILLER SON IMAGE DE SOI
  46. 46. 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 »
  47. 47. 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
  48. 48. PROBLÈME: CA NE VIENT PAS DE MON CODE
  49. 49. 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
  50. 50. 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)
  51. 51. VERS L’INFINI ET AU DELÀ • Et depuis des contributions multiples à la V5 de Webdriverio, ainsi qu’à Appium
  52. 52. Merci

×