Le pilotage par les tests

Post on 26-May-2015

2.454 views 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 of Le pilotage par les tests

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://www.smartview.frjerome.avoustin@smartview.fr

Scrum Pastis Montpellier : 22/11/2011

Meetup : http://past.is/bP2RQuestionnaire : http://past.is/bPza