• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Le pilotage par les tests
 

Le pilotage par les tests

on

  • 2,516 views

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.

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.

Statistics

Views

Total Views
2,516
Views on SlideShare
2,446
Embed Views
70

Actions

Likes
1
Downloads
57
Comments
0

2 Embeds 70

http://www.smartview.fr 65
http://a0.twimg.com 5

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • PAS DE TESTS : cas des forfaits. Dette technique et dette de tests énormes. Heures de séance de débuggage assurées. Cas : pas le temps OU pas besoin car trop fortsTEST AFTER : intérêt des tests limité. On ne fait du test que pour le test. Mais c’est trop tard ! On ne teste que les cas les plus évidents. Sous le stress du résultat, on abandonne. Le test est souvent mal écrit, peu efficace et peu maintenable.TEST FIRST : Le test sans le refactoring
  • Nom de la méthode important pour : bien comprendre le comportement ciblé, savoir exactement ce qu’il ne va pas en cas d’échec[Reprendre exemple TDD]

Le pilotage par les tests Le pilotage par les tests Presentation Transcript

  • Le pilotage par les tests Mise en pratique et retour d’expérience
  • Merci à nos sponsors !
  • Moi… Jérôme Avoustin .NET, Agilité, Performance @JeromeAvoustinhttp://blog.avoustin.com Agilité, AMOA, .NET, SharePoint http://www.smartview.fr
  • 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
  • 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
  • C’est quoi la Qualité ?
  • Sur le web
  • 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
  • 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.
  • Une autre proposition…Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable.
  • Une autre proposition… Une application informatique est de qualité lorsque le coût d’ajout d’une fonctionnalité est stable.Coût Temps
  • Les types de dette Code TestsObsolescence Besoins
  • Pourquoi automatiser le test ?
  • Les stratégies de testPas de tests Test-after Test-first TDD
  • Un peu de philo Validation du codeT est Centré sur le besoinD riven Design émergentD evelopment esign Refactoring intensif
  • Concrètement, c’est quoi le TDD ? 1. Red 2. Green 3. Refactor
  • TDDExemple
  • 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
  • Position dans le processusVision
  • ATDDExemple
  • Quid du BDD ?Test Comportement Test = documentation Behaviour DD Comportement DevraitFaire… décrit dans le ounom de la méthode NeDevraitPasFaire…
  • 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
  • BDDExemple
  • 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
  • En résuméDeveloper Customer centric centricTDD ATDD BDD
  • 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
  • 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
  • Un petit bilan… Pas simple tous les jours… Plein de questions…83%…de couverture ! Un surcoût…! Un code assez clean !
  • Les tests OK, mais pour quel coût ?100% 120%
  • 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
  • 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… 
  • …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…
  • 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
  • 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
  • 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
  • Récapitulons… Spécification DesignInteraction Le pilotage par les tests Formalisme 1 Process Qualité
  • 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 !!
  • Pour aller plus loinhttp://dannorth.net/introducing-bdd/ @kentbeck @jamesshorehttp://www.ibm.com/developerworks/java/libr @gojkoadzicary/j-eaed2/index.html @martinfowler @tastapod @ericminio
  • 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