Accueil / Blog / Métier / Archives / Pilotage par les tests

Pilotage par les tests

Par Simon Georges publié 23/10/2011

TDD, ATDD, BDD sont des termes qui reviennent régulièrement dans les discussions et autres blogs d'agilistes. Cette conférence de Jérôme Avoustin durant l'Agile Tour Toulouse 2011 fait le point sur ces pratiques.

Qualité

L'objectif principal du pilotage par les tests est la qualité. Mais il y a plusieurs définitions de la qualité : qualité du code, adéquation aux besoins, "une application est de qualité lorsque le coût d'ajout d'une fonctionnalité est stable".
Cette notion de qualité est fortement liée au concept de dette : dette de code, dette de besoins, dette d'obscolescence, dette de tests.

Il y a plusieurs stratégies de tests :

  • pas de tests (tests non automatisés)
  • test-after (tests automatisés codés après le code)
  • test-first (tests automatisés codés avant le code)
  • TDD

TDD

Le TDD est le Test Driven Development (et parfois Test Driven Design). C'est une validation de code, centrée sur le besoin, avec refactoring intensif.

Les 3 étapes du TDD sont : Red / Green / Refactor :

  • Red : j'écris un test qui ne passe pas
  • Green : j'écris le code minimum qui fait passer le test
  • Refactor : je refactorise (mes tests, puis mon code)

ATDD

L'ATDD est l'Acceptance TDD : l'enjeu est d'intègrer le client dans le processus (en utilisant des spécifications par l'exemple, ou des spécifications exécutables). Durant la conférence, on a pu assister à un exemple d'utilisation de l'outil Fitnesse.

BDD

Le BDD est le Behavior Driven Development : on n'écrit pas des tests, mais des comportements. Il y a un language universel : le Guerkhin (le nom vient d'un légume dérivé du comcombre, car il est utilisé dans le framework Cucumber). Tous les comportements sont écrits en suivant la syntaxe Given, When Then

Utilisation des différentes méthodes

Utilisation possible des méthodes selon le type de test réalisé
   TDD       ATDD   BDD
Unitaire Ok Ko Ok
Intégration Ok Ko Ok
Fonctionnel Ok Ok Ok
Interface Ok Ok Ok
Ergonomie Ko Ko Ko
Performance ? ? ?

En résumé : le TDD est centré sur le développeur, l'ATDD centré sur le client, et le BDD une fusion possible des deux.

Retour d'expérience

Sur un projet d'extranet web dans le domaine de l'assurance, avec une équipe hétérogène, sans habitude de tests, mais avec l'aval du management, le TDD a été mis en place.

Résultat : ce n'est pas simple, beaucoup de questions ont levées pendant la durée du projet. Au final, ils sont arrivés à 83% de couverture de code par les tests (ce qui est déjà remarquable en soi), et surtout un code beaucoup plus propre. Au final, un surcoût d'environ 20% a été ressenti par les développeurs au niveau du temps de codage nécessaire. Par contre, la répartition de ce temps a changé : de 30% de code / 30% de tests / 40% de debugs, les développeurs sont passés à 45% de code / 45% de tests / seulement 10% de debug. Le temps de debug s'est en fait reporté sur le codage des tests. Le temps de développement inclus maintenant le temps de refactoring. Il n'y a plus de code inutile, on gagne en prédictabilité puisque le temps de debug (imprévisible par nature) est réduit de façon globale.

Conseils : la procédure à adopter est de commencer par le test le plus simple, puis de continuer par le deuxième test le plus simple, ... Il ne faut pas passer trop de temps sur les tests, ou chercher la couverture maximale du code. Dans le cas d'une récupération d'un code legacy, il faut durant le refactoring appliquer la règle du "Boy scout" : "si je passe à un endroit, je le rends un peu plus propre qu'avant".

ABONNEZ-VOUS À LA NEWSLETTER !
Voir aussi
Mythes et réalités des tests automatisés Mythes et réalités des tests automatisés 30/06/2015

Petit bestiaire des mythes autour des tests automatisés et des réalités correspondantes

Retours de l'Agile Tour 2013 à Toulouse 16/10/2013

Résumé des conférences de l'Agile Tour auxquelles Makina Corpus a participé.

Agilité et bonheur au travail : retours sur l'Agile Tour de Toulouse Agilité et bonheur au travail : retours sur l'Agile Tour de Toulouse 10/12/2015

Makina Corpus nous raconte l'Agile Tour Toulouse #attls 2015.

TDD doesn't make you less productive TDD doesn't make you less productive 19/10/2016

A recent study contradicts popular belief

Des jeux pour apprendre 20/10/2011