le pilotage par les tests

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

Upload: jerome-avoustin

Post on 26-May-2015

2.454 views

Category:

Technology


0 download

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.

TRANSCRIPT

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