REX un an de testing E2E
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
XL Release
2
• Un outil de release management
• Un mélange entre...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
3
• Début au studio en mars 2013
• V1 en septembre 2013
• Online...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
4
• Approche ATDD dès le début
• ATDD : Acceptance test driven d...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
5
• CasperJS
• Basé sur PhantomJS
Choix du framework E2E en 2013...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
6
Javascript ou bien ?
CoffeeScript !
• Parce que c’est plus fac...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
7
• Interactions minimalistes
• Assertions CSS
Comment tester en...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
8
• Mocker le backend ?
• Ou bien tester aussi le backend ?
Et l...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
9
Au début un script d’insertion de données
Oui, mais alors les ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
10
Insertion des données locale à chaque test :
Oui, mais alors ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
11
• Au début : c’est très rapide
• Et puis ça devient lent… 15 ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
12
Demo time !
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
13
• Cauchemar de maintenance :
Quand les tests se compliquent
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
14
• À l’utilisation :
Le pattern “Page object”
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
15
Implémenter un “Page object”
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
16
Le “Page object”
+BDD
+Rend les tests plus lisibles
+Permet d...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
17
• Formulaires
Les features qui se testent bien
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
18
• Monitoring temps réel
Les features plus difficiles à tester
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
19
• Dates
Les features plus difficiles à tester
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
20
• Le Drag & Drop
Les features très dures à tester
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
21
• Deployit/XL Deploy, Jenkins, Jira
• Mocké avec un NodeJS + ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
22
La triche
• Comment “hi-jacker” certains services
AngularJS p...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
23
Protractor ?
• Fin 2013 :
• Angular Scenario stagne
• Protrac...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
24
Angular Scenario VS Protractor
• Angular Scenario
est simple ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
25
Angular Scenario VS Protractor
• Très rapide
• Simpliste
• Pl...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
26
Protractor comment le vendre ?
• Notre PO réussit à vendre le...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
27
Protractor : les difficultés
• Protractor n’aimait pas trop C...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
28
Protractor : comment y passer ?
• S’appuyer sur le “page obje...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
29
Demo time !
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
30
Captures d’écran automatisées
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
31
Captures d’écran automatisées
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
32
Captures d’écran automatisées
• Interroger les dimensions de ...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
33
Captures d’écran automatisées
• Au final ?
+ Un jeu de donnée...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
34
Notre avis sur Protractor
+ Projet assez actif et réceptif au...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
35
Le testing E2E
+ Efficace
• Permet de tester les cas nominaux...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
36
Le testing E2E
- Coûteux en temps de build :
• > 20 minutes p...
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
37
Questions
?
Merci!
Prochain SlideShare
Chargement dans…5
×

Rex E2E

310 vues

Publié le

Rex sur un an de Testing E2E

