Craft Academy

Share this post

🧟 Toujours savoir quel test Ă©crire grĂące aux ZOMBIES !

craftacademy.substack.com

🧟 Toujours savoir quel test Ă©crire grĂące aux ZOMBIES !

Plus d'excuse, écrivez vos premiers tests unitaires dÚs maintenant :)

Pierre Criulanscy
May 13, 2021
2
Share this post

🧟 Toujours savoir quel test Ă©crire grĂące aux ZOMBIES !

craftacademy.substack.com

Cet article fait partie d’un groupe d’articles Ă  propos des tests automatisĂ©s. Si vous avez manquĂ© le prĂ©cĂ©dent article, je vous invite Ă  le lire ici : 5 principes pour Ă©crire de meilleurs tests unitaires Ă  mettre en place dĂšs maintenant

Quand on commence Ă  Ă©crire des tests unitaires, et surtout quand on cherche Ă  les Ă©crire avant le code de production, on a besoin d’ĂȘtre guidĂ©.

Dans le dernier article, nous avons vu que les principes auxquels doivent rĂ©pondre les tests unitaires peuvent se rĂ©sumer Ă  l’acronyme FIRST :

  • Fast 🚀

  • Independent đŸ§Ș

  • Repeatable 🔁

  • Self-validating ✅

  • Thorough 📩

C’est ce dernier point qui va nous intĂ©resser. Comment s’assurer que nous avons couvert tous les cas possibles ?

Il existe un autre acronyme qui va pouvoir nous guider :)

Laissez-vous guider par les Z.O.M.B.I.E.S

Levons tout de suite le voile sur le contenu de cet acronyme :

  • Zero

  • One

  • Many (ou More complex)

  • Boundary behavior

  • Interface definition (ou Intention revealing code)

  • Exceptional behavior

  • Simple Scenarios, Simple Solutions

Cet acronyme se divise en fait en 3 parties :

  • S

  • BIE

  • ZOM

SBIEZOM sonne quand mĂȘme moins bien que ZOMBIES, mais c’est plus simple de comprendre les diffĂ©rents Ă©lĂ©ments de cet acronyme en le prenant Ă  l’envers, car ils se composent les uns dans les autres.

Ces trois parties vont en permanence nous aiguiller dans la création de nos tests unitaires.

Voyons comment.

Simple Scenarios, Simple Solutions

L’acronyme Z.O.M.B.I.E.S dĂ©finit un schĂ©ma de pensĂ©e Ă  adopter pour ĂȘtre guidĂ© dans les tests Ă  Ă©crire.

Chacun de nos tests, afin d’ĂȘtre comprĂ©hensibles et utiles, vont donc devoir utiliser des ScĂ©narios simples, avec des Solutions simples. Autrement dit : KISS (Keep It Stupid Simple).

C'est donc l’objectif de nos tests : crĂ©er du code simple, Ă  travers des exemples simples :

Nous ne sommes toujours pas plus avancĂ©s pour l’instant pour savoir quels tests Ă©crire !

Voyons si la prochaine partie de l’acronyme nous y aide.

B.I.E : DĂ©couvrir l’Interface de notre code, les cas limites et les cas d’erreur

Si le S de ZOMBIES nous oriente vers un objectif pour nos tests, la partie B.I.E nous assure de nous concentrer sur l’intention des tests, toujours dans un objectif de SimplicitĂ©.

Lorsque l’on Ă©crit les tests, ceux-ci doivent nous permettre de dĂ©couvrir “l’Interface” de notre code. C’est-Ă -dire la façon dont on aimerait pouvoir “appeler” notre code. C’est aussi ce qu’on appelle le wishfull programming.

C’est une pratique trĂšs puissante, car cela permet de se focaliser sur l’intention du code. C’est le I de ZOMBIES, pour Interface, mais que moi j’aime bien dĂ©crire comme Intention.

Certains comportements vont aussi ĂȘtre Ă  la marge. C’est facile de penser au “happy path”, mais dĂšs que les cas les plus complexes se prĂ©sentent, on oublie souvent de les tester. C’est le B de ZOMBIES, pour Boundaries Behaviors.

Enfin, le E de ZOMBIES s’assure qu’on teste aussi les cas d’erreurs, les fameux “sad paths”.

B.I.E nous incite donc Ă  Ă©crire du code qui rĂ©vĂšle son intention, et dont on teste certains types de comportements. Le tout, “inclus” dans le S comme le souligne le schĂ©ma. Donc toujours dans l’objectif d’écrire du code Simple.

Mais on ne sait toujours pas par oĂč commencer !

C’est là qu’intervient le reste de l’acronyme.

Z.O.M : Se laisser guider, pas Ă  pas

Lorsque l’on Ă©crit les tests avant d’écrire le code de production, c’est pour se faire guider pas Ă  pas vers l’implĂ©mentation du code, avec un feedback rapide, pour ne jamais se retrouver perdu.

Le Z nous incite donc Ă  tester un comportement dans le cas oĂč il ne se passe “rien”. C’est souvent un Ă©tat initial par exemple, cela va nous permettre de commencer Ă  faire Ă©merger l’interface de code qu’on souhaite manipuler Ă  travers une intention prĂ©cise. Il ne faut pas avoir peur d’écrire des valeurs de retour en dur ici.

Le O lui nous incite Ă  crĂ©er le premier cas le plus simple, le cas oĂč il y a “un” Ă©lĂ©ment. Ce que veut dire cette notion de “un” Ă©lĂ©ment dĂ©pend du contexte du comportement. GĂ©nĂ©ralement on s’attaquera Ă  l’une des valeurs de retour Ă©crites en dur. Pour ce faire, on crĂ©e un test Simple qui va nous obliger Ă  Ă©crire de la logique pour supprimer la valeur de retour en dur.

Enfin, le M va tester des cas plus complexes, là encore cela dépend du comportement que vous voulez tester.

Pour résumer

Comme on peut le voir sur le schĂ©ma ci-dessus, l’acronyme Z.O.M.B.I.E.S n’est pas Ă  prendre lettre aprĂšs lettre.

Il se conçoit comme plusieurs sous-ensembles.

Les premiÚres lettres, ZOM, nous aident à définir les premiers tests à écrire.

Ces tests doivent rĂ©vĂ©ler l’Intention (Ă  travers l’interface de code) du code et tester le comportement aux limites (Boundaries Behavior) ou dans les cas d’erreur (Exceptional Behavior).

Le tout, en se concentrant sur des Scénarios simples, et du code sous forme de Solutions simples.

Happy Coding :)


Cet article vous a plu ? Vous pouvez me soutenir gratuitement en vous inscrivant Ă  mon programme de parrainage, en Ă©change, je vous offre des bons de rĂ©duction valables Ă  vie sur tous les cours (actuels et futurs) de CraftAcademy.fr 🎉

Share this post

🧟 Toujours savoir quel test Ă©crire grĂące aux ZOMBIES !

craftacademy.substack.com
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 Pierre Criulanscy
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing