SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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 Jenkins et Trello
• 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
• 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
• 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
• 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
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
7
• Interactions minimalistes
• Assertions CSS
Comment tester en E2E ?
• 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
• 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 :(
• 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
• 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 !
• 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 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
• 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 + Express
• LDAP
• Mocké avec NodeJS + LdapJS
-> Node Fake API lancé pendant les tests
Et les dépendances externes ?
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
22
La triche
• Comment “hi-jacker” certains services
AngularJS pendant les tests :
• 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 ?
• 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
• 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
• 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 !
• 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
• 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 !
• 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 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
• 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 !
• 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
• 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” !
• 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 !
• EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC
37
Questions
?
Merci!

Weitere ähnliche Inhalte

Andere mochten auch

Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endFrançois Petitit
 
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Codemotion
 
Сергей Больщиков "Protractor Tips & Tricks"
Сергей Больщиков "Protractor Tips & Tricks"Сергей Больщиков "Protractor Tips & Tricks"
Сергей Больщиков "Protractor Tips & Tricks"Fwdays
 
ATAGTR2017 Protractor Cucumber BDD Approach
ATAGTR2017 Protractor Cucumber BDD ApproachATAGTR2017 Protractor Cucumber BDD Approach
ATAGTR2017 Protractor Cucumber BDD ApproachAgile Testing Alliance
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Tests ihm automatises avec selenium
Tests ihm automatises avec seleniumTests ihm automatises avec selenium
Tests ihm automatises avec seleniumsojavawest
 

Andere mochten auch (7)

Octo Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-endOcto Technology - Refcard Tests Web front-end
Octo Technology - Refcard Tests Web front-end
 
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
Carmen Popoviciu - Protractor styleguide | Codemotion Milan 2015
 
Protractor: Tips & Tricks
Protractor: Tips & TricksProtractor: Tips & Tricks
Protractor: Tips & Tricks
 
Сергей Больщиков "Protractor Tips & Tricks"
Сергей Больщиков "Protractor Tips & Tricks"Сергей Больщиков "Protractor Tips & Tricks"
Сергей Больщиков "Protractor Tips & Tricks"
 
ATAGTR2017 Protractor Cucumber BDD Approach
ATAGTR2017 Protractor Cucumber BDD ApproachATAGTR2017 Protractor Cucumber BDD Approach
ATAGTR2017 Protractor Cucumber BDD Approach
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Tests ihm automatises avec selenium
Tests ihm automatises avec seleniumTests ihm automatises avec selenium
Tests ihm automatises avec selenium
 

Ähnlich wie Rex E2E

What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015Wisembly
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...TheFamily
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Camille Roux
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Camille Roux
 
Trucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidTrucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidThierry-Dimitri Roy
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerGeeks Anonymes
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesFrederic Leger
 
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
 
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
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontZenika
 
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...kevinroulleau
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jGabriel Pillet 🐙
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Parisdavrous
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015gaelmetais
 

Ähnlich wie Rex E2E (20)

ReactiveX
ReactiveXReactiveX
ReactiveX
 
What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015What we've learnt from Ember.js - The family talk april 2015
What we've learnt from Ember.js - The family talk april 2015
 
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot..."What we've learnt from Ember.js developing our new product" by Guillaume Pot...
"What we've learnt from Ember.js developing our new product" by Guillaume Pot...
 
BackDay Xebia : Microservices en démo
BackDay Xebia : Microservices en démoBackDay Xebia : Microservices en démo
BackDay Xebia : Microservices en démo
 
Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)Pourquoi rails est génial? (version longue)
Pourquoi rails est génial? (version longue)
 
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
Pourquoi Ruby on Rails est génial? (d'un point de vue non technique)
 
The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014
 
Trucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment AndroidTrucs et astuces sur le dévelopment Android
Trucs et astuces sur le dévelopment Android
 
Jenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagnerJenkins - perdre du temps pour en gagner
Jenkins - perdre du temps pour en gagner
 
Javascript proprement
Javascript proprementJavascript proprement
Javascript proprement
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
 
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...
 
La performance sur mobile
La performance sur mobileLa performance sur mobile
La performance sur mobile
 
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
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
Paris Test conf - Kevin Roulleau - E2E tests on mobile native app, a successf...
 
Importer 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4jImporter 500 millions de données de MySQL vers Neo4j
Importer 500 millions de données de MySQL vers Neo4j
 
Babylon.js WebGL Paris
Babylon.js  WebGL ParisBabylon.js  WebGL Paris
Babylon.js WebGL Paris
 
YLT paris js - mars 2015
YLT paris js - mars 2015YLT paris js - mars 2015
YLT paris js - mars 2015
 

Rex E2E

  • 1. REX un an de testing E2E
  • 2. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC XL Release 2 • Un outil de release management • Un mélange entre Jenkins et Trello
  • 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. • 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. • 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. • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 7 • Interactions minimalistes • Assertions CSS Comment tester en E2E ?
  • 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. • 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. • 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. • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 12 Demo time !
  • 13. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 13 • Cauchemar de maintenance : Quand les tests se compliquent
  • 14. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 14 • À l’utilisation : Le pattern “Page object”
  • 15. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 15 Implémenter un “Page object”
  • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 17 • Formulaires Les features qui se testent bien
  • 18. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 18 • Monitoring temps réel Les features plus difficiles à tester
  • 19. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 19 • Dates Les features plus difficiles à tester
  • 20. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 20 • Le Drag & Drop Les features très dures à tester
  • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 22 La triche • Comment “hi-jacker” certains services AngularJS pendant les tests :
  • 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. • 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. • 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. • 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. • 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. • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 29 Demo time !
  • 30. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 30 Captures d’écran automatisées
  • 31. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 31 Captures d’écran automatisées
  • 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. • 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. • 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. • 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. • 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. • EBIA ALLIANCE = XEBIA + XEBIALABS + THIGA + UX REPUBLIC 37 Questions ?