· practice
The Way Of Testivus - Test Coverage
'The Way of Testivus' un grand-maitre de Kung-fu explique à ses élèves la bonne couverture de tests!
Je trouve excellent « The Way of Testivus » pour son côté grand-maitre de Kung-fu adapté au monde des tests! Le PDF complet des différentes histoires est ici: www.agitar.com/downloads/TheWayOfTestivus.pdf Un grand merci à Alberto Savoia!
Mais ma préférence va à celui sur la couverture des tests unitaires, qui est super bien écrit. Je me permet donc de le republier ici, avec la version originale mais aussi une version en Français.
Testivus On Test Coverage
Early one morning, a programmer asked the great master:
“I am ready to write some unit tests. What code coverage should I aim for?”
The great master replied:
“Don’t worry about coverage, just write some good tests.”
The programmer smiled, bowed, and left.
…
Later that day, a second programmer asked the same question.
The great master pointed at a pot of boiling water and said:
“How many grains of rice should put in that pot?”
The programmer, looking puzzled, replied:
“How can I possibly tell you? It depends on how many people you need to feed, how hungry they are, what other food you are serving, how much rice you have available, and so on.”
“Exactly,” said the great master.
The second programmer smiled, bowed, and left.
…
Toward the end of the day, a third programmer came and asked the same question about code coverage.
“Eighty percent and no less!” Replied the master in a stern voice, pounding his fist on the table.
The third programmer smiled, bowed, and left.
…
After this last reply, a young apprentice approached the great master:
“Great master, today I overheard you answer the same question about code coverage with three different answers. Why?”
The great master stood up from his chair:
“Come get some fresh tea with me and let’s talk about it.”
After they filled their cups with smoking hot green tea, the great master began to answer:
“The first programmer is new and just getting started with testing. Right now he has a lot of code and no tests. He has a long way to go; focusing on code coverage at this time would be depressing and quite useless. He’s better off just getting used to writing and running some tests. He can worry about coverage later.”
“The second programmer, on the other hand, is quite experience both at programming and testing. When I replied by asking her how many grains of rice I should put in a pot, I helped her realize that the amount of testing necessary depends on a number of factors, and she knows those factors better than I do – it’s her code after all. There is no single, simple, answer, and she’s smart enough to handle the truth and work with that.”
“I see,” said the young apprentice, “but if there is no single simple answer, then why did you answer the third programmer ‘Eighty percent and no less’?”
The great master laughed so hard and loud that his belly flopped up and down, evidence that he drank more than just green tea.
“The third programmer wants only simple answers – even when there are no simple answers … and then does not follow them anyway.”
The young apprentice and the grizzled great master finished drinking their tea in contemplative silence.
Testivus (version française)
Tôt un matin, un programmeur demande au grand maître :
“Je suis prêt à écrire des tests unitaires. Quelle couverture de code dois-je viser ? ”.
Le grand maître répondit :
“Ne vous inquiétez pas de la couverture, écrivez simplement de bons tests. ”
Le programmeur a souri, s’est incliné et est parti.
…
Plus tard ce jour-là, une deuxième programmeuse a posé la même question.
Le grand maître a montré une casserole d’eau bouillante et a dit :
“Combien de grains de riz faut-il mettre dans cette casserole ? ”
La programmeuse, l’air perplexe, répondit :
“Comment pourrais-je vous le dire ? Cela dépend du nombre de personnes à nourrir, de leur faim, des autres aliments que vous servez, de la quantité de riz dont vous disposez, et ainsi de suite ”.
“Exactement, ” dit le grand maître.
La seconde programmeuse sourit, s’inclina et partit.
…
Vers la fin de la journée, un troisième programmeur est venu et a posé la même question sur la couverture du code.
Le maître répondit d’une voix sévère en tapant du poing sur la table “80% et pas moins!”.
Le troisième programmeur a souri, s’est incliné et est parti.
…
Après cette dernière réponse, un jeune apprenti s’est approché du grand maître :
“Grand maître, aujourd’hui je vous ai entendu répondre à la même question sur la couverture du code avec trois réponses différentes. Pourquoi ? ”
Le grand maître s’est levé de sa chaise :
“Viens prendre du thé frais avec moi et parlons-en. ”
Après avoir rempli leurs tasses de thé vert fumant, le grand maître a commencé à répondre :
“Le premier programmeur est nouveau et commence tout juste à faire des tests. Pour l’instant, il a beaucoup de code et pas de tests. Il a un long chemin à parcourir ; se concentrer sur la couverture du code à ce stade serait déprimant et tout à fait inutile. Il vaut mieux qu’il s’habitue à écrire et à exécuter des tests. Il pourra s’inquiéter de la couverture plus tard. ”
“La deuxième programmeuse, en revanche, est assez expérimentée à la fois en programmation et en tests. Lorsque je lui ai répondu en lui demandant combien de grains de riz je devais mettre dans une casserole, je l’ai aidé à réaliser que la quantité de tests nécessaires dépend d’un certain nombre de facteurs, et qu’elle connaît ces facteurs mieux que moi - c’est son code après tout. Il n’y a pas de réponse unique, simple, et elle est assez intelligente pour faire face à la vérité et travailler avec. ”
“Je vois,” dit le jeune apprenti, “mais s’il n’y a pas de réponse simple et unique, alors pourquoi avez-vous répondu au troisième programmeur ‘Quatre-vingts pour cent et pas moins’ ? ”
Le grand maître rit si fort et si fort que son ventre s’agita de haut en bas, preuve qu’il ne buvait pas que du thé vert.
Le troisième programmeur ne veut que des réponses simples - même lorsqu’il n’y a pas de réponses simples… et ne les suit pas de toute façon”.
Le jeune apprenti et le grand maître grisonnant finirent de boire leur thé dans un silence contemplatif.