Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

TDD avec ou sans mock

S'il est facile de comprendre l'intérêt d'un code bien testé, la mise en œuvre de tests se heurte souvent au problème des dépendances du code testé : comment s'abstraire de ces dépendances ?
A travers une présentation pratique, où Stéphane Malbéqui, Yannick Ameur et Anthony Dahanne rencontreront et résoudrons plusieurs obstacles à la mise en oeuvre de tests untiataires, vous découvrirez à travers un cas concret la mise en œuvre de TDD !

  • Identifiez-vous pour voir les commentaires

  • Soyez le premier à aimer ceci

TDD avec ou sans mock

  1. 1. TDD : avec ou sans Mocks ? Par Anthony Dahanne, Yannick Ameur, Stéphane Malbéqui http://blog.valtech.fr
  2. 2. Sommaire de la présentation <ul><li>Qu'est ce qu'un Test Unitaire
  3. 3. Problèmes de dépendances de couches
  4. 4. Plusieurs façons d'y remédier : </li><ul><li>Sans bouchonner
  5. 5. En bouchonnant </li></ul><li>Faut il utiliser un framework de mocks ?
  6. 6. TDD : pourquoi et comment ?
  7. 7. Conclusion </li></ul>
  8. 8. Qu'est ce qu'un test unitaire ? <ul><li>Un test unitaire est du code technique qui teste une petite partie de code fonctionnel telle qu’une classe ou une méthode
  9. 9. Un test unitaire doit être </li><ul><li>indépendant
  10. 10. répétable
  11. 11. simple et rapide à développer et à exécuter
  12. 12. exécutable automatiquement </li></ul></ul>
  13. 13. Problèmes rencontrés... <ul><li>Les applications sont généralement architecturées « en couches »
  14. 14. Ce qui induit des dépendances entre composants et des difficultés à tester </li><ul><li>Lenteur de la dépendance (base de données)
  15. 15. Pas d'accès à la dépendance (composant non disponible)
  16. 16. Comportement non déterministe (temps réel) </li></ul><li>Comment tester du code indépendamment des autres couches ? </li></ul>
  17. 17. Solution <ul><li>Injection des dépendances! </li></ul>
  18. 18. Sans utiliser un framework de Mocks <ul><li>En utilisant des classes anonymes! </li><ul><li>Héritent de ou implémentent la dépendance
  19. 19. En surchargeant les méthodes dont on a besoin </li></ul><li>Orchestrer son code autour de la dépendance </li><ul><li>Extraire le code avant et après l'appel à la dépendance
  20. 20. Ne tester uniquement les méthodes extraites </li></ul></ul>
  21. 21. Un Framework de Mocks ? <ul><li>Pour faciliter la simulation des dépendances </li><ul><li>Sans passer par une classe anonyme
  22. 22. Sans découper le code autour de la dépendance </li></ul><li>Pour vérifier que la dépendance a été correctement utilisée </li><ul><li>Que l'on bien appelé methodeA() 2 fois
  23. 23. Que l'on a bien appelé methodeB(paramA) avec la valeur attendue de paramA </li></ul></ul>
  24. 24. Utilisation d'un framework de mocks <ul><li>Création du mock (create dans EasyMock)
  25. 25. Configuration du mock (expect et return dans EM)
  26. 26. Injection du mock dans la classe testée
  27. 27. Enregistrement du mock (replay dans EM)
  28. 28. Éventuellement, vérification (verify dans EM) </li></ul>
  29. 29. TDD : pourquoi et comment ? <ul><li>Introduit en 1999 par Kent Beck
  30. 30. Si je sais tester mon code, alors je sais l'implémenter !
  31. 31. D'abord faire échouer le test, ensuite écrire une première implémentation </li></ul>
  32. 32. Conclusion <ul><li>Choisir une architecture facilitant les tests
  33. 33. Tester de manière unitaire et découplée
  34. 34. Privilégier les frameworks de tests </li><ul><li>Tests souvent plus faciles à maintenir
  35. 35. Couverture des tests possibles à 100%
  36. 36. Cependant, pas toujours indispensables (cas simples) </li></ul></ul>
  37. 37. Aller Plus loin ! <ul><li>Frameworks de tests unitaires : </li><ul><li>JUnit, TestNG (Java),
  38. 38. MbUnit, Nunit, MsTest (.NET),
  39. 39. TestUnit (Ruby)
  40. 40. PhpUnit (PHP) </li></ul><li>Frameworks de Mocks Objects : </li><ul><li>EasyMock, Moquito (Java),
  41. 41. RhynoMock (.NET),
  42. 42. Mocha (Ruby) </li></ul><li>TDD : </li><ul><li>Pragmatic unit testing with Java & JUNit, Dave Thomas
  43. 43. Test Driven Development by example, Kent Beck
  44. 44. MockObjects.com/book </li></ul></ul>

×