Upload
eric-mignot
View
738
Download
1
Embed Size (px)
Citation preview
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
Découverte
● Définition● Théorie● Exemple● Exercice● Auto-évaluation
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
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
...et aussi :
● Un outil pour ne plus avoir peur● Un jeu● Un ami qui vous simplifie la vie
Théorie – le « cycle » du TDD
1.TEST 2.CODE
3.REFACTOR
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
1.TEST
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.
1.TEST
Parfois on peut avoir des intuitions quant à cette envergure dès la lecture du test
1.TEST
Au début, commencez par explorer un cas simple
● 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
2.CODE
Au début commencez par le code le plus simple possible faisant passer le test
● Supprimer le code dangereux...● ...SANS ajouter de fonctionnalités...● ...en continuant à avoir tous les tests qui
passent
3.REFACTOR
● 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
● Comment supprimer du code « dangereux »?
3.REFACTOR
Au début, commencez par apprendre à repérer le code « dangereux »
3.REFACTOR
Je vois une valeur magique ici
Il est temps de pratiquer
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
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
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.
Souvenez-vous
● Commencez par un seul test● Commencez par un cas simple● Respectez le cycle
1.TEST 2.CODE
3.REFACTOR
Vous avez fini ?
Recommencez :)
Plusieurs fois, avec différents langages.
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
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
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.
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
Merci
● M'aiderez vous à améliorer ce matériel ?– Qu'avez-vous aimé ?
– Quelles améliorations feriez-vous ?