Tdd en action - découverte

Eric Mignot
Eric MignotSoftware Developer at Logi-D à Logi-D | TECSYS
TDD en action : découverte
Repérage
●   TDD en action
    –   Découverte                 Nous allons aborder ceci

    –   Refactoring
    –   Itératif incrémental
    –   Bases de données
    –   Développement Web
    –   Déploiement continu
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
2.CODE



●   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




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



●   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 »




Je vois une valeur magique ici
Il est temps de pratiquer
Exemple
●   Le kata des chiffres romains
Le 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 premiers
Le 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 ?




                  eric.mignot@gmail.com
1 sur 31

Recommandé

TDD (Test Driven Developement) et refactoring par
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
1.5K vues29 diapositives
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable par
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
3K vues27 diapositives
Human Talks Grenoble - 11/12/2012 - TDD par
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
2.4K vues45 diapositives
[Agile Testing Day] Test Driven Development (TDD) par
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
416 vues29 diapositives
[Agile Testing Day] Techniques avancées de tests par
[Agile Testing Day] Techniques avancées de tests[Agile Testing Day] Techniques avancées de tests
[Agile Testing Day] Techniques avancées de testsCellenza
482 vues37 diapositives
Formation Extreme Programming, Tests unitaires, travail collaboratif par
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
3.1K vues39 diapositives

Contenu connexe

Tendances

[Agile Testing Day] Behavior Driven Development (BDD) par
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)Cellenza
378 vues40 diapositives
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc) par
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
2.1K vues72 diapositives
Iut agile lyon 20 nov. 2013 - bdd par
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bddagnes_crepet
1.7K vues31 diapositives
Université du soir - TDD par
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDDJean-Baptiste Vigneron
419 vues15 diapositives
Introduction aux spécifications exécutables (dit aussi atdd, bdd) par
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
1.9K vues56 diapositives
Pizza party 30-09-2011 bdd-cucumber par
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberHervé Leclerc
875 vues18 diapositives

Tendances(20)

[Agile Testing Day] Behavior Driven Development (BDD) par Cellenza
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)
Cellenza378 vues
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc) par French Scrum User Group
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
Iut agile lyon 20 nov. 2013 - bdd par agnes_crepet
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bdd
agnes_crepet1.7K vues
Introduction aux spécifications exécutables (dit aussi atdd, bdd) par Jean-Pierre Lambert
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Pizza party 30-09-2011 bdd-cucumber par Hervé Leclerc
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumber
Hervé Leclerc875 vues
BDD (Behavior Driven Development) - Une voie vers l'agilité par CARA_Lyon
BDD (Behavior Driven Development) - Une voie vers l'agilitéBDD (Behavior Driven Development) - Une voie vers l'agilité
BDD (Behavior Driven Development) - Une voie vers l'agilité
CARA_Lyon2.1K vues
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine par Geeks Anonymes
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
Geeks Anonymes1.2K vues
20131024 qualité de code et sonar - mug lyon par Clement Bouillier
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
Clement Bouillier3.3K vues
Sortir de l’ère des héros - HumanTalks Paris Mars 2017 par Jean-Pierre Lambert
Sortir de l’ère des héros - HumanTalks Paris Mars 2017Sortir de l’ère des héros - HumanTalks Paris Mars 2017
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
4-Cours de Géniel Logiciel par lauraty3204
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
lauraty3204104 vues
Outils et pratiques : tester une application web moderne par halleck45
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
halleck452.4K vues

En vedette

Play 2 Java Framework with TDD par
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDDBasav Nagur
1K vues26 diapositives
Pfe conception et développement d'une application web GMAO JEE par
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEEOussama Djerba
98.2K vues91 diapositives
TDD et Coding Kata - Micro Days - Modern Software Development par
TDD et Coding Kata - Micro Days - Modern Software DevelopmentTDD et Coding Kata - Micro Days - Modern Software Development
TDD et Coding Kata - Micro Days - Modern Software DevelopmentTarik Zakaria Benmerar
1.3K vues13 diapositives
Guion par
GuionGuion
Guiontmgrupo1
833 vues13 diapositives
Pensamiento pedagógico de rousseau par
Pensamiento pedagógico de rousseauPensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseauSergio Perez
619 vues27 diapositives
G06 propuesta f par
G06 propuesta fG06 propuesta f
G06 propuesta ftallera
469 vues5 diapositives

En vedette(20)

