« Introduction à TDD et BDD » : différence entre les versions

De Wiki Agile
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 21 : Ligne 21 :
<br/>
<br/>
==Qu'est-ce que TDD ?==
==Qu'est-ce que TDD ?==
[[Fichier:Write-failing-test.png|border|1000px]]<br/>
[[Fichier:Write-failing-test.png|border|800px]]<br/>
<br/>
<br/>
C'est le cycle TDD classique, popularisé dans le livre de Nat Pryce et Steve Freeman [https://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627 Growing Object-Oriented Software, Guided by Tests]. On le décrit généralement comme "écrire un test qui échoue" et ensuite faire passer le test avec succès et ensuite refactorer ; vous continuez à tourner dans cette boucle. C'est le cycle du TDD, c'est très simple. Il y a trois petits titres ; il y a des flèches colorées entre elles. Mais à l'intérieur de ce schéma, il y a beaucoup de complexité ou du moins beaucoup de subtilités.<br/>
C'est le cycle TDD classique, popularisé dans le livre de Nat Pryce et Steve Freeman [https://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627 Growing Object-Oriented Software, Guided by Tests]. On le décrit généralement comme "écrire un test qui échoue" et ensuite faire passer le test avec succès et ensuite refactorer ; vous continuez à tourner dans cette boucle. C'est le cycle du TDD, c'est très simple. Il y a trois petits titres ; il y a des flèches colorées entre elles. Mais à l'intérieur de ce schéma, il y a beaucoup de complexité ou du moins beaucoup de subtilités.<br/>
<br/>
<br/>
[[Fichier:Tdd-bullet-points.png|border|1000px]]<br/>
[[Fichier:Tdd-bullet-points.png|border|800px]]<br/>
<br/>
<br/>
Voici une autre façon de le représenter et d'y réfléchir. Bien que "écrire un test qui échoue" soit correct en tant que procédure, cela reste assez déroutant parce que ce n'est pas ce que vous essayez de faire ; l'idée n'est pas de faire un test qui échoue. Ce que vous essayez de faire, c'est d'imaginer la prochaine étape que vous voulez faire, c'est de faire évoluer l'implémentation de façon nécessaire et suffisante pour créer de la valeur. On le reformule souvent comme "écrire la spécification suivante". En gros, votre prochain test est votre prochaine spécification sur la façon dont le logiciel devrait se comporter... et parce que vous ne l'avez pas encore fait, le logiciel va échouer... mais vous n'êtes pas là pour écrire un test qui échoue.<br/>
Voici une autre façon de le représenter et d'y réfléchir. Bien que "écrire un test qui échoue" soit correct en tant que procédure, cela reste assez déroutant parce que ce n'est pas ce que vous essayez de faire ; l'idée n'est pas de faire un test qui échoue. Ce que vous essayez de faire, c'est d'imaginer la prochaine étape que vous voulez faire, c'est de faire évoluer l'implémentation de façon nécessaire et suffisante pour créer de la valeur. On le reformule souvent comme "écrire la spécification suivante". En gros, votre prochain test est votre prochaine spécification sur la façon dont le logiciel devrait se comporter... et parce que vous ne l'avez pas encore fait, le logiciel va échouer... mais vous n'êtes pas là pour écrire un test qui échoue.<br/>

Version du 26 février 2019 à 13:31

Auteur : Cucumber
Source : Introduction to TDD and BDD


Traducteur : Fabrice Aimetti
Date : 26/02/2019


Traduction :



Cet article comporte quatre sous-sections.

  • TDD
  • BDD
  • Opposition
  • xDD

Nous allons commencer par une introduction au TDD. Je vais vous en parler assez rapidement, car je suppose que la plupart d'entre vous qui lisez ces lignes en font déjà. Ensuite, je passerai un peu plus de temps sur le BDD, puis j'aborderai les ce qui les opposent, avant de devenir un peu plus philosophique avec xDD.

Qu'est-ce que TDD ?



C'est le cycle TDD classique, popularisé dans le livre de Nat Pryce et Steve Freeman Growing Object-Oriented Software, Guided by Tests. On le décrit généralement comme "écrire un test qui échoue" et ensuite faire passer le test avec succès et ensuite refactorer ; vous continuez à tourner dans cette boucle. C'est le cycle du TDD, c'est très simple. Il y a trois petits titres ; il y a des flèches colorées entre elles. Mais à l'intérieur de ce schéma, il y a beaucoup de complexité ou du moins beaucoup de subtilités.



Voici une autre façon de le représenter et d'y réfléchir. Bien que "écrire un test qui échoue" soit correct en tant que procédure, cela reste assez déroutant parce que ce n'est pas ce que vous essayez de faire ; l'idée n'est pas de faire un test qui échoue. Ce que vous essayez de faire, c'est d'imaginer la prochaine étape que vous voulez faire, c'est de faire évoluer l'implémentation de façon nécessaire et suffisante pour créer de la valeur. On le reformule souvent comme "écrire la spécification suivante". En gros, votre prochain test est votre prochaine spécification sur la façon dont le logiciel devrait se comporter... et parce que vous ne l'avez pas encore fait, le logiciel va échouer... mais vous n'êtes pas là pour écrire un test qui échoue.

La seconde étape est de faire rapidement passer le test avec succès. L'intention n'est pas de tout concevoir parfaitement ; c'est de faire passer le test avec succès. L'ensemble de vos tests passe de l'échec à la réussite totale, et maintenant que tous vos tests sont réussis, il est possible de les refactorer en toute sécurité. L'intention ici n'est pas d'obtenir la meilleure conception ; c'est de les passer au vert rapidement, et maintenant qu'ils sont tous au vert, vous pouvez les regarder et vous demander "comment puis-je améliorer cette conception", et vous pouvez améliorer la conception en toute sécurité grâce au refactoring.

La troisième chose, c'est le refactoring. La boucle de refactoring dans le livre de Nat et Steve est en fait un cycle. Vous pouvez le dessiner de bien d'autres façons, mais l'idée est que vous ne vous contentez pas de vous lancer et refactorer pour dire que vous avez terminé ; vous vous lancez, vous regardez et voyez ce que vous aimeriez changer et vous le changer. Vous vous assurez que le test est encore vert, et vous regardez le code à nouveau et vous vous demandez "Y a-t-il un autre changement que je veux faire ?" ou "est-ce que ce refactoring a introduit une autre chose que je souhaite faire ?". Il s'agit d'un multi-processus en soi ; il ne s'agit pas d'une seule étape.

Ce sont les trois phases du TDD.