Mieux vivre avec ses testsdacceptancepar Khanh Tuong Maudoux@jetoile1
Mieux vivre avec ses tests d’acceptanceAu programme…• Les protagonistes– Cucumber JVM– Selenium 2– FluentLenium• Mise en œ...
Mieux vivre avec ses tests d’acceptanceQui je suis…• Khanh Tuong Maudoux• Développeur Java indépendant• blog : http://blog...
Mieux vivre avec ses tests d’acceptanceLes protagonistes4
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM5
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM6• BDD (Behavior Driven Development)
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM7• Notions :– Feature– Scénario– Step
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM8• Step et Fixture• 5 types :– Given– When– Then– And–...
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM9• Step « simple »
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM10• Step « paramétrée »
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM11• Table
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM12• Scenario Outline
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM13• Utilisation– Runner JUnit
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM14• Utilisation– Maven
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM15• Utilisation– IDE
Mieux vivre avec ses tests d’acceptanceLes protagonistesCucumber JVM16• Mais…– Pas d’héritage entre classes de Step⇒utilis...
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium17
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium18• Selenium IDE• WebDriver• Selenium Server
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium19• Exemple :
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium20• Page Object Pattern (1/2) :
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium21• Page Object Pattern (2/2) :
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium22• Mais…– Selenium IDE : à oublier!– Verbeux⇒Page Object ...
Mieux vivre avec ses tests d’acceptanceLes protagonistesSelenium23• Mais…– WebDriver Hell⇒Compatibilité⇒Options⇒Bridge (Ch...
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium24
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium25• Surcouche de Selenium– Fluent API– Page Object Pat...
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium26• Page (FluentPage)
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium27• Test (FluentTest)
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium28• Test (FluentTest)
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium29• Fluent API (1/2) :
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium30• Fluent API (2/2) :
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium31• Extensible– FluentAdapter• initFluent()• initTest(...
Mieux vivre avec ses tests d’acceptanceLes protagonistesFluentLenium32• Mais…– JUnit/TestNG– Pas multi navigateur– Pas env...
Mieux vivre avec ses tests d’acceptanceMise en œuvre33
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes34
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes35• Selenium– RAS modulo les WebDriver…
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes36• FluentLenium– 1 méthode = 1 test
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes problèmes37• Cucumber JVM– 1 méthode par step– Les steps d’un scén...
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes solutions38
Mieux vivre avec ses tests d’acceptanceMise en œuvreLes solutions39• Mise en œuvre :– FluentCucumberTest– Nouvelles annota...
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat40
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat41• Test Simple
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat42• Test Simple
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat43• Test Simple
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat44• Test multi navigateur
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat45• Test multi navigateur
Mieux vivre avec ses tests d’acceptanceMise en œuvreLe résultat46• Test multi navigateur
Mieux vivre avec ses tests d’acceptanceConclusionCool !47
Mieux vivre avec ses tests d’acceptanceConclusion• Code :– https://github.com/jetoile/sample-cucumber• FluentLenium– http:...
Mieux vivre avec ses tests d’acceptanceQuestions ?49
Mieux vivre avec ses tests d’acceptanceMerci !50
Prochain SlideShare
Chargement dans…5
×

Comment mieux vivre avec ses tests d'acceptance

4 117 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
4 117
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2 936
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

×