SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
TDD et Refactoring




                     Walid
                     Skouri
Plan
• Introduction
• L’eXtreme Programming
• Les bases du TDD
• Les tests unitaires
• Le refactoring
Introduction
Introduction
• Introduction
• L’eXtreme Programming
• Les bases du TDD
• Le refactoring
Introduction
• Les démarches traditionnelles



  – spécification > conception > réalisation > validation




         – Concentre la plupart des décision au début d’un projet

         – Les client réalisent que leurs besoins ont changé
Introduction
Accepter ce changment
• C’est une composante incontournable de
  tout projet

• Approche XP
eXtreme Programming
XP
L’idée

• Réduction significative de la durée du cycle
  de développement:
  – Réduction du temps entre :
     • L’implémentation d’une fonctionnalité
     • Mise en production d’une nouvelle version du logiciel
XP
Comment
• On ne fait de conception que pour les fonctionnalités
  existantes, pas pour les fonctionnalités futures:
  – On ne fait de généralisations dans la conception que lorsque
    des besoins concrets se font sentir.
  – On n'introduit pas d'optimisations si elles ne sont pas
    demandées par le client.
• Priorité :
  – Travail actuel bien fait : Code testé, simple, lisible et sans
    duplication
XP
Principaux éléments de fonctionnement de XP

• Cycles itératifs pilotés par le client : Le projet progresse au rythme d'itérations
  très courtes, dont le contenu fonctionnel est déterminé par le client.
• Travail d'équipe auto-organisé : L'équipe travaille réellement... en équipe. Les
  développeurs organisent eux-mêmes leur travail, interviennent sur l'ensemble du
  code, travaillent systématiquement en binômes, et synchronisent leurs
  développements plusieurs fois par jour.
• Programmation pilotée par les tests : les développeurs écrivent des test
  automatiques pour chaque portion de code qu'ils conçoivent, et ils s'appuient sur
  ces tests pour affiner et améliorer sans cesse la conception de l'application sans
  craindre de régression.
XP
    Le coût des changements

                              Traditionnel




 Coût des
changement
     s




                                             XP




                                                  Temps
XP
Les valeurs de XP
• Communication : XP favorise le contact humain, la communication directe, plutôt que le cloisonnement
  des activités et les échanges de courriers électroniques ou de documents formels. Les développeurs
  travaillent directement avec la maîtrise d'ouvrage, les testeurs sont intégrés à l'équipe de développement,
  etc.


• Feedback : qu'il s'agisse d'itérations courtes, de livraisons fréquentes, de travail en binômes ou de tests
  automatiques exécutés en permanence, la plupart des pratiques XP sont conçues pour donner un
  maximum de feedback sur le déroulement du projet afin de corriger la trajectoire au plus tôt. En particulier,
  les points de début d'itération offrent à l'équipe le moyen de prendre du recul sur son fonctionnement et de
  l'améliorer sans cesse au fil des itérations.


• Simplicité : XP relève le défi suivant : « que pouvons-nous arrêter de faire tout en continuant à créer
  efficacement un logiciel qui réponde aux besoins réels du client ? ». Cette recherche de simplification
  touche le processus lui-même, mais aussi l'outil fabriqué (la mécanique de planification incite le client à
  focaliser les efforts sur les fonctions prioritaires) ou encore la conception de l'application (guidée par un
  principe de « You ain't gonna need it »).
Les bases du TDD
Les bases du TDD
Tests au début du développement


              Ecriture des             Ecriture du
                  tests                   code
                              Tests
  Commencer                                          Fini
                             échoués
Les bases du TDD
Développements pilotés par les tests


       Code                      Tests
       propre                   échoués




       Refactoring

                     Tous les
                       tests
                      réussis
TDD
Les bases du TDD
 Recommandations




• Ne jamais écrire de code sans avoir de
  tests qui échouent
• Les tests doivent être représentatifs des
  spécifications
Les test unitaires
Les tests unitaires
• Il permettent


  – De contrôler et conserver la qualité du produit tout
    au long du projet
  – De se focaliser sur l’amélioration du code, plutôt
    que sur les bugs
  – D’améliorer la productivité de l’équipe en
    automatisant un maximum de tâches redondantes
    et ennuyantes
Les tests unitaires
Testabilité du code



• Privilégier la composition à l’héritage
• Isoler les dépendances
• Injecter les dépendances
Les tests unitaires
  Testabilité du code
