Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Le pilotage par les tests

4,041 views

Published on

Ces slides sont ceux d'une conférence donnée lors de l'Agile tour Toulouse 2011 et de l'Agile Tour Montpellier 2011 sur le pilotage par les tests.

Published in: Technology
  • Be the first to comment

Le pilotage par les tests

  1. 1. Le pilotage par les tests Mise en pratique et retour d’expérience
  2. 2. Merci à nos sponsors !
  3. 3. Moi… Jérôme Avoustin .NET, Agilité, Performance @JeromeAvoustinhttp://blog.avoustin.com Agilité, AMOA, .NET, SharePoint http://www.smartview.fr
  4. 4. De quoi va-t-on parler ? Given Emergent DesignBusiness A Cucumber Needs Qualité TBDDTests xBehave Unit Red TDDxUnit d’acceptance D Green D Refactoring Tests When Then Spec
  5. 5. De quoi va-t-on parler ? Given Emergent DesignBusiness A Cucumber Needs Qualité TBDDTests xBehave Unit Red TDDxUnit d’acceptance D Green D Refactoring Tests When Then Spec
  6. 6. C’est quoi la Qualité ?
  7. 7. Sur le web
  8. 8. Sur twitter Any fool can write code that a computer can understand. Good programmers write code that humans can understand. Martin FowlerCodez toujours en pensant que celui qui maintiendra votrecode est un psychopathe qui connait votre adresse.Martin Golding My project is 90% done. I hope the second half goes as well. Scott W. AmblerJ’écris des tests qui passent avant d’avoir écrit le code.Chuck Norris
  9. 9. Sur WikipediaAptitude d’un ensemble de caractéristiques intrinsèques àsatisfaire les besoins exprimés ou potentiels des utilisateurs. Niveau de finition ou de perfection d’exécution d’une action ou d’un produit.
  10. 10. Une autre proposition…Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable.
  11. 11. Une autre proposition… Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable.Coût Temps
  12. 12. Les types de dette Code TestsObsolescence Besoins
  13. 13. Pourquoi automatiser le test ?
  14. 14. Les stratégies de testPas de tests Test-after Test-first TDD
  15. 15. Un peu de philo Validation du codeT est Centré sur le besoinD riven Design émergentD evelopment esign Refactoring intensif
  16. 16. Concrètement, c’est quoi le TDD ? 1. Red 2. Green 3. Refactor
  17. 17. TDDExemple
  18. 18. Et l’ATDD ? Intégrer le client Réduire dans le processus l’interprétabilité AcceptanceAméliore le TDD Spécification feedback par l’exemple Spécifications exécutables
  19. 19. Position dans le processusVision
  20. 20. ATDDExemple
  21. 21. Quid du BDD ?Test Comportement Test = documentation Behaviour DD Comportement DevraitFaire… décrit dans le ounom de la méthode NeDevraitPasFaire…
  22. 22. Quid du BDD ? 1 Comportement =1 critère d’acceptance Plus de proximité avec le client BehaviourLangage DDuniversel Given <contexte> When <action> Then <résultat> 1 DSL : le Gherkin
  23. 23. BDDExemple
  24. 24. Quand s’en servir ? Types de tests TDD ATDD BDD Tests unitaires Tests d’intégration Tests fonctionnels Tests d’interface Tests d’ergonomieTests de performance
  25. 25. En résuméDeveloper Customer centric centricTDD ATDD BDD
  26. 26. Retour d’expérience : Le contexte• Domaine de l’assurance• Développement d’un extranet• Application Web traditionnelle o MVC o Repository + NHibernate• Equipe assez hétérogène o Histoire, expériences, âges, compétences• Pas d’habitude des tests automatisés• Adhésion du management aux pratiques agiles
  27. 27. Approche des tests en Top Down Tests d’interfaces Red BDD Green Tests unitaires des Controller SpecFlow Red Green(Cucumber-like)+ WatiN + NUnit Tests unitaires des Repository Refactor NUnit Red Green Refactor NUnit
  28. 28. Un petit bilan… Pas simple tous les jours… Plein de questions…83%…de couverture ! Un surcoût…! Un code assez clean !
  29. 29. Les tests OK, mais pour quel coût ?100% 120%
  30. 30. Où est l’intérêt finalement ?• Le temps de Debug, passe sur le temps de Tests• Le temps de Tests prend en compte : o Une partie de la rédaction de specs, o La réalisation de tests manuels de non régression • La recette existe toujours !• Le temps de Dev prend en compte le refactoring• On a réduit drastiquement le nombre de bugs• On n’écrit plus de code inutile• On a gagné en prédictibilité ! o Le temps de Debug est imprévisible
  31. 31. Les questions qui se sont posées...Par où commencer ?Par le test le plus simple ! Par quoi poursuivre ? Par le prochain test le plus simple !Faut-il tester les méthodes « passe-plats » ?A vous de voir… Jusqu’où s’arrêter ? Faut-il TOUT tester ? J’y répondrai à la fin… 
  32. 32. …et qui se posent encore !Faut-il des mocks ou des stubs ?De manière générale, des stubs,mais les mocks ont leur utilitéhttp://martinfowler.com/articles/mocksArentStubs.html Le critère d’acceptance du PO est nul ! Mettons-nous autour de la table…
  33. 33. Quelques conseils sur… le TDD• Pour être testée, une application doit être… testable ! o Privilégier l’injection de dépendance o Privilégier les frameworks « testables » unitairement o Eliminer tout ce qui est static• Ne passez pas trop de temps sur un test• 1 chose testée par méthode de test o Plusieurs Assert permis…• Ne courrez pas derrière le 100% de couverture• Ajouter un test lorsque vous rencontrez un bug
  34. 34. Quelques conseils sur le… BDD• Utilisez le plus haut niveau d’abstraction métier possible dans vos descriptions o Exemple : Given je suis sur la page d’accueil et non Given je vais à l’URL http://localhost:87675/• Concentrez le test sur ce qui doit être testé o Ne pas répéter des étapes o Dans le Given, décrire le contexte le plus tard possible
  35. 35. Quelques conseils sur le… Refactoring• Ne reportez pas le Refactoring à plus tard o Dette technique !• Commencez par refactorer les tests !!!!• Mettez en place la règle du Boy Scout o « A chaque fois que je passe à un endroit, je le rends un tout petit peu plus propre qu’il ne l’était avant »• Inspirez-vous du Software Craftsmanship
  36. 36. Récapitulons… Spécification DesignInteraction Le pilotage par les tests Formalisme 1 Process Qualité
  37. 37. C’est surtout un état d’esprit !Attention au changement de culture ! Osez vous tromper !... …Et persévérez !Soyez curieux, et regardeztoutes les pratiques (Faites des dojos !) Faites appel à votre bon sens !!
  38. 38. Pour aller plus loinhttp://dannorth.net/introducing-bdd/ @kentbeck @jamesshorehttp://www.ibm.com/developerworks/java/libr @gojkoadzicary/j-eaed2/index.html @martinfowler @tastapod @ericminio
  39. 39. Merci ! Des questions ?Jérôme Avoustin @JeromeAvoustin jerome.avoustin@smartview.fr http://www.smartview.fr http://blog.avoustin.com Scrum Pastis Montpellier : 22/11/2011 Meetup : http://past.is/bP2R Questionnaire : http://past.is/bPza

×