TDD

Le Test-Driven Development, ou TDD, est une idée qui semble tout simple: Écrire les tests avant d’écrire le code.

Pourtant, cette méthode de travail va à l’encontre de la façons traditionnel de programmer et de l’objectif usuel des tests.

Les tests ne sont pas seulement un outil permettant de déceler des bogues ou de vérifieer si notre programme fonctionne commme prévus. Il permet plutôt aux développeurs de comprendre les besoins et de livrer les fonctionnalités de façon éfficace et prévisible.

Lorsque le TDD est utilisé efficacement, le code qui est produit est d’une qualité supérieur, plus flexible face aux changements et beacoup plus fiable.

Changements

Au cour de sa conception, les besoins et fonctionnalités d’un programme évoluent constamment. Plusieurs changements s’imposent, par contre, impossible de savoir d’avance qu’elles parties du système devront être modifié. Il est donc primordiale d’écrire du code le plus simple possible, il doit être facile à comprendre et à modifier. Son but doit être exprimé clairement, sont design simple et absent de duplication. Il faut également tester afin de s’assurer que les changements apporté ne brisent pas une autre partie de notre système. Tester de façon manuel est extrèment coûteux en temps, il est donc important d’automatiser le processus.

Le problème, c’est que de nombreux développeurs n’aiment pas écrire des tests, trouvent sa laborieux, voir inutile. Ils croient perdre leurs temps en écrivant des tests et préfèrent coder directement des fonctionnalités, ils ne comprennent pas que les tests ne servent pas seulement à vérifier le fonctionnement des fonctionnalités.

En effet, en écrivant les tests avant le code, le développeur peu clarifier et comprendre ce que le code doit faire, ça nous permet d’avoir rapidement du feedback sur la qualité de notre code et sur le design qu’on souhaite implémenter.

Cycle

Le TDD se fait suivant un cycle standard:

  • Écrire un test qui ne passe pas en écrivant le code qu’on voudrait avoir
  • Écrire du code rapidement pour faire passer notre test
  • Faire du refactoring
  • Recommencer…

Avantages du TDD

  • Permets de clarifier l’objectif du code qu’on s’apprête à écrire.
  • Permets de déterminer quand notre implémentation est complète.
  • Encourage l’écriture de code peu couplé, qui peut être testée en isolation.
  • Ajoute une description précise de ce que notre code fait.
  • Nous donne de la confiance face aux demandes de changements.
  • Trouve des erreurs dans notre code durant son écriture.

Le TDD demande de la discipline, par contre, aucune autre pratique ou méthode ne peut autant augmenter la qualité de votre travail.