• Privilégier la composition à l’héritage

                                   Héritage                                            Composition
                 class Fruit {                                           class Fruit {
                 //... }                                                 //... }
                 class Apple extends Fruit {                             class Apple {
                 //... }                                                 private Fruit fruit = new Fruit(); //... }




  – L’héritage permet à la sous classe d’heriter toutes les fonctionnalité
  – La composition permet une solution plus flexible et réutilisable
  – Exemple: Permet d’instancier le l’objet composite avec différentes implémentations
Les tests unitaires
 Testabilité du code



Injection de dépendance
• Se rapporte à la fourniture d'une dépendance
  externe à un composant logiciel.
• Formes d’injection de dépendance
   – interface injection
   – setter injection
   – constructor injection
Les tests unitaires
  Testabilité du code

Injection du constructeur
public class ImportantClass {             public class ImportantClass {
        IFoo foo;                                 IFoo foo;
        public ImportantClass()           public ImportantClass(IFoo foo) {
        {                                         this.foo = foo;
              this.foo = new              }
        EnterpriseFoo();
                                                  void doReallyImportantStuff() {
        }
                                                  this.foo.bar();
        void doReallyImportantStuff() {
        this.foo.bar();                           }
        }                                  }
 }
Refactoring
Refactoring
 C’est quoi?



• C’est une technique de restructuration du
  code existant: modifier sa structure sans
  changer son comportement externe


• Ensemble de petites modifications dans le
  but d’améliorer le code
Refactoring
 C’est quoi?


• Chaque transformation (ou Refactoring) ne
  modifie qu’une petite partie du code mais un
  ensemble de transformations peut produire un
  changement significatif


• Le système se doit de toujours fonctionner suite
  à chaque refactoring. Eviter les régressions.
Refactoring
  Pourquoi?


• Améliorer la structure du logiciel


• Rendre le code plus lisible et maintenable


• Faciliter les futurs changements


• Plus de flexibilité


• Augmenter la réutilisabilité


• Faciliter la recherche de bugs
Refactoring
 Quand?


• Code dupliqué


• Longues méthodes


• Longues liste de paramètres


• Nommage inapproprié
Démo

Contenu connexe

Tendances

Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean ArchitectureMattia Battiston
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests PlanDenis Voituron
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixVictor Rentea
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1Christophe Rochefolle
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesLilia Sfaxi
 
Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualitéSpikeeLabs
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.jsBruno Bonnin
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
DevOps - Overview - One of the Top Trends in IT Industry
DevOps - Overview - One of the Top Trends in IT IndustryDevOps - Overview - One of the Top Trends in IT Industry
DevOps - Overview - One of the Top Trends in IT IndustryRahul Tilloo
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementLilia Sfaxi
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests FonctionnelsDATANYWARE.com
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
Présentation des principes Scrum
Présentation des principes ScrumPrésentation des principes Scrum
Présentation des principes Scrummsmpp-nantes
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 

Tendances (20)

Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
Azure DevOps Tests Plan
Azure DevOps Tests PlanAzure DevOps Tests Plan
Azure DevOps Tests Plan
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Cours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 compositeCours design pattern m youssfi partie 4 composite
Cours design pattern m youssfi partie 4 composite
 
Clean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflixClean pragmatic architecture @ devflix
Clean pragmatic architecture @ devflix
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
 
Chp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications MobilesChp3 - Architecture Logicielle des Applications Mobiles
Chp3 - Architecture Logicielle des Applications Mobiles
 
Méthodologie de tests et qualité
Méthodologie de tests et qualitéMéthodologie de tests et qualité
Méthodologie de tests et qualité
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.js
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
DevOps - Overview - One of the Top Trends in IT Industry
DevOps - Overview - One of the Top Trends in IT IndustryDevOps - Overview - One of the Top Trends in IT Industry
DevOps - Overview - One of the Top Trends in IT Industry
 
eServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API ManagementeServices-Chp5: Microservices et API Management
eServices-Chp5: Microservices et API Management
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests Fonctionnels
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Alphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et ConfigurerAlphorm.com Formation Odoo Technique : Installer et Configurer
Alphorm.com Formation Odoo Technique : Installer et Configurer
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Présentation des principes Scrum
Présentation des principes ScrumPrésentation des principes Scrum
Présentation des principes Scrum
 
Devops
DevopsDevops
Devops
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 

Similaire à TDD (Test Driven Developement) et refactoring

Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifkemenaran
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
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
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
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
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...Sébastien Levert
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
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
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...TelecomValley
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
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
 

Similaire à TDD (Test Driven Developement) et refactoring (20)

Formation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratifFormation Extreme Programming, Tests unitaires, travail collaboratif
Formation Extreme Programming, Tests unitaires, travail collaboratif
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
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
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
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 testable
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
SharePoint Summit 2012 - Les tests automatisés et SharePoint 2010, c'est poss...
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Test driven development v0.2 20121221
Test driven development v0.2 20121221Test driven development v0.2 20121221
Test driven development v0.2 20121221
 
L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
Soirée du Test Logiciel - Intégration, livraison et déploiement continu - A. ...
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
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)
 

Plus de neuros

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)neuros
 
Le service workers
Le service workersLe service workers
Le service workersneuros
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internetneuros
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internetneuros
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesneuros
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursneuros
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le webneuros
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7neuros
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessibleneuros
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamonneuros
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et phpneuros
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réelsneuros
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)neuros
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQLneuros
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5neuros
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continuneuros
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalneuros
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informationsneuros
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internetneuros
 
La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHPneuros
 

Plus de neuros (20)

Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)Solution pour un Réseau Social d'Entreprise (RSE)
Solution pour un Réseau Social d'Entreprise (RSE)
 
Le service workers
Le service workersLe service workers
Le service workers
 
Proteger votre vie privee sur internet
Proteger votre vie privee sur internetProteger votre vie privee sur internet
Proteger votre vie privee sur internet
 
Le pouvoir d'être Visible ou Invisible sur Internet
Le pouvoir d'être Visible ou Invisible  sur InternetLe pouvoir d'être Visible ou Invisible  sur Internet
Le pouvoir d'être Visible ou Invisible sur Internet
 
Vos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertesVos projets web sur les plateformes ouvertes
Vos projets web sur les plateformes ouvertes
 
Livre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeursLivre Drupal avance, un CMS pour développeurs
Livre Drupal avance, un CMS pour développeurs
 
Http2 les impacts dans le web
Http2 les impacts dans le webHttp2 les impacts dans le web
Http2 les impacts dans le web
 
Php 7 Think php7
Php 7 Think php7Php 7 Think php7
Php 7 Think php7
 
RGAA 3 dans un Web Accessible
RGAA 3 dans un Web AccessibleRGAA 3 dans un Web Accessible
RGAA 3 dans un Web Accessible
 
Les effets de la loi Hamon
Les effets de la loi HamonLes effets de la loi Hamon
Les effets de la loi Hamon
 
La sécurité et php
La sécurité et phpLa sécurité et php
La sécurité et php
 
Les protocoles temps réels
Les protocoles temps réelsLes protocoles temps réels
Les protocoles temps réels
 
Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)Vectoriel et 3d en html5 - Animation newschool (partie 2)
Vectoriel et 3d en html5 - Animation newschool (partie 2)
 
Améliorer les performances SQL
Améliorer les performances SQLAméliorer les performances SQL
Améliorer les performances SQL
 
Newschool partie1 methode HTML5
Newschool partie1 methode HTML5Newschool partie1 methode HTML5
Newschool partie1 methode HTML5
 
Integrons en mode continu
Integrons en mode continuIntegrons en mode continu
Integrons en mode continu
 
Effectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupalEffectuer des tests modernes pour drupal
Effectuer des tests modernes pour drupal
 
Integration Drupal systemes d'informations
Integration Drupal systemes d'informationsIntegration Drupal systemes d'informations
Integration Drupal systemes d'informations
 
La maitrise des contenus hors internet
La maitrise des contenus hors internetLa maitrise des contenus hors internet
La maitrise des contenus hors internet
 
La mémoire et PHP
La mémoire et PHPLa mémoire et PHP
La mémoire et PHP
 

TDD (Test Driven Developement) et refactoring

  • 1. TDD et Refactoring Walid Skouri
  • 2. Plan • Introduction • L’eXtreme Programming • Les bases du TDD • Les tests unitaires • Le refactoring
  • 4. Introduction • Introduction • L’eXtreme Programming • Les bases du TDD • Le refactoring
  • 5. Introduction • Les démarches traditionnelles – spécification > conception > réalisation > validation – Concentre la plupart des décision au début d’un projet – Les client réalisent que leurs besoins ont changé
  • 6. Introduction Accepter ce changment • C’est une composante incontournable de tout projet • Approche XP
  • 8. XP L’idée • Réduction significative de la durée du cycle de développement: – Réduction du temps entre : • L’implémentation d’une fonctionnalité • Mise en production d’une nouvelle version du logiciel
  • 9. XP Comment • On ne fait de conception que pour les fonctionnalités existantes, pas pour les fonctionnalités futures: – On ne fait de généralisations dans la conception que lorsque des besoins concrets se font sentir. – On n'introduit pas d'optimisations si elles ne sont pas demandées par le client. • Priorité : – Travail actuel bien fait : Code testé, simple, lisible et sans duplication
  • 10. XP Principaux éléments de fonctionnement de XP • Cycles itératifs pilotés par le client : Le projet progresse au rythme d'itérations très courtes, dont le contenu fonctionnel est déterminé par le client. • Travail d'équipe auto-organisé : L'équipe travaille réellement... en équipe. Les développeurs organisent eux-mêmes leur travail, interviennent sur l'ensemble du code, travaillent systématiquement en binômes, et synchronisent leurs développements plusieurs fois par jour. • Programmation pilotée par les tests : les développeurs écrivent des test automatiques pour chaque portion de code qu'ils conçoivent, et ils s'appuient sur ces tests pour affiner et améliorer sans cesse la conception de l'application sans craindre de régression.
  • 11. XP Le coût des changements Traditionnel Coût des changement s XP Temps
  • 12. XP Les valeurs de XP • Communication : XP favorise le contact humain, la communication directe, plutôt que le cloisonnement des activités et les échanges de courriers électroniques ou de documents formels. Les développeurs travaillent directement avec la maîtrise d'ouvrage, les testeurs sont intégrés à l'équipe de développement, etc. • Feedback : qu'il s'agisse d'itérations courtes, de livraisons fréquentes, de travail en binômes ou de tests automatiques exécutés en permanence, la plupart des pratiques XP sont conçues pour donner un maximum de feedback sur le déroulement du projet afin de corriger la trajectoire au plus tôt. En particulier, les points de début d'itération offrent à l'équipe le moyen de prendre du recul sur son fonctionnement et de l'améliorer sans cesse au fil des itérations. • Simplicité : XP relève le défi suivant : « que pouvons-nous arrêter de faire tout en continuant à créer efficacement un logiciel qui réponde aux besoins réels du client ? ». Cette recherche de simplification touche le processus lui-même, mais aussi l'outil fabriqué (la mécanique de planification incite le client à focaliser les efforts sur les fonctions prioritaires) ou encore la conception de l'application (guidée par un principe de « You ain't gonna need it »).
  • 14. Les bases du TDD Tests au début du développement Ecriture des Ecriture du tests code Tests Commencer Fini échoués
  • 15. Les bases du TDD Développements pilotés par les tests Code Tests propre échoués Refactoring Tous les tests réussis
  • 16. TDD
  • 17. Les bases du TDD Recommandations • Ne jamais écrire de code sans avoir de tests qui échouent • Les tests doivent être représentatifs des spécifications
  • 19. Les tests unitaires • Il permettent – De contrôler et conserver la qualité du produit tout au long du projet – De se focaliser sur l’amélioration du code, plutôt que sur les bugs – D’améliorer la productivité de l’équipe en automatisant un maximum de tâches redondantes et ennuyantes
  • 20. Les tests unitaires Testabilité du code • Privilégier la composition à l’héritage • Isoler les dépendances • Injecter les dépendances
  • 21. Les tests unitaires Testabilité du code • Privilégier la composition à l’héritage Héritage Composition class Fruit { class Fruit { //... } //... } class Apple extends Fruit { class Apple { //... } private Fruit fruit = new Fruit(); //... } – L’héritage permet à la sous classe d’heriter toutes les fonctionnalité – La composition permet une solution plus flexible et réutilisable – Exemple: Permet d’instancier le l’objet composite avec différentes implémentations
  • 22. Les tests unitaires Testabilité du code Injection de dépendance • Se rapporte à la fourniture d'une dépendance externe à un composant logiciel. • Formes d’injection de dépendance – interface injection – setter injection – constructor injection
  • 23. Les tests unitaires Testabilité du code Injection du constructeur public class ImportantClass { public class ImportantClass { IFoo foo; IFoo foo; public ImportantClass() public ImportantClass(IFoo foo) { { this.foo = foo; this.foo = new } EnterpriseFoo(); void doReallyImportantStuff() { } this.foo.bar(); void doReallyImportantStuff() { this.foo.bar(); } } } }
  • 25. Refactoring C’est quoi? • C’est une technique de restructuration du code existant: modifier sa structure sans changer son comportement externe • Ensemble de petites modifications dans le but d’améliorer le code
  • 26. Refactoring C’est quoi? • Chaque transformation (ou Refactoring) ne modifie qu’une petite partie du code mais un ensemble de transformations peut produire un changement significatif • Le système se doit de toujours fonctionner suite à chaque refactoring. Eviter les régressions.
  • 27. Refactoring Pourquoi? • Améliorer la structure du logiciel • Rendre le code plus lisible et maintenable • Faciliter les futurs changements • Plus de flexibilité • Augmenter la réutilisabilité • Faciliter la recherche de bugs
  • 28. Refactoring Quand? • Code dupliqué • Longues méthodes • Longues liste de paramètres • Nommage inapproprié
  • 29. Démo