Test Driven Development (C#)

Salut, Aujourd’hui nous parlerons sur le TDD (Test Driven Development).

Le TDD est une méthodologie de programmation selon laquelle nous sommes contraints d’écrire un test unitaire avant même de pouvoir implémenter notre nouvelle fonctionnalité.

Le TDD est très souvent utilisé dans la méthode Agile (Extreme Programming en majorité).

Le TDD ne se passe dans un cycle un plus itératif :

  1. On écrit le test unitaire qui du premier coup doit échouer (Phase rouge)
  2. Vérifier la cause de l’échec et ensuite corriger et faire réussir le test (Phase Verte)
  3. Dernière étape est le Refactoring ou encore l’optimisation de notre code sous toute ses facettes (Phase Bleue)Avantage de faire du TDD
    • Assurer la qualité technique et évolutive de notre application
    • Permet de constituer une documentation plus précise et plus clair car le test unitaire nous permet en quelque sorte de faire du débogage sous-entendu d’où l’on comprend mieux le fonctionnement de notre code.
    • Permet de facilement apportés des modifications à notre code en nous assurant toujours qu’il n’a pas changer son objectif fonctionnel.
    • Et plus particulièrement il me permet d’effectuer une sorte de checklist car très souvent quand je  développe je me sens un peu perdu dans mon code et  je me retrouve dans un désarroi terrible donc avec le TDD j’établie les fonctionnalités à implémenter et à la fin de mon travail je peux facilement évaluer ma progression.

    Exemple un peu plus pratique

    Un client nous demande de lui construire une application qui permettrai d’effectuer la somme de plusieurs nombres qu’il aura à définir.

    Donc pour un développeur classique sans TDD lui ira directement dans son IDE et commencer à créer ses classes et le code qui va avec tout de suite.

    Mais pour nous avec le TDD voici c’est que nous ferons :

  • Ouvrir Visual Studio créer un Project de type : Console Application
  • Nommez le “AdditionCalculator”
  • Ensuite Ajoutez dans la solution un nouveau Project de type Unit Test (Test Unitaire) et nommez le “Test”
  • Renommez notre classe UnitTest en “CalculatorTest” et la méthode de test TestMethod1 en “TestAdditionEntreDeuxNombres” (Le nommage doit vraiment rester explicite et doit clairement identifier la méthode de test).
  • Donc voilà entrons dans la Phase Rouge
  • Définissons premièrement le prototype de notre classe et la façon dont nous aurons à l’utiliser avec les assertions du test incluses.

A préciser qu’ici jusque-là notre classe Calculator et sa méthode Addition n’existe pas encore d’où les indicateurs d’erreurs.

Dans cette capture la ligne Assert.AreEqual(10, result); indique tout simplement que le résultat obtenu ici la somme doit être égal à 10 afin de faire passer notre test unitaire.

  • Implémentons notre classe Addition si possible en utilisant l’outil de refactoring de Visual Studio qui vas nous générer notre classe et avant cela il faudrait Ajouter en référence le projet console “AdditionCalculator” dans “AdditionCalculator.Test” mais normalement nous devrions passer par une Bibliothèque des classes.

Créer une nouvelle classe dans un nouveau fichier “Calculator” dans le projet “AdditionCalculator”.

Voilà notre classe implémenter avec la fonction Addition qui parcours le tableau de nombre et calcule la somme.

  • Allons maintenant exécuter notre test en allant dans la barre de menu > Test > Exécuter > Tout les tests ou en faisant Ctrl R+A et si vous avez bien remarquer dans notre Test il y a plus d’erreur car nous avons maintenant une implémentation concrète de notre classe, pour voir le résultat du test unitaire.

  • Et Oups !!! notre test à échouer dans l’explorateur de test à gauche de l’écran disant que la valeur attendue est de 10 tandis que la somme retourner est égale à 0.
  • Donc pour nous devons corriger cela et c’est la fin de la Phase Rouge.
  • Dans la Phase Verte corrigeons cela en retournant la variable la somme a la place de 0 dans la fonction Addition () et finalement exécutons à nouveau notre Test et voyons le résultat.
  • Et Voilà ! notre test a réussi et c’est l’accomplissement de notre code et là nous sommes vraiment assurées du fonctionnement de notre application.

 

  • Dans la dernière Phase Bleue ici nous regardons juste s’il y a un moyen d’optimiser notre code afin de le rendre plus rapide, clair et propre et dans notre cas optimisons la fonction Addition en combinant l’expression Lambda et le LINQ à la place de la boucle for comme ceci afin d’optimiser un peu plus notre code :
  • Exécutons à nouveau notre test et voyons le résultat :
  • Donc voilà notre fonction Addition qui fonctionne à merveille et prêt à être déployer dans ses meilleures performances.

Merci d’avoir lu cette article et espérant vous revoir pour un nouvel article.

Projet disponible sur GitHub :https://github.com/DanKyungu

About Dan Kyungu

Check Also

Unmanaged and Managed Code : Introduction

Salut, Dans cette série d’article Managed and Unmanaged Code, nous parlerons beaucoup plus de l’interopérabilité …

Laisser un commentaire

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