La qualité du produit avec de la TDD

Ecrit par << Paquet Judicaël >>

La TDD (Test Driver Development) est une technique de développement logiciel qui consiste à écrire les tests unitaires d’une fonction avant d’écrire le contenu de cette fonction. C’est une pratique très connue dans le domaine de l’intégration continue.

Le but de cette pratique connue en XP, Scrum XP ou en devops est d’indiquer à quoi s’exposera le code avant même d’être écrit. Cette pratique change radicalement les concepts classiques des développeurs et peut s’avérer perturbante.

L’idée de la TDD est de renforcer la qualité des produits en s’assurant que son code fonctionne tout le temps.

Une culture à changer avant tout

La TDD est une pratique qui peut énormément apporter à la qualité. Cependant l’amener sans accompagnement peut avoir des conséquences sur la productivité des équipes.

Il est essentiel que les équipes de développement comprennent concrètement ce qu’apporte la TDD avant de les forcer à en faire.

Rappelez leur que la TDD c’est :

  • Un code  de meilleur qualité
  • Un outil pour diminuer considérablement les bugs
  • Un gain de temps dans un avenir proche pour faire du projet et non plus du débogage
  • Une méthode de développement très aimée sur un CV

Tous les arguments sont bons pour convaincre les développeurs de la nécessité de changer leur façon de faire pour une façon plus propre de le faire. Cependant cela doit partir d’arguments concrets.

Cycle de la TDD

La TDD propose un cycle de travail aux développeurs pour obtenir une qualité optimale de la mise en place des tests unitaires :

  • Ecrire le test unitaire
  • Lancer celui-ci et vérifier qu’il échoue (classe pas encore codée)
  • Ecrire la classe à tester avec le minimum pour faire marcher le test
  • Lancer le test et vérifier qu’il fonctionne
  • Finir le code complet de la classe
  • Vérifier que le test fonctionne toujours (non-régression)

Pratiques complémentaires

En TDD il existe des pratiques utiles à mettre en place :

  • L’utilisation de « mocks » en remplacement des modules de code qui n’ont pas encore été écrits
  • La mise en place de « Test Fail First » qui a pour but de créer une première erreur à tester qui sera éventuellement trappée.

Outils de tests unitaires

Chaque langage possède son outil de test unitaire facilement exploitable et tous basés sur les mêmes principes.

    • Php Unit (PHP)
    • JUNit (Java)
    • NUnit (.Net)
    • Unit.js (Js)
    • CppUnit (C++)

Ces outils vous permettront de réaliser vos tests unitaire et de les lancer manuellement. Cependant il existe de nombreux outils qui permettent de faire des tests unitaires de façon automatisée comme Team City, Jenkins ou Travis (outil saas directement connecté avec Git Hub).

Petit exemple rapide avec PHP Unit

Pour vous donner une première idée de l’écriture de tests unitaires, j’ai décidé de vous montrer un exemple simple sous Php Unit. Le but n’étant pas ici d’apprendre à faire des tests unitaires mais de vous montrer que la pratique n’est pas aussi difficile qu’on pourrait le croire au premier abord.

Tests Unitaires avec Php Unit
Tests Unitaires avec Php Unit

Conclusion

La TDD est une pratique très utile pour améliorer la qualité de vos produits et renforce la qualité de vos mises en production. Le produit n’ira pas en production si un des tests unitaires ne passe pas.

Il ne faut pas oublier qu’il y a un accompagnement à faire pour ne pas voir les équipes de développements céder à la démotivation si vous leur imposez cette pratique pas toujours bien acceptée.

4 réponses sur “La qualité du produit avec de la TDD”

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.