Qu'est-ce que le TDD ?

Par
Gautier Siclon
10/3/2019
icon tech vert
Tech
La méthode TDD
Que vous ne connaissiez rien à la programmation Android, IOS ou pas, vous avez certainement déjà entendu parler de tests unitaires. Non ? Les tests unitaires sont des tests automatisés pour garantir le bon fonctionnement de votre application, mais pas seulement. Ils vont nous servir à beaucoup de choses et on va essayer de vous montrer ici leur importance.

C'est également pour nous une bonne manière de choisir un développeur de qualité. Celui-ci va certes passer plus de temps à coder mais il aura pris le temps de trouver tous les scénarios possibles du code qu'il écrit.

Développer une application, comment ça marche ?

Une fois les scénarios de développement bien écrits et validés, on va pouvoir commencer à coder. Que ce soit sur Android, IOS ou autre plateforme on procédera de la même façon.

La méthode du TDD ou Test Driven Development

Et oui on n’échappe pas à l'anglais, littéralement développement dirigé par les tests. Contrairement à ce que l'on peut penser ou ce que le monde informatique à fait pendant de nombreuses années, la tendance aujourd'hui est à écrire les tests en premiers. On va en effet chercher sans avoir commencé à développer comment faire échouer notre application.

Si cela vous intéresse voici le lien vers l'un des plus gros mentor du TDD et du clean coding : Uncle bob.

Uncle bob est un des grands noms du monde du développement informatique moderne, ses articles sont bien sur en anglais et parfois très long mais c'est souvent très intéressant.

Les tests unitaires pour une application mobile, pourquoi ?

Il y a plusieurs niveaux de tests :

  • Tests de fonctionnement d'interface graphique (Est ce que mon formulaire d'inscription fonctionne bien par exemple)
  • Tests unitaires métier (Est ce que je peux m'inscrire avec un mail non valide ?)
  • Tests d'intégrations (Est ce que mon application arrive à se connecter et discuter avec un serveur distant ?)

Comme vous devez le penser, cela peut prendre beaucoup de temps d'écrire tous ces tests. C'est pourquoi il est indispensable de définir une stratégie de test ensemble avant de commencer. Si votre application est un prototype ou dans le but de perdurer pendant plusieurs années il faudra bien avoir choisi ce que l'on défini comme fonction critique ou non.

Une application mobile stable et fonctionnelle

Ces tests vous serviront à garantir le bon fonctionnement de votre application à chaque mise à jour.

En effet, on lancera ces tests avant chaque nouveau build (ou compilation de votre application avant publication dans l'app store par exemple). Cela permettra d'être sur que tout fonctionne correctement.

Un nouveau développeur n'aura pas peur de reprendre le code sans tout casser.

Autres intérêt de réaliser des tests automatisés, pouvoir laisser un autre développeur reprendre le code sans casser le fonctionnement total d'une application. Le code informatique c'est le paradigme de l'effet papillon, on crée quelques briques de codes qui discutent ensemble, puis 10, puis 1000. Plus une application est grosse ou compliqué, plus le facteur de risque en changeant un comportement que l'on casse quelque chose ailleurs est grand.

Beaucoup de développeurs refuseront même de toucher à un code qui n'est pas cadré.

Plus de temps de développement, donc plus cher ?

C'est généralement la première réaction, cependant dans le cadre ou votre produit n'est pas un prototype vous allez économiser de l'argent. L'écriture de ces tests peut prendre autant de temps que le développement de la fonctionnalité mais cela vous fera économiser également tous ces tests manuels. (Donc en réalité vous allez en économiser)

Imaginez que vous vouliez garantir que votre formulaire fonctionne à chaque mise à jour ? Il suffit de relancer la suite de tests, si cela ne passe pas c'est que il y a eu une erreur sur votre application mobile.


Graphique qui représente l'évolution des bugs avec et sans tests
Graphique représentant l'évolution des bugs avec et sans tests


Pour un prototype relativement simple, on s'en sortira en maintenant une stratégie de test basique. Cependant si votre application est critique, veut pouvoir grossir proprement, nous ne pourront que vous conseiller d'opter pour une stratégie de test optimal.

Pensez à demander la stratégie de tests de votre prestataire lorsque vous demandez un devis. Plus le devis est bas plus vous aurez de chance que celle-ci n'existe pas.

Vous voulez plus d'informations sur ce sujet ?