Une méthode agile, sans le savoir !         Test Driven Development         ou comment tester en développant              ...
TDD: qu’est-ce ? La   méthode TDD, Test Driven Developement ou développement piloté par les tests est une méthode de déve...
Habitude du développeurConception réalisée par des consultantsfonctionnels                                       Conceptio...
La vision TDDConception réalisée par des consultantsfonctionnels                              Conception                  ...
Le cycle initial du TDDEtape 4:                                      Etape 1:Le développeur                               ...
Démarche (1/2) Ici,     le développeur écrit un peu de code de test et ensuite  implémente le métier. Le code métier est...
Démarche (2/2)   Décomposée en trois phases    appelé RGR    (aussi appelé la Mantra).    Les deux premières phases sont ...
En clair      Ajouter un testExécuter le test et constater    qu’il échoue (RED) Ajouter du code pour faire       passer l...
Avantages : Tests écrits ! La mise en place de la méthode TDD offre de nombreux  avantages au sein du développement dun l...
Avantages : Satisfaction    La satisfaction du développeur permet dobtenir un code plus cohérent    En suivant la méthode...
Avantages : Clarification Clarification  des détails de linterface et du comportement En effet, lorsque le développeur éc...
Avantages : Rejouabilité Vérification   démontrable, répétable et automatisé Le fait de disposer dun grand nombre de test...
Avantages: Non        régression Non  présence de régression Lorsquun développeur modifie une méthode existante, il peut ...
Comment procède-t-on ? Dans   le monde Java: utilisation d’API  JUNIT   ▪ Pour le code des classes de tests unitaires  ...
Travaux pratiques Exemple   1 : Implémentation d’une classe de service de compte bancaire (basique) Exemple   2: Impléme...
Prochain SlideShare
Chargement dans…5
×

Test driven development v0.2 20121221

1 461 vues

Publié le

Quelques bases sur la méthode TDD (Test Driven Development)

(depôt git avec exemple en préparation)

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
1 461
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
21
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Test driven development v0.2 20121221

  1. 1. Une méthode agile, sans le savoir ! Test Driven Development ou comment tester en développant Frédéric Delorme frederic.delorme@gmail.comDécembre 2011
  2. 2. TDD: qu’est-ce ? La méthode TDD, Test Driven Developement ou développement piloté par les tests est une méthode de développement (comme son nom l’indique) imposant la formalisation du besoin technique avant son développement, et ce en utilisant des outils permettant de rejouer et vérifier à volonté la conformité de son implémentation.  Sur la plateforme Java, cet outil est souvent JUnit (http://www.junit.org).
  3. 3. Habitude du développeurConception réalisée par des consultantsfonctionnels ConceptionDéveloppement réalisée par des développeurs CodeTest(s) réalisé(s) par d’autres personnes(souvent les développeurs, mais pas ceux qui ont Test(s?)créé le code, dans un esprit de cross-testing…)
  4. 4. La vision TDDConception réalisée par des consultantsfonctionnels Conception Test(s?)Tests et Développement (dans l’ordre)réalisés par la même personne pourun même composant ! Code
  5. 5. Le cycle initial du TDDEtape 4: Etape 1:Le développeur Le concepteurrefactorise son code(Commons + Conception fonctionnel fait le design en rédigeantcouverture des cas des Cas de test .d’erreur) Test TestEtape 3: Etape 2:Le même développeur Le développeurcode au fur et à code les testsmesure l’(es) objet(s) Code unitairesqui répond(ent) aux correspondant auxcas de test cas de tests
  6. 6. Démarche (1/2) Ici, le développeur écrit un peu de code de test et ensuite implémente le métier. Le code métier est soumis aux tests puis il est corrigé jusqu‘à ce que ses tests soient validés. Le développeur procède éventuellement ensuite à un refactor du code qui est un autre principe de lExtreme Programing permettant daméliorer la qualité interne du code en procédant à plusieurs opérations (renommage de méthodes, suppression de codes inutiles,...).
  7. 7. Démarche (2/2) Décomposée en trois phases appelé RGR (aussi appelé la Mantra). Les deux premières phases sont nommées d’après la couleur de la barre de progression dans les outils de tests unitaires comme Junit R (Red): écrire un code de test et les faire échouer G (Green) : écrire le code métier qui valide le test R (Refactor)  : remaniement du code afin den améliorer la qualité
  8. 8. En clair Ajouter un testExécuter le test et constater qu’il échoue (RED) Ajouter du code pour faire passer le testExécuter le test et constater qu’il passe (GREEN) Remaniement du code Contrôler que les tests passent toujours
  9. 9. Avantages : Tests écrits ! La mise en place de la méthode TDD offre de nombreux avantages au sein du développement dun logiciel. Voici les avantages apportés par lemploi de cette méthode Les tests unitaires sont réellement écrits On remarque généralement que les tests unitaires sont souvent remis à plus tard (par manque de temps ou dintérêt). Le fait de commencer par rédiger les tests permet de sassurer que les tests seront écrits.
  10. 10. Avantages : Satisfaction La satisfaction du développeur permet dobtenir un code plus cohérent En suivant la méthode traditionnelle le développeur écrit une unité et va ensuite procéder aux tests afin de sassurer que ce quil a codé est valide. Cette méthode est peu satisfaisante pour un développeur car il est déjà conscient que le code quil a écrit est juste. A linverse, en appliquant la méthode TDD, il va commencer par rédiger les tests puis ensuite passer à limplémentation de lunité afin de faire passer les tests. Ce procédé est plus satisfaisant et motivant car il sagit dune sorte de défis de faire valider les tests, Cest une sensation daccomplissement. Il est important de ne pas ignorer les aspects psychologiques si on veut sassurer que le travail réalisé par les développeurs soit propre et efficace.
  11. 11. Avantages : Clarification Clarification des détails de linterface et du comportement En effet, lorsque le développeur écrit du code de test pour tester une implémentation qui nexiste pas encore, il va devoir penser aux détails de la méthode dont il a besoin pour écrire la spécification. Aussi, il va sinterroger sur le nom de la méthode, sa(ses) valeur de retour, ses paramètres, comportement,... Cela permet de clarifier la conception et décrire seulement du code utile.
  12. 12. Avantages : Rejouabilité Vérification démontrable, répétable et automatisé Le fait de disposer dun grand nombre de test permet de sassurer de la solidité et garantie du code.
  13. 13. Avantages: Non régression Non présence de régression Lorsquun développeur modifie une méthode existante, il peut relancer les tests unitaires afin de sassurer que sa modification na pas impacté lexistant et donc cela offre un feedback immédiat.
  14. 14. Comment procède-t-on ? Dans le monde Java: utilisation d’API  JUNIT ▪ Pour le code des classes de tests unitaires  DBUNIT ▪ Pour le setting de données dans une base  HSQLDB (par exemple) ▪ Comme moteur de base de données en mémoire (pour le temps d’exécution des tests) ▪ Chaque test peut avoir son jeu de données isolé.
  15. 15. Travaux pratiques Exemple 1 : Implémentation d’une classe de service de compte bancaire (basique) Exemple 2: Implémentation d’une DAO pour un objet persistant et ajout d’un jeu de données de test.

×