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

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

Ecrit par
Catégorie : Agile 

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é !

  1. Xavier NOPRE on mer, 9th mai 2012 11 h 37 min
  2. 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

  3. Jérôme on mer, 9th mai 2012 11 h 46 min
  4. 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 !
    @+

  5. Xavier NOPRE on mer, 9th mai 2012 13 h 41 min
  6. 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

  7. Jérôme on mer, 9th mai 2012 14 h 11 min
  8. Effectivement, si ça peut aider… je vais en ajouter dans l’article

  9. Romain Trembleau on mer, 9th mai 2012 18 h 04 min
  10. 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.

  11. Jérôme on mer, 9th mai 2012 18 h 18 min
  12. 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 ! :)

    @+

  13. Sébastien Fauvel on lun, 14th mai 2012 18 h 26 min
  14. 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.

  15. Jérôme on lun, 14th mai 2012 22 h 40 min
  16. 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 !

  17. Cédric Girard on mar, 29th mai 2012 11 h 03 min
  18. 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

  19. Jérôme on mar, 29th mai 2012 11 h 21 min
  20. 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

  21. De retour d’Agile France : Genba on mer, 13th juin 2012 10 h 14 min
  22. [...] 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!





*

Smartview, Conseil et Formation