Tests unitaires et TDD : Aidez moi ! Je suis bloqué !



Les 24 et 25 mai prochains, j’animerai une session pas tout à fait comme les autres, que j’ai intitulée : « Tests unitaires et TDD : Aidez moi ! Je suis bloqué ». Lors de cette session, je proposerai au public quelques situations que j’ai rencontrées dans ma démarche d’apprentissage du TDD, voire du BDD, et d’écriture de tests unitaires, et que je ne sais toujours pas très bien résoudre…
Vous l’avez compris, ce n’est pas moi qui apporterai la matière, c’est-à-dire les réponses possibles à ces situations, mais le public ! Une session que je souhaite participative. Bien que je n’aie jamais ni organisé ni même participé à ce type de session, je me suis lancé. Un peu dans la lignée de mes derniers billets de blog sur l’importance de l’échec, j’expérimente, je prend un risque, je me mets en danger… Car si effectivement, il n’y a que peu de monde pour essayer de donner quelques éclairages, la session risque de ne pas durer très longtemps
Mais soit, depuis un certain temps je note quelques situations que j’aimerais présenter. Mon but n’est pas de les exposer ici. Et si vous avez l’occasion de vous rendre à Agile France, et participer à cette expérience, vous pourrez les découvrir. De toutes façons, il n’y a rien d’extraordinaire, et la session est au niveau Ha de Shu-Ha-Ri (c’est-à-dire moyen).
J’ai aussi prévu de demander au public de soumettre quelques situations qui leur viendraient à l’esprit. Le risque de cette session étant de ne pas avoir suffisamment de situations à proposer, je me suis dit que vous faire participer, vous lecteurs de ce blog, pouvait être une bonne idée ! Cela vous permettrait d’obtenir une ou plusieurs réponses à des questions que vous devez certainement vous poser comme moi, dans votre démarche d’apprentissage. Donc allez-y ! C’est ouvert !
Je ne vous promets pas de tout retenir, simplement parce que mon backlog n’est pas vide, et qu’il faut également que je m’approprie votre problème pour le restituer au mieux le jour de la conférence. Si c’est le cas, nous pourrons travailler sur un exemple qui mettra votre problème en situation et ainsi recueillir éventuellement des éclairages de participants. Pour vous lâcher, vous pouvez utiliser les commentaires, par mail, twitter, etc. Je ne manquerai pas, évidemment, de vous faire un retour une fois Agile France passé.
Edit : Comme me le suggère Xavier dans les commentaires, voici un ou deux exemples de situations que je vais proposer. Je ne vous révèle pas tout, sinon la session perd de son intérêt. Et si d’aventure vous avez des solutions ou simplement des avis, merci de les mettre de côté pour la session ou pour un peu plus tard
.
- Méthode « passe-plat » : j’ai par exemple une façade F, avec une méthode A qui encapsule simplement l’appel à une méthode B d’un collaborateur C, B ayant un nom différent de A, mais, admettons, les mêmes paramètres. Dois-je écrire un test unitaire pour A si je suis censé faire du TDD ?
- J’ai le sentiment qu’une classe B sera nécessaire pour réaliser un traitement. La classe B sera utilisée par A, qui existe et doit donc évoluer. Dois-je d’abord ajouter des tests à A et faire émerger B ? ou directement créer B en TDD puis le faire utiliser par A ?
Alors à vos contributions et merci de votre participation !
Comments
11 Comments on Tests unitaires et TDD : Aidez moi ! Je suis bloqué !
-
Xavier NOPRE on
mer, 9th mai 2012 11 h 37 min
-
Jérôme on
mer, 9th mai 2012 11 h 46 min
-
Xavier NOPRE on
mer, 9th mai 2012 13 h 41 min
-
Jérôme on
mer, 9th mai 2012 14 h 11 min
-
Romain Trembleau on
mer, 9th mai 2012 18 h 04 min
-
Jérôme on
mer, 9th mai 2012 18 h 18 min
-
Sébastien Fauvel on
lun, 14th mai 2012 18 h 26 min
-
Jérôme on
lun, 14th mai 2012 22 h 40 min
-
Cédric Girard on
mar, 29th mai 2012 11 h 03 min
-
Jérôme on
mar, 29th mai 2012 11 h 21 min
-
De retour d’Agile France : Genba on
mer, 13th juin 2012 10 h 14 min
Salut Jérôme,
Malheureusement, je ne pourrais pas être à Agile France 2012, sinon je serais venu avec plaisir voir cette session d’un nouveau genre, et probablement, participer !
Se baser sur la participation du public est certes osé, j’avais tenté le coup pour Agile Tour Marseille avec un coding-dojo (http://xnopre.blogspot.fr/2011/10/agile-tour-marseille-2011-retour.html).
Questions pratiques : quel langage envisages-tu ? Combien de temps va durer ta session ? Parce que si c’est 1h, ça va passer vite pour exposer et traiter chaque problème ….
A+
Xavier
Salut Xavier,
J’ai prévu 1h de session, et en timebox. Donc on traitera ce qu’on pourra traiter ! Et je pense qu’on ne pourra pas tout traiter.
Je m’attends aussi à ce qu’il y ait des sujets auquel personne n’apporte de réponses. Et d’ailleurs la session ferait un gros bide si justement personne n’apporte de réponse à aucune situation ! C’est une possibilité que j’envisage, d’où la prise de risque.
Pour le langage, je prendrai C#. Car c’est celui que je maîtrise, et ça reste un langage objet simple, proche de C et donc de Java. J’essayerai d’éviter les spécificités du langage (comme LINQ) mais j’en conserverai certaines (inférence de type, lambda expressions/closures, constructeurs simplifiés).
Si tu as des situations, n’hésite pas à en proposer !
@+
Re-salut Jérôme,
Merci pour les précisions …
Pour ce qui est des situations, je ne suis pas sûr de cerner le type de problèmes auxquels tu penses, le registre dans lequel tu veux te situer … Pourrais-tu donner 1 ou 2 exemples ? A moins que ça ne dévoile trop le contenu de ta session ….
Xavier
Effectivement, si ça peut aider… je vais en ajouter dans l’article
Salut,
Effectivement risqué de se baser sur la participation du public pour ce genre de session mais le résultat peut être très sympa
Personnellement, mes plus gros bloquages TDD sont souvent liés soit à une mauvaise compréhension du fonctionnel soit à la difficulté de « mocker » certaines parties.
Par exemple en ce moment je dois créer des plugins pour une application maison dont les API sont très limitées. Je suis coté intégration donc je n’ai accès qu’à ce que la R&D ouvre et ce n’est parfois (voire très souvent) pas suffisant pour couvrir tous mes cas de test…
Je bosses en Java et l’appli empile pas mal de frameworks (Spring, Hibernate…)
Si j’avais pu participer à la session, je t’aurais certainement interrogé sur ce genre de problématique
@+
Romain.
Salut Romain,
Si tu as un cas précis, on peut en parler, notamment dans l’écriture de mock. N’hésite pas à soumettre une proposition et si nous arrivons à travailler suffisamment hors contexte, je pourrai le proposer lors de la session.
En revanche, pour les questions, je ne prétends pas savoir forcément y répondre ! C’est bien pour ça que j’organise une conférence sur ce mode !
@+
Salut,
Voici une question que j’aurais pu poser si j’étais venu à Agile France:
Lorsque l’on « mocke » le comportement d’un collaborateur, que se passe t’il si le comportement évolue ?
Un cas concret vécu: J’utilise une méthode qui me retourne null si les paramètres sont invalides. Je mocke cette méthode située dans une autre classe. On décide de modifier le comportement pour lever une exception. Mes tests continuent de fonctionner tant que le mock n’est pas mis à jour.
Cela peut se produire avec des évolutions sur le code de notre application mais aussi lorsque l’on met à jour une librairie. Comment s’assurer que nous simulons bien le bon comportement ?
Bonne chance pour ta session.
Salut Sébastien,
Question très intéressante !
Elle est parfaitement complémentaire des réflexions que j’avais notées.
Je vais l’ajouter à la liste et je te tiens au courant du résultat !
Merci de ta réflexion, et ton soutien !
Bonjour,
développeur et tech leader agile dans ma boite, j’ai regretté d’être arrivé en retard et d’avoir raté votre session. Mes tests se portent bien, mais c’est un domaine que l’on peut améliorer pendant des années de pratique, et on rencontre toujours un cas qui bloque. Mon principal soucis est de garder une bonne organisation cohérente quand la base de tests augmente fortement, et que les responsabilités des classes de tests deviennent floues.
J’attends tout retour de votre conférence avec impatience.
Cédric
Bonjour Cédric,
J’ai effectivement prévu de faire un retour de la conférence.
Je ne vais certainement pas pouvoir m’en occuper cette semaine pour cause d’examen de certification, mais dès la semaine prochaine j’essayerai de mettre les retours qui m’ont été faits en ligne.
Restez connecté au blog !
Jérôme
[...] En tout cas, sur le papier, elle était casse gueule. Je ne fais pas le pitch, vous le trouverez sur ce blog et sur le site d’Agile [...]
N'hésitez pas à me faire vos retours...
et n'oubliez pas de créer votre gravatar!





