[Toulibre] Atelier C++ - Introduction au TDD

Sébastien Dinot sdinot at april.org
Mer 9 Jan 23:18:51 CET 2019


Bonsoir,

Aiki Zen via Toulouse-ll a écrit :
> qu'est que le TDD ?

C'est effectivement la pratique décrite sur la page :
https://fr.wikipedia.org/wiki/Test_driven_development

Cette pratique exige un peu de discipline. Paradoxalement, beaucoup de
développeurs n'aiment pas écrire les tests avant le code et considèrent
le TDD comme un exercice d'ascétisme pénible. Dans les faits, c'est
surtout que s'ils le pouvaient, ceux-ci ne feraient pas l'effort
d'écrire des tests, que ce soit avant ou après le code utile.

Pourtant, j'ai pu vérifier que cette pratique avait bien des vertus :

* En écrivant le test avant le code utile, on a plus d'assurance quant
  au test effectif du code utile. Dans le cas contraire, bien trop
  souvent et à l'instar de la documentation, l'écriture des tests est
  repoussée à la fin du projet - promis, juré - et passe in fine à la
  trappe parce qu'on est à la bourre dans la dernière ligne droite :
  c'est la méthode la plus efficace que je connaisse pour rater une
  recette.

* En écrivant le test avant le code utile, on peut vérifier avant même
  d'écrire le code utile si une interface est bien conçue, si son
  utilisation « coule de source ». Si elle s'avère inutilement complexe
  ou d'un usage malaisé, si elle ne fournit pas les bonnes méthodes ou
  les bons objets, il faut la revoir. Cette prise de conscience a lieu
  avant que le code utile ne soit effectivement écrit et il est dès lors
  plus facile d'envisager la révision de l'interface (le seul code
  à modifier ou à jeter est celui du test).

* En écrivant le test avant le code utile, on réalise quelles sont les
  méthodes réellement utiles et quelles sont celles dont on peut se
  passer (c'est particulièrement vrai avec les méthodes d'accès en
  lecture / écritures aux attributs des classes, i.e. les sempiternels
  « set » et « get »). Là encore, on évite des développements inutiles.

* En écrivant le test avant le code utile, le premier n'est pas biaisé
  par la connaissance du second (véridique, on m'a déjà dit « ajoute tel
  caractère en fin de chaine sinon, le test va planter, le code ne gère
  pas le cas où il n'y est pas ! »).

* En écrivant le test avant le code utile, on évite que ce dernier soit
  utilisé pour générer les données de test (là encore, c'est du vécu et,
  « étrangement », le test ne prend jamais en défaut le code utile dans
  ces circonstances, même lorsque celui-ci est complètement foireux). Si
  le code utile n'existe pas, les données de test doivent être extraites
  d'une spécification ou générées à la main ou par un outil de
  référence.

Bref, avec le TDD, le code utile se révèle mieux testé et plus en
adéquation avec le besoin réel.

> Intéressé par la programmation depuis longtemps, est t'il possible de
> suivre l'atelier à distance ?

Non, désolé, aucune captation n'a été prévue et je n'aurais pas le temps
de la préparer d'ici samedi, d'autant plus qu'il faut réaliser des
essais in situ auparavant pour éviter les mauvaises surprises le jour J.

Sébastien

-- 
Sébastien Dinot, sdinot at april.org
April, http://www.april.org/
Promouvoir et défendre le logiciel libre



Plus d'informations sur la liste de diffusion Toulouse-ll