Publié dans : Logiciels
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
310
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4
Actions
Partages
0
Téléchargements
7
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Rex E2E

  1. 1. REX un an de testing E2E
  2. 2. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC XL Release 2 • Un outil de release management • Un mélange entre Jenkins et Trello
  3. 3. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 3 • Début au studio en mars 2013 • V1 en septembre 2013 • Online trial en janvier 2014 Quelques dates et chiffres • 32 sprints de deux semaines • 4000+ commits • 21 000+ lignes de Java • 8 000+ lignes de JavaScript • 8 000+ lignes de Html/Less
  4. 4. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 4 • Approche ATDD dès le début • ATDD : Acceptance test driven development Le Test sur XL Release • 400+ tests E2E • 1000+ TU Java • 900+ TU JS E2E Unit
  5. 5. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 5 • CasperJS • Basé sur PhantomJS Choix du framework E2E en 2013 • ZombieJS • Émule un navigateur web en JS • Karma + Angular Scenario • Prévu pour AngularJS • Permet de tester sur des vrais navigateurs
  6. 6. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 6 Javascript ou bien ? CoffeeScript ! • Parce que c’est plus facile à lire • Parce que c’est plus facile à écrire • Parce que c’est plus simple pour faire des classes
  7. 7. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 7 • Interactions minimalistes • Assertions CSS Comment tester en E2E ?
  8. 8. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 8 • Mocker le backend ? • Ou bien tester aussi le backend ? Et le backend ? • Pour XL Release : approche ATDD • -> On teste aussi le backend
  9. 9. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 9 Au début un script d’insertion de données Oui, mais alors les données ? • Très rapidement, cela devient une gageure • Les tests dépendent entre eux • Il est impossible de lancer un seul test • Les merges des données de tests :(
  10. 10. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 10 Insertion des données locale à chaque test : Oui, mais alors les données ? Suppression automatique à la fin du test Via une API de fixtures dédiée
  11. 11. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 11 • Au début : c’est très rapide • Et puis ça devient lent… 15 secondes par test Et ça va vite ? • Comment aller plus vite : • Ne faire que de la navigation in-page : pas de rafraîchissement complet • Utiliser Chrome : c’est plus rapide que PhantomJS !
  12. 12. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 12 Demo time !
  13. 13. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 13 • Cauchemar de maintenance : Quand les tests se compliquent
  14. 14. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 14 • À l’utilisation : Le pattern “Page object”
  15. 15. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 15 Implémenter un “Page object”
  16. 16. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 16 Le “Page object” +BDD +Rend les tests plus lisibles +Permet de séparer le test métier de son implémentation dans la page HTML +Facilite la factorisation des interactions et des assertions - Ne produit pas d’erreurs plus faciles à lire
  17. 17. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 17 • Formulaires Les features qui se testent bien
  18. 18. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 18 • Monitoring temps réel Les features plus difficiles à tester
  19. 19. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 19 • Dates Les features plus difficiles à tester
  20. 20. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 20 • Le Drag & Drop Les features très dures à tester
  21. 21. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 21 • Deployit/XL Deploy, Jenkins, Jira • Mocké avec un NodeJS + Express • LDAP • Mocké avec NodeJS + LdapJS -> Node Fake API lancé pendant les tests Et les dépendances externes ?
  22. 22. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 22 La triche • Comment “hi-jacker” certains services AngularJS pendant les tests :
  23. 23. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 23 Protractor ? • Fin 2013 : • Angular Scenario stagne • Protractor devient l’outil recommandé • Tous nos tests (300+) sont écrits pour Karma / Angular Scenario • Que faire ?
  24. 24. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 24 Angular Scenario VS Protractor • Angular Scenario est simple : il pilote une application AngularJS dans une IFrame via JQuery • Protractor est basé sur WebDriverJS, lui même basé sur Selenium : il pilote le navigateur via le driver Selenium
  25. 25. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 25 Angular Scenario VS Protractor • Très rapide • Simpliste • Plus lent • Plus riche : • Permet le D&D • Permet les captures d’écran
  26. 26. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 26 Protractor comment le vendre ? • Notre PO réussit à vendre le passage à Protractor pour un nouveau besoin : • Générer automatiquement les captures d’écran de la documentation !
  27. 27. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 27 Protractor : les difficultés • Protractor n’aimait pas trop CoffeeScript au début • Protractor tourne dans NodeJS : un niveau d’asynchronisme en plus • Lenteurs : • Pour le même test : • 3/4 secondes avec Angular Scenario • 7/10 secondes avec Protractor
  28. 28. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 28 Protractor : comment y passer ? • S’appuyer sur le “page object” • Ré-implémenter nos pages objects pour Protractor • Ré-utiliser les tests • Ré-implémenter le mécanisme de fixtures en Node • Make it work !
  29. 29. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 29 Demo time !
  30. 30. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 30 Captures d’écran automatisées
  31. 31. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 31 Captures d’écran automatisées
  32. 32. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 32 Captures d’écran automatisées • Interroger les dimensions de chaque composant via JQuery • Calculer le rectangle englobant • Capturer toute la page avec Protractor • Demander à Image Magick de retailler l’image en fonction des dimensions
  33. 33. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 33 Captures d’écran automatisées • Au final ? + Un jeu de données stable : des captures qui suivent les évolutions du produit + Des captures avec des dates à jour! - Nécessite de refaire une vérification manuelle sur les captures. - Race condition sur le cropping à résoudre !
  34. 34. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 34 Notre avis sur Protractor + Projet assez actif et réceptif aux PRs ~ Beaucoup plus réaliste : ne permet pas de prendre des raccourcis : clic sur un élément invisible ~ Asynchronisme avec Angular JS - Déboggage assez difficile : • Trop verbeux ou pas assez: parfois pas d’affichage du sélecteur CSS en erreur - Performances
  35. 35. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 35 Le testing E2E + Efficace • Permet de tester les cas nominaux d’une User story + Assez stable aux changements dans l’interface - Sensible aux problèmes de concurrence : • Attention aux “Heisentests” !
  36. 36. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 36 Le testing E2E - Coûteux en temps de build : • > 20 minutes pour 400 tests • Ne tester que les cas nominaux, les cas particuliers sont à tester unitairement !
  37. 37. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 37 Questions ?
  38. 38. Merci!

×