[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