Comment mieux vivre avec ses tests d'acceptance

5 046 vues

Publié le

Présentation sur l'integration de Cucumber JVM, Selenium et FluentLenium pour réaliser des tests d'acceptance sur une application web

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

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
5 046
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3 009
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Comment mieux vivre avec ses tests d'acceptance

  1. 1. Mieux vivre avec ses testsdacceptancepar Khanh Tuong Maudoux@jetoile1
  2. 2. Mieux vivre avec ses tests d’acceptanceAu programme…• Les protagonistes– Cucumber JVM– Selenium 2– FluentLenium• Mise en œuvre– Les problèmes– Les solutions– Le résultat2
  3. 3. Mieux vivre avec ses tests d’acceptanceQui je suis…• Khanh Tuong Maudoux• Développeur Java indépendant• blog : http://blog.jetoile.fr• @jetoile• khanh.maudoux@jetoile.fr3
  4. 4. Mieux vivre avec ses tests d’acceptanceLes protagonistes4
  5. 5. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM5
  6. 6. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM6• BDD (Behavior Driven Development)
  7. 7. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM7• Notions :– Feature– Scénario– Step
  8. 8. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM8• Step et Fixture• 5 types :– Given– When– Then– And– But
  9. 9. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM9• Step « simple »
  10. 10. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM10• Step « paramétrée »
  11. 11. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM11• Table
  12. 12. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM12• Scenario Outline
  13. 13. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM13• Utilisation– Runner JUnit
  14. 14. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM14• Utilisation– Maven
  15. 15. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM15• Utilisation– IDE
  16. 16. Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM16• Mais…– Pas d’héritage entre classes de Step⇒utilisation de l’injection– Instanciation de toutes les classes de Step– Step Hell– Peu de choses⇒Obligé de réécrire les fixtures– Pas de partage entre Step⇒Variable statique ou injection
  17. 17. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium17
  18. 18. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium18• Selenium IDE• WebDriver• Selenium Server
  19. 19. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium19• Exemple :
  20. 20. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium20• Page Object Pattern (1/2) :
  21. 21. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium21• Page Object Pattern (2/2) :
  22. 22. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium22• Mais…– Selenium IDE : à oublier!– Verbeux⇒Page Object Pattern– Difficilement maintenable⇒Obligé de fournir une surcouche
  23. 23. Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium23• Mais…– WebDriver Hell⇒Compatibilité⇒Options⇒Bridge (ChromeDriver, …)– [Selenium Server] Les agents– Attention à la version (ex : upgrade Firefox)
  24. 24. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium24
  25. 25. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium25• Surcouche de Selenium– Fluent API– Page Object Pattern
  26. 26. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium26• Page (FluentPage)
  27. 27. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium27• Test (FluentTest)
  28. 28. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium28• Test (FluentTest)
  29. 29. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium29• Fluent API (1/2) :
  30. 30. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium30• Fluent API (2/2) :
  31. 31. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium31• Extensible– FluentAdapter• initFluent()• initTest()• Nouvelles annotations– @SharedDriver(type=SharedDriver.PER_CLASS)– @SharedDriver(type=SharedDriver.ONCE)– @SharedDriver(type=SharedDriver.PER_METHOD)
  32. 32. Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium32• Mais…– JUnit/TestNG– Pas multi navigateur– Pas envisageable pour un « recetteur »
  33. 33. Mieux vivre avec ses tests d’acceptanceMise en œuvre33
  34. 34. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes34
  35. 35. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes35• Selenium– RAS modulo les WebDriver…
  36. 36. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes36• FluentLenium– 1 méthode = 1 test
  37. 37. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes37• Cucumber JVM– 1 méthode par step– Les steps d’un scénario peuvent être dans différentesclasses– Pas d’héritage mais de l’injection– Instanciation des classes au démarrage
  38. 38. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes solutions38
  39. 39. Mieux vivre avec ses tests d’acceptanceMise en œuvreLes solutions39• Mise en œuvre :– FluentCucumberTest– Nouvelles annotations• @SharedDriver(type = SharedDriver.PER_FEATURE)• @SharedDriver(type = SharedDriver.PER_SCENARIO)– Scénario Outline
  40. 40. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat40
  41. 41. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat41• Test Simple
  42. 42. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat42• Test Simple
  43. 43. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat43• Test Simple
  44. 44. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat44• Test multi navigateur
  45. 45. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat45• Test multi navigateur
  46. 46. Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat46• Test multi navigateur
  47. 47. Mieux vivre avec ses tests d’acceptanceConclusionCool !47
  48. 48. Mieux vivre avec ses tests d’acceptanceConclusion• Code :– https://github.com/jetoile/sample-cucumber• FluentLenium– http://fluentlenium.org/– http://fr.slideshare.net/MathildeLemee/fluentlenium• Cucumber JVM– https://github.com/cucumber/cucumber-jvm• Selenium– http://docs.seleniumhq.org/48
  49. 49. Mieux vivre avec ses tests d’acceptanceQuestions ?49
  50. 50. Mieux vivre avec ses tests d’acceptanceMerci !50

×