Play 2 Java Framework with TDD par Basav Nagur
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDD
Basav Nagur1K vues
Pfe conception et développement d'une application web GMAO JEE par Oussama Djerba
Pfe conception et développement d'une application web GMAO JEEPfe conception et développement d'une application web GMAO JEE
Pfe conception et développement d'une application web GMAO JEE
Oussama Djerba98.2K vues
Pensamiento pedagógico de rousseau par Sergio Perez
Pensamiento pedagógico de rousseauPensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseau
Sergio Perez619 vues
G06 propuesta f par tallera
G06 propuesta fG06 propuesta f
G06 propuesta f
tallera469 vues
Projet carrière par 96bobcat
Projet carrièreProjet carrière
Projet carrière
96bobcat333 vues
PresentacióN Paz par pilardr8
PresentacióN PazPresentacióN Paz
PresentacióN Paz
pilardr8377 vues
Domingo 2 par google
Domingo 2Domingo 2
Domingo 2
google519 vues
Presentacio slideshare pau par pau
Presentacio slideshare pauPresentacio slideshare pau
Presentacio slideshare pau
pau64 vues
Joyeux Noel par vero8975
Joyeux NoelJoyeux Noel
Joyeux Noel
vero8975266 vues
Les Applications Mobiles - App Store par Pascal Fredette
Les Applications Mobiles - App StoreLes Applications Mobiles - App Store
Les Applications Mobiles - App Store
Pascal Fredette1.9K vues

Similaire à Tdd en action - découverte

Tdd en action - refactoring par
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoringEric Mignot
965 vues37 diapositives
Coder propre ! par
Coder propre !Coder propre !
Coder propre !cluelessjoe
2K vues96 diapositives
Développement piloté par les tests - DDD par
Développement piloté par les tests - DDDDéveloppement piloté par les tests - DDD
Développement piloté par les tests - DDDPyxis Technologies
1.4K vues42 diapositives
Tester du legacy code, mission impossible ? par
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
2.1K vues53 diapositives
Présentation Alt.net - Tests unitaires automatisés par
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
1K vues20 diapositives
Tour d'horizon des tests par
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des testsyannick grenzinger
56 vues159 diapositives

Similaire à Tdd en action - découverte(20)

Tdd en action - refactoring par Eric Mignot
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoring
Eric Mignot965 vues
Présentation Alt.net - Tests unitaires automatisés par Djamel Zouaoui
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
Djamel Zouaoui1K vues
Consignes épreuve de codage par Ruau Mickael
Consignes épreuve de codageConsignes épreuve de codage
Consignes épreuve de codage
Ruau Mickael312 vues
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur... par Cyrille Grandval
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
Cyrille Grandval3.2K vues
Tester c'est douter - Linkvalue tech par Marine Karam
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
Marine Karam1.2K vues
Une architecture agile et testable par martinsson
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
martinsson514 vues
Le rôle du testeur et le Blackbox testing par Geeks Anonymes
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
Geeks Anonymes156 vues
Essential skills for the agile developer par Alice Barralon
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
Alice Barralon1.3K vues

Tdd en action - découverte

  • 1. TDD en action : découverte
  • 2. Repérage ● TDD en action – Découverte Nous allons aborder ceci – Refactoring – Itératif incrémental – Bases de données – Développement Web – Déploiement continu
  • 3. Découverte ● Définition ● Théorie ● Exemple ● Exercice ● Auto-évaluation
  • 4. 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
  • 5. 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
  • 6. ...et aussi : ● Un outil pour ne plus avoir peur ● Un jeu ● Un ami qui vous simplifie la vie
  • 7. Théorie – le « cycle » du TDD 1.TEST 2.CODE 3.REFACTOR
  • 8. 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
  • 10. 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.
  • 11. 1.TEST Parfois on peut avoir des intuitions quant à cette envergure dès la lecture du test
  • 12. 1.TEST Au début, commencez par explorer un cas simple
  • 13. 2.CODE ● 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 – ...
  • 14. 2.CODE Au début commencez par le code le plus simple possible faisant passer le test
  • 15. 3.REFACTOR ● Supprimer le code dangereux... ● ...SANS ajouter de fonctionnalités... ● ...en continuant à avoir tous les tests qui passent
  • 16. 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
  • 17. 3.REFACTOR ● Comment supprimer du code « dangereux »?
  • 18. 3.REFACTOR Au début, commencez par apprendre à repérer le code « dangereux » Je vois une valeur magique ici
  • 19. Il est temps de pratiquer
  • 20. Exemple ● Le kata des chiffres romains Le 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
  • 21. 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
  • 22. A vous :) ● Exercice : le kata des facteurs premiers Le 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.
  • 23. Souvenez-vous ● Commencez par un seul test ● Commencez par un cas simple ● Respectez le cycle 1.TEST 2.CODE 3.REFACTOR
  • 26. Plusieurs fois, avec différents langages.
  • 27. 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
  • 28. 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
  • 29. 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.
  • 30. 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
  • 31. Merci ● M'aiderez vous à améliorer ce matériel ? – Qu'avez-vous aimé ? – Quelles améliorations feriez-vous ? eric.mignot@gmail.com