Tdd en action - découverte

31
TDD en action : découverte

Transcript of Tdd en action - découverte

Page 1: Tdd en action - découverte

TDD en action : découverte

Page 2: Tdd en action - découverte

Repérage

● TDD en action– Découverte

– Refactoring

– Itératif incrémental

– Bases de données

– Développement Web

– Déploiement continu

Nous allons aborder ceci

Page 3: Tdd en action - découverte

Découverte

● Définition● Théorie● Exemple● Exercice● Auto-évaluation

Page 4: Tdd en action - découverte

TDD

TDD = Test-Driven Development

=Développement piloté par les tests

=Écrire des tests avant le code

=Écrire des tests pour guider l'écriture du code

=Écrire des tests pour partager une idée

=Écrire des tests pour explorer une hypothèse

Page 5: Tdd en action - découverte

Le TDD c'est...

● Une méthode de développement incrémental● Une technique de spécification● Une démarche qualité● Une technique de collaboration● Une des 13 pratiques de eXtrem Programming

Page 6: Tdd en action - découverte

...et aussi :

● Un outil pour ne plus avoir peur● Un jeu● Un ami qui vous simplifie la vie

Page 7: Tdd en action - découverte

Théorie – le « cycle » du TDD

1.TEST 2.CODE

3.REFACTOR

Page 8: Tdd en action - découverte

1.TEST

● Décrire le comportement souhaité● Ce comportement peut être

– Unitaire : exercer une unité de code

– Intégré : exercer plusieurs unités de code

– Système : exercer l'ensemble d'un systéme

Page 9: Tdd en action - découverte

1.TEST

Page 10: Tdd en action - découverte

1.TEST

Notez que le caractère unitaire, intégré ou système d'un test est défini par l'envergure du

code exercé lorsqu'on exécute ce test.

Page 11: Tdd en action - découverte

1.TEST

Parfois on peut avoir des intuitions quant à cette envergure dès la lecture du test

Page 12: Tdd en action - découverte

1.TEST

Au début, commencez par explorer un cas simple

Page 13: Tdd en action - découverte

● Faire passer le test● Vous avez le « droit » de tout faire

– Écrire du code de débutant

– Dupliquer du code existant

– Mettre des valeurs magiques dans le code

– ...

2.CODE

Page 14: Tdd en action - découverte

2.CODE

Au début commencez par le code le plus simple possible faisant passer le test

Page 15: Tdd en action - découverte

● Supprimer le code dangereux...● ...SANS ajouter de fonctionnalités...● ...en continuant à avoir tous les tests qui

passent

3.REFACTOR

Page 16: Tdd en action - découverte

● Qu'est ce que du code « dangereux »?– Duplication

– Couplage

– Valeurs magiques

– Conditionnel

– Longues classes ou méthodes

– Code obscur

– ...cherchez « code smells » sur Google

3.REFACTOR

Page 17: Tdd en action - découverte

● Comment supprimer du code « dangereux »?

3.REFACTOR

Page 18: Tdd en action - découverte

Au début, commencez par apprendre à repérer le code « dangereux »

3.REFACTOR

Je vois une valeur magique ici

Page 19: Tdd en action - découverte

Il est temps de pratiquer

Page 20: Tdd en action - découverte

Exemple

● Le kata des chiffres romainsLe kata dit que vous devez écrire une fonction pour convertir les nombres dont nous avons l'habitude en chiffres romains.

Par exemple :

1--> I

10-->X

7-->VII

Etc.

● Extrait de 10 minutes : http://vimeo.com/19621491

● Vous pourrez trouver d'autres extraits non loin de celui-ci

Page 21: Tdd en action - découverte

Exemple

Notez dans cette vidéo :● Les tests s'exécutent automatiquement en bas

à gauche● Les tests peuvent rester rouges tout en

changeant de message d'erreur● Le refactoring n'ajoute pas de fonctionnalités

Page 22: Tdd en action - découverte

A vous :)

● Exercice : le kata des facteurs premiersLe kata dit que vous devez écrire une fonction qui donne la décomposition d'un nombre en ses facteurs premiers.

Par exemple :

15 = 3 x 5

300 = 2 x 2 x 3 x 5 x 5

Etc.

Page 23: Tdd en action - découverte

Souvenez-vous

● Commencez par un seul test● Commencez par un cas simple● Respectez le cycle

1.TEST 2.CODE

3.REFACTOR

Page 24: Tdd en action - découverte

Vous avez fini ?

Page 25: Tdd en action - découverte

Recommencez :)

Page 26: Tdd en action - découverte

Plusieurs fois, avec différents langages.

Page 27: Tdd en action - découverte

Auto-évaluation

● Combien d'exemples sont présents dans vos tests ?– Vous en voulez plusieurs

● Avez-vous écrit le code minimum pour faire passer chaque test ?– Vous pouvez avoir une idée de cela en vérifiant que

chaque nouveau test ne passe pas sans nouveau code

Page 28: Tdd en action - découverte

Auto-évaluation

● A chaque refactoring, quel « code smell » avez-vous supprimé ?– Essayer à chaque fois de les nommer

● Est-ce que vos tests documentent votre code ?– Prenez votre courage à deux mains et montrez vos

tests à un ami, ils doivent suffire à expliquer ce qu'offre votre code

Page 29: Tdd en action - découverte

Auto-évaluation

● Est-ce que vos tests traduisent une démarche incrémentale ?– Vos premiers tests devraient présenter des cas

simples, les cas plus compliqués venant ensuite.

Page 30: Tdd en action - découverte

Auto-évaluation

Tests X / V ?

J'ai écrit plusieurs tests

Chaque nouveau test commence par ne pas passer

Chaque test a une seule intention

Chaque test a un nom qui illustre l'intention du test

Mes tests illustrent un développement incrémentale

Un autre que moi comprend l'intention de mes tests

Je sais nommer les smells que je supprime en refactoring

Page 31: Tdd en action - découverte

Merci

● M'aiderez vous à améliorer ce matériel ?– Qu'avez-vous aimé ?

– Quelles améliorations feriez-vous ?

[email protected]