Le pilotage par les tests
Mise en pratiqueet retour d’expérience
Merci à nos sponsors !
Moi…
Jérôme Avoustin.NET, Agilité, Performance
Agilité, AMOA, .NET, SharePoint
@JeromeAvoustin
http://blog.avoustin.com
http://www.smartview.fr
TDD
ATDD
UnitTests
BDD Testsd’acceptance
xUn i t
Cucumber
Refactoring
BusinessNeeds
xBehave
Sp
ec
RedGreen
Giv
en
Wh
en
Then
Emergent Design
De quoi va-t-on parler ?
Qualité
TDD
ATDD
UnitTests
BDD Testsd’acceptance
xUn i t
Cucumber
Refactoring
BusinessNeeds
xBehave
Sp
ec
RedGreen
Giv
en
Wh
en
Then
Emergent Design
De quoi va-t-on parler ?
Qualité
C’est quoi la
Qualité ?
Sur le web
Sur twitter
Codez toujours en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse.Martin Golding
Any fool can write code that a computer can understand.Good programmers write code that humans can understand.Martin Fowler
My project is 90% done. I hope the second half goes as well.Scott W. Ambler
J’écris des tests qui passent avant d’avoir écrit le code.Chuck Norris
Sur Wikipedia
Aptitude 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
TestsCode
BesoinsObsolescence
Pourquoi automatiser le test ?
Les stratégies de test
Pas de testsTest-after
Test-first
TDD
evelopmentesign
Un peu de philo
TDD
estriven
Validation du code
Centré sur le besoin
Design émergent
Refactoring intensif
Concrètement, c’est quoi le TDD ?
1.Red2.Green3.Refact
or
TDD
Exemple
Et l’ATDD ?
AcceptanceTDD Spécification
par l’exemple
Intégrer le clientdans le processus
Spécificationsexécutables
Réduirel’interprétabilité
Améliore lefeedback
Position dans le processus
Vision
US
US
US
USUS
USUS
USUS
US
ATDD
Exemple
Quid du BDD ?
BehaviourDD
Test ComportementTest = documentation
Comportementdécrit dans le
nom de la méthode
DevraitFaire… ouNeDevraitPasFaire…
Quid du BDD ?
1 Comportement =1 critère d’acceptance Plus de proximité
avec le client
Langageuniversel
1 DSL : le Gherkin
Given <contexte>When <action>Then <résultat>
BehaviourDD
BDD
Exemple
Quand s’en servir ?
Types de tests TDD ATDD BDD
Tests unitaires
Tests d’intégration
Tests fonctionnels
Tests d’interface
Tests d’ergonomie
Tests de performance
En résumé
Developercentric
Customercentric
TDD ATDD
BDD
Retour d’expérience : Le contexte
• Domaine de l’assurance• Développement d’un extranet• Application Web traditionnelle
o MVCo Repository + NHibernate
• Equipe assez hétérogèneo 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
Tests unitaires des
Controller
Tests unitaires
des RepositoryRed Green
Refactor
Red
Red Green
Refactor
Green
BDD
SpecFlow(Cucumber-
like)+ WatiN +
NUnit
NUnit
NUnit
Un petit bilan…
Plein de questions…Pas simple tous les jours…
83%…de couverture !
Un code assez clean !
Un surcoût…!
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 !
Jusqu’où s’arrêter ? Faut-il TOUT tester ?J’y répondrai à la fin…
Par quoi poursuivre ?Par le prochain test le plus simple !
Faut-il tester les méthodes « passe-plats » ?A vous de voir…
…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épendanceo Privilégier les frameworks « testables »
unitairemento 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 descriptionso Exemple : Given je suis sur la page
d’accueilet 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 étapeso Dans le Given, décrire le contexte le plus
tard possible
Quelques conseils sur le… Refactoring
• Ne reportez pas le Refactoring à plus tardo Dette technique !
• Commencez par refactorer les tests !!!!
• Mettez en place la règle du Boy Scouto « 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…
Le pilotagepar les tests
1 Process
InteractionDesign
Spécification
Formalisme
Qualité
C’est surtout un état d’esprit !
Faites appel à votre bon sens !!
Attention au changement de culture !
Osez vous tromper !...…Et persévérez !
Soyez curieux, et regardeztoutes les pratiques (Faites des dojos !)
Pour aller plus loin
@kentbeck@jamesshore@gojkoadzic@martinfowler@tastapod@ericminio
http://dannorth.net/introducing-bdd/
http://www.ibm.com/developerworks/java/library/j-eaed2/index.html
Merci ! Des questions ?
Jérôme Avoustin@JeromeAvoustin
http://blog.avoustin.com
http://[email protected]
Scrum Pastis Montpellier : 22/11/2011
Meetup : http://past.is/bP2RQuestionnaire : http://past.is/bPza
Top Related