Download - Le pilotage par les tests
![Page 1: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/1.jpg)
Le pilotage par les tests
Mise en pratiqueet retour d’expérience
![Page 2: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/2.jpg)
Merci à nos sponsors !
![Page 3: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/3.jpg)
Moi…
Jérôme Avoustin.NET, Agilité, Performance
Agilité, AMOA, .NET, SharePoint
@JeromeAvoustin
http://blog.avoustin.com
http://www.smartview.fr
![Page 4: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/4.jpg)
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é
![Page 5: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/5.jpg)
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é
![Page 6: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/6.jpg)
C’est quoi la
Qualité ?
![Page 7: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/7.jpg)
Sur le web
![Page 8: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/8.jpg)
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
![Page 9: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/9.jpg)
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.
![Page 10: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/10.jpg)
Une autre proposition…
Une application informatique est de qualité lorsque
le coût d’ajout d’une fonctionnalité est stable.
![Page 11: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/11.jpg)
Une autre proposition…
Une application informatique est de qualité lorsque
le coût d’ajout d’une fonctionnalité est stable.Coû
t
Temps
![Page 12: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/12.jpg)
Les types de dette
TestsCode
BesoinsObsolescence
![Page 13: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/13.jpg)
Pourquoi automatiser le test ?
![Page 14: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/14.jpg)
Les stratégies de test
Pas de testsTest-after
Test-first
TDD
![Page 15: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/15.jpg)
evelopmentesign
Un peu de philo
TDD
estriven
Validation du code
Centré sur le besoin
Design émergent
Refactoring intensif
![Page 16: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/16.jpg)
Concrètement, c’est quoi le TDD ?
1.Red2.Green3.Refact
or
![Page 17: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/17.jpg)
TDD
Exemple
![Page 18: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/18.jpg)
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
![Page 19: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/19.jpg)
Position dans le processus
Vision
US
US
US
USUS
USUS
USUS
US
![Page 20: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/20.jpg)
ATDD
Exemple
![Page 21: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/21.jpg)
Quid du BDD ?
BehaviourDD
Test ComportementTest = documentation
Comportementdécrit dans le
nom de la méthode
DevraitFaire… ouNeDevraitPasFaire…
![Page 22: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/22.jpg)
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
![Page 23: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/23.jpg)
BDD
Exemple
![Page 24: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/24.jpg)
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
![Page 25: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/25.jpg)
En résumé
Developercentric
Customercentric
TDD ATDD
BDD
![Page 26: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/26.jpg)
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
![Page 27: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/27.jpg)
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
![Page 28: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/28.jpg)
Un petit bilan…
Plein de questions…Pas simple tous les jours…
83%…de couverture !
Un code assez clean !
Un surcoût…!
![Page 29: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/29.jpg)
Les tests OK, mais pour quel coût ?
100%
120%
![Page 30: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/30.jpg)
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
![Page 31: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/31.jpg)
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…
![Page 32: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/32.jpg)
…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…
![Page 33: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/33.jpg)
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
![Page 34: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/34.jpg)
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
![Page 35: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/35.jpg)
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
![Page 36: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/36.jpg)
Récapitulons…
Le pilotagepar les tests
1 Process
InteractionDesign
Spécification
Formalisme
Qualité
![Page 37: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/37.jpg)
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 !)
![Page 38: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/38.jpg)
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
![Page 39: Le pilotage par les tests](https://reader035.vdocuments.pub/reader035/viewer/2022062307/55635d12d8b42aed538b56de/html5/thumbnails/39.jpg)
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