TDD (Test-Driven Development)

Afin de répondre à nos exigences communes de qualités, les développements sont pilotés par les tests.

A l’inverse de la méthode traditionnelles, la méthode TDD consiste à rédiger les tests unitaires en amont du développement d’une portion de code.

Notre objectif est de tester toute fonctionnalité de l'application afin de traquer des comportements divergents et de les corriger au sein même du développement. En prime, cette méthode nous permet de garantir l’évolutivité du code.

Cycle de développement

Le cycle de développement en TDD comporte 5 étapes :

  • Écrire un premier test
  • Exécuter ce test et vérifier qu’il échoue (car le code qu’il teste n’a pas encore été implémenté)
  • Écrire le code minimal nécessaire à la validation du test
  • Exécuter à nouveau le test et contrôler qu’il passe
  • Remanier le code afin d’en améliorer la qualité en conservant la même fonctionnalité et bien entendu la validation du test

Bénéfices

La mise en place de la méthode TDD offre de nombreux avantages au sein du développement d'un projet :

  • Les tests unitaires sont réellement écrits
    On remarque généralement que les tests sont souvent remis à plus tard (par manque de temps ou d’intérêt). Le fait de commencer par rédiger les tests permet de s’assurer que les tests seront faits.
     
  • Clarification des détails de l’interface et du comportement
    Lors de l’écriture d’un test, il est nécessaire de s’interroger sur l’implémentation à venir en réfléchissant aux noms des méthodes, aux valeurs attendues (paramètres), aux valeurs de retour, au comportement, etc. Ainsi la conception est plus claire et on écrit seulement du code utile.
     
  • Vérification démontrable, répétable et automatisée
    Le fait de disposer d'un grand nombre de tests permet de s'assurer de la solidité et de la pérennité du code. Les temps de recette sont également diminués par l’adoption de cette pratique. La compréhension de votre besoin en est également renforcé.
     
  • Non régression
    Lors de la modification de code, les tests unitaires sont relancés afin de s'assurer que la modification n'a pas impacté l'existant.

Schéma présentant le principe d'intégration continue : le lien chronologique entre les différentes étapes (normes de codage, jeux de données et de tests, tests algorithmiques, code fonctionnalité, tests manuels) et le contrôle continu qui est présent tout au long.