TDD : Qu’est-ce que le développement piloté par les tests ?

TDD : Qu’est-ce que le développement piloté par les tests ?

Pour fournir des logiciels de qualité, le développement Agile a introduit de nombreuses pratiques tel que le développement piloté par les tests (TDD = Test Driven Development ). C’est l’une des pratiques qui est reconnue comme une approche efficace qui génère des résultats positifs.

Qu’est-ce que le TDD ?

Le développement piloté par les tests (TDD) est une approche de développement logiciel avec laquelle des cas de test sont développés avant de créer le code lui même.

Pour faire simple, Le développement piloté par les tests commence par la conception et le développement de tests pour chaque petite fonctionnalité d’une application en premier, dans ce cas notre code est écrit afin de réussir le test et de rendre le code simple et sans bugs.

La démarche à suivre pour mettre en place cette l’approche TDD est décomposée en trois phases appelé RGR

  • R (Red): écrire un code de test et les faire échouer
  • G (Green) : écrire le code métier qui valide le test
  • R (Refractor) : remaniement du code afin d’en améliorer la qualité

Les phases de développement piloté par les tests (TDD)

Le TDD est une approche itérative qui combine la programmation, la création de tests unitaires et le refactoring. Les étapes suivantes définissent comment effectuer des testes TDD.

  1. Ajouter un test :L’ajout d’une nouvelle fonctionnalité commence par l’écriture d’un test qui réussit si les spécifications de la fonctionnalité sont respectées. Le développeur peut découvrir ces spécifications en posant des questions sur les cas d’ utilisation et les user stories . Un des principaux avantages du développement piloté par les tests est qu’il permet au développeur de se concentrer sur les exigences avant d’ écrire du code. Cela contraste avec la pratique habituelle, où les tests unitaires ne sont écrits qu’après le code.
  2. Exécutez tous les tests : Le nouveau test devrait échouer pour les raisons attendues. Cela montre qu’un nouveau code est réellement nécessaire pour la fonctionnalité souhaitée. 
  3. Écrivez le code le plus simple qui passe le nouveau test : Un code inélégant ou en dur est acceptable, tant qu’il réussit le test. Le code sera affiné de toute façon à l’étape 5. Aucun code ne doit être ajouté au-delà de la fonctionnalité testée.
  4. Tous les tests devraient réussir : En cas d’échec, le nouveau code doit être révisé jusqu’à ce qu’il passe. Cela garantit que le nouveau code répond aux exigences du test et ne rompt pas les fonctionnalités existantes.
  5. Refactoriser le code: une fois le test exécuté avec succès, vérifiez la redondance ou toute optimisation possible du code pour améliorer les performances globales. Assurez-vous que la refactorisation n’affecte pas le comportement externe du programme.
  6. Répétez ..

Les avantages du TDD

La mise en place d’une approche de développement piloté par les tests offre de nombreux avantages au sein du développement d’un logiciel.

  • Favorise la création de code optimisé.
  • Aide les développeurs à mieux analyser et comprendre les exigences des clients et à demander plus de clarté lorsqu’elles ne sont pas correctement définies.
  • La couverture des tests sous TDD est beaucoup plus élevée par rapport aux modèles de développement conventionnels. En effet, le TDD se concentre sur la création de tests pour chaque fonctionnalité dès le début.
  • Améliore la productivité du développeur et conduit au développement d’une base de code flexible et facile à maintenir avec moins de bugs
  • Favorise la création de code optimisé.
  • Aide les développeurs à mieux analyser et comprendre les exigences des clients et à demander plus de clarté lorsqu’elles ne sont pas correctement définies.
  • La couverture des tests sous TDD est beaucoup plus élevée par rapport aux modèles de développement conventionnels. En effet, le TDD se concentre sur la création de tests pour chaque fonctionnalité dès le début.
  • Améliore la productivité du développeur et conduit au développement d’une base de code flexible et facile à maintenir avec moins de bugs

Les inconvénients du TDD

Le développement piloté par les tests n’effectue pas suffisamment de tests dans les situations où des tests fonctionnels complets sont nécessaires pour déterminer le succès ou l’échec, en raison de l’utilisation intensive de tests unitaires. Ainsi, les utilisateurs sans expérience avec le développement piloté par les tests peuvent trouver qu’ils se déplacent de 15 à 30% plus lentement, mais après 1 à 2 ans de pratique, le processus de rétroaction en temps réel de TDD peut améliorer la productivité.

Frameworks pour le développement piloté par les tests

Il existe plusieurs frameworks qui prennent en charge le développement piloté par les tests. Voici quelques exemples populaires.

  1. csUnit et NUnit – Les deux sont des frameworks de test unitaire open source pour les projets .NET.
  2. PyUnit et DocTest: Framework de test unitaire populaire pour Python.
  3. Junit : outil de test unitaire largement utilisé pour Java
  4. TestNG : Un autre framework de test Java populaire. Ce cadre surmonte les limites de Junit.
  5. PHPUnit : Un framework de test PHP
  6. Rspec: un framework de test pour les projets Ruby

Partagez !

Laisser un commentaire

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