đ§ Toujours savoir quel test Ă©crire grĂące aux ZOMBIES !
Plus d'excuse, Ă©crivez vos premiers tests unitaires dĂšs maintenant :)
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 đ