39
Le pilotage par les tests Mise en pratique et retour d’expérience

Le pilotage par les tests

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Le pilotage par les tests

Le pilotage par les tests

Mise en pratiqueet retour d’expérience

Page 2: Le pilotage par les tests

Merci à nos sponsors !

Page 3: Le pilotage par les tests

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

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

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

C’est quoi la

Qualité ?

Page 7: Le pilotage par les tests

Sur le web

Page 8: Le pilotage par les tests

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

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

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

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

Les types de dette

TestsCode

BesoinsObsolescence

Page 13: Le pilotage par les tests

Pourquoi automatiser le test ?

Page 14: Le pilotage par les tests

Les stratégies de test

Pas de testsTest-after

Test-first

TDD

Page 15: Le pilotage par les tests

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

Concrètement, c’est quoi le TDD ?

1.Red2.Green3.Refact

or

Page 17: Le pilotage par les tests

TDD

Exemple

Page 18: Le pilotage par les tests

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

Position dans le processus

Vision

US

US

US

USUS

USUS

USUS

US

Page 20: Le pilotage par les tests

ATDD

Exemple

Page 21: Le pilotage par les tests

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

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

BDD

Exemple

Page 24: Le pilotage par les tests

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

En résumé

Developercentric

Customercentric

TDD ATDD

BDD

Page 26: Le pilotage par les tests

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

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

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

Les tests OK, mais pour quel coût ?

100%

120%

Page 30: Le pilotage par les tests

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

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

…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

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

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

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

Récapitulons…

Le pilotagepar les tests

1 Process

InteractionDesign

Spécification

Formalisme

Qualité

Page 37: Le pilotage par les tests

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

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

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