SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)Cellenza
 
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)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
Iut agile lyon 20 nov. 2013 - bdd
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bddagnes_crepet
 
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)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberHervé Leclerc
 
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é
BDD (Behavior Driven Development) - Une voie vers l'agilitéCARA_Lyon
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?Jean-Pierre Lambert
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
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 CytomineGeeks Anonymes
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]Rémy Coutable
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
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 2017Jean-Pierre Lambert
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web modernehalleck45
 
Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entrepriseNicolas Ledez
 

Tendances (20)

[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)[Agile Testing Day] Behavior Driven Development (BDD)
[Agile Testing Day] Behavior Driven Development (BDD)
 
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)
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
Iut agile lyon   20 nov. 2013 - bddIut agile lyon   20 nov. 2013 - bdd
Iut agile lyon 20 nov. 2013 - bdd
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
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)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Pizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumberPizza party 30-09-2011 bdd-cucumber
Pizza party 30-09-2011 bdd-cucumber
 
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é
BDD (Behavior Driven Development) - Une voie vers l'agilité
 
DevOps
DevOpsDevOps
DevOps
 
C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?C'est quoi le Software Craftsmanship ?
C'est quoi le Software Craftsmanship ?
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
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
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
eXtreme Programming [fr]
eXtreme Programming [fr]eXtreme Programming [fr]
eXtreme Programming [fr]
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Sortir de l’ère des héros - HumanTalks Paris Mars 2017
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
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
Coding dojo en entreprise
Coding dojo en entrepriseCoding dojo en entreprise
Coding dojo en entreprise
 

En vedette

Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDDBasav Nagur
 
Pfe conception et développement d'une application web GMAO JEE
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
 
TDD et Coding Kata - Micro Days - Modern Software Development
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
 
Pensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseauPensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseauSergio Perez
 
G06 propuesta f
G06 propuesta fG06 propuesta f
G06 propuesta ftallera
 
Firewall Disertacion
Firewall DisertacionFirewall Disertacion
Firewall Disertacionguest96dedf4
 
Projet carrière
Projet carrièreProjet carrière
Projet carrière96bobcat
 
PresentacióN Paz
PresentacióN PazPresentacióN Paz
PresentacióN Pazpilardr8
 
Libres la main-invisible-presse
Libres la main-invisible-presseLibres la main-invisible-presse
Libres la main-invisible-presseUlrich Genisson
 
Domingo 2
Domingo 2Domingo 2
Domingo 2google
 
Presentacio slideshare pau
Presentacio slideshare pauPresentacio slideshare pau
Presentacio slideshare paupau
 
Joyeux Noel
Joyeux NoelJoyeux Noel
Joyeux Noelvero8975
 
Les Applications Mobiles - App Store
Les Applications Mobiles - App StoreLes Applications Mobiles - App Store
Les Applications Mobiles - App StorePascal Fredette
 

En vedette (20)

Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDD
 
Pfe conception et développement d'une application web GMAO JEE
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
 
TDD et Coding Kata - Micro Days - Modern Software Development
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 Development
 
Guion
GuionGuion
Guion
 
Pensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseauPensamiento pedagógico de rousseau
Pensamiento pedagógico de rousseau
 
G06 propuesta f
G06 propuesta fG06 propuesta f
G06 propuesta f
 
Rapport annuel 2009
Rapport annuel  2009Rapport annuel  2009
Rapport annuel 2009
 
Firewall Disertacion
Firewall DisertacionFirewall Disertacion
Firewall Disertacion
 
Féroé
FéroéFéroé
Féroé
 
Projet carrière
Projet carrièreProjet carrière
Projet carrière
 
PresentacióN Paz
PresentacióN PazPresentacióN Paz
PresentacióN Paz
 
Slideshare netiquette
Slideshare netiquetteSlideshare netiquette
Slideshare netiquette
 
Beaute
BeauteBeaute
Beaute
 
eCampus Ecaussinnes
eCampus EcaussinneseCampus Ecaussinnes
eCampus Ecaussinnes
 
Libres la main-invisible-presse
Libres la main-invisible-presseLibres la main-invisible-presse
Libres la main-invisible-presse
 
Domingo 2
Domingo 2Domingo 2
Domingo 2
 
Presentacio slideshare pau
Presentacio slideshare pauPresentacio slideshare pau
Presentacio slideshare pau
 
Joyeux Noel
Joyeux NoelJoyeux Noel
Joyeux Noel
 
Persistencia
PersistenciaPersistencia
Persistencia
 
Les Applications Mobiles - App Store
Les Applications Mobiles - App StoreLes Applications Mobiles - App Store
Les Applications Mobiles - App Store
 

Similaire à Tdd en action - découverte

Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoringEric Mignot
 
Développement piloté par les tests - DDD
Développement piloté par les tests - DDDDéveloppement piloté par les tests - DDD
Développement piloté par les tests - DDDPyxis Technologies
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsThierry Gayet
 
Consignes épreuve de codage
Consignes épreuve de codageConsignes épreuve de codage
Consignes épreuve de codageRuau Mickael
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221Frédéric Delorme
 
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...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...Cyrille Grandval
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techMarine Karam
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
Le rôle du testeur et le Blackbox testing
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 testingGeeks Anonymes
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptxGuillaume Saint Etienne
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developerAlice Barralon
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?Rémi Lesieur
 

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

Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoring
 
Coder propre !
Coder propre !Coder propre !
Coder propre !
 
Développement piloté par les tests - DDD
Développement piloté par les tests - DDDDéveloppement piloté par les tests - DDD
Développement piloté par les tests - DDD
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Test Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teamsTest Driven Development (aka TDD) for agile teams
Test Driven Development (aka TDD) for agile teams
 
Consignes épreuve de codage
Consignes épreuve de codageConsignes épreuve de codage
Consignes épreuve de codage
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
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...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
Le rôle du testeur et le Blackbox testing
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
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Essential skills for the agile developer
Essential skills for the agile developerEssential skills for the agile developer
Essential skills for the agile developer
 
C'est quoi, du bon code ?
C'est quoi, du bon code ?C'est quoi, du bon code ?
C'est quoi, du bon code ?
 
Doc app cracker
Doc app crackerDoc app cracker
Doc app cracker
 

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