Quelles sont les meilleures ressources pour apprendre le TDD? [fermé]

27

Je veux apprendre (et maîtriser) le TDD. Quels sont les meilleurs:

  • livres
  • sites Internet
  • vidéos
  • liste d'exercices
  • paroles personnelles de sagesse

pour apprendre, apprécier et utiliser TDD?

Eric
la source
1
Vous pourriez être intéressé par ma page de ressources pour l'apprentissage du TDD .
xpmatteo
9
J'aime cette question. Si vous ne devez pas poser cette question ici, où pouvez-vous poser des questions sur les recommandations de livres de programmation?
guettli

Réponses:

18

Personnellement, j'ai trouvé que lire un ou deux essais JUnit soulignant que "vous écrivez le test avant le code" était suffisant pour me lancer.

La partie la plus importante dans l'apprentissage de cette technologie est d'écrire BEAUCOUP de code basé sur des tests , car vous devez changer certaines des façons les plus élémentaires que vous pensez d'écrire du code. Des choses comme:

  • L'écriture du test avant le code vous fait réfléchir à la façon dont vous allez invoquer votre code et récupérer le résultat. Cela signifie que vous concevez l'API première basée sur la façon dont vous allez l' utiliser. Cela se traduit souvent par une meilleure API.
  • Votre style de codage changera parce que vous aurez besoin de penser plus modulaire, de pouvoir tester des parties du code au lieu de tout.
  • Vous arriverez également à un point où vous pourrez retirer en toute confiance un gros morceau et insérer un nouveau morceau au lieu de se comporter de la même manière, car votre test réussit. Je l'ai fait récemment avec une bibliothèque d'analyse de dates, car l'original était trop indulgent.

Le meilleur endroit pour commencer petit, c'est avec vos routines utilitaires. La prochaine fois que vous en aurez besoin, il vous suffira de concevoir qu'avec des tests, écrivez beaucoup de tests couvrant toutes vos cas d'utilisation officiels (y compris ce qui devrait se produire avec les valeurs nulles transmises, etc.), et lorsque tous les cas d'utilisation seront implémentés, vous devriez pouvoir utiliser directement dans votre code, et assurez-vous que cela fonctionne comme prévu.

D'après mon expérience, de bons tests peuvent faire un travail supplémentaire en tant que documentation, car vous avez beaucoup de code très concis indiquant exactement comment le code se comporte dans diverses situations, ce qui peut facilement être prouvé comme correct (barre verte). Avec des commentaires attentifs, vous n'obtenez pas beaucoup mieux que cela.

Pour Java, la version 4 de jUnit est vraiment sympa.


la source
8

À mon avis, TDD consiste davantage à rendre le code testable qu'à écrire des tests.

Bien sûr, vous pouvez écrire un test avant de coder, mais la raison pour laquelle le test est écrit est que vous puissiez coder - ce qui ne vous empêchera pas d'écrire du code difficile à tester.

Jetez un oeil à cela pour avoir une meilleure idée de ce que je veux dire: Ma théorie unifiée des bogues

Si vous êtes intéressé par le concept et que vous souhaitez en savoir plus, il vous suffit de commenter - et je vais vous orienter vers une présentation enregistrée sur le sujet de Google.

MISE À JOUR:

Comment écrire du code propre et testable

Miško Hevery présentant (par GoogleTechTalks ) à Google à New York et parrainé par le groupe de productivité de l'ingénierie de Google

bévues
la source
Allez-y et ajoutez le lien de présentation Google. Je pense que le représentant d'Eric ne permet pas encore de commenter.
ocodo
+1 @Slomojo: C'est vrai, alors votez la question ... pour le pousser à plus de 15 répétitions si je me souviens bien. Je vais chercher la vidéo.
bévues
1
@blunders ... Je l'ai amené à 11 ans!
ocodo
+1 @Slomojo: Pour voter, j'ai trouvé et ajouté le lien vers Google Tech Talk dans ma réponse. À votre santé!
bévues
8

Mis à part certains des livres déjà mentionnés, je peux recommander Growing Object-Oriented Software Guided by Tests . Je n'ai pas encore fini de le lire, mais c'est une lecture digne, y compris l'histoire d'un projet TDD réaliste et entier, pas seulement des exemples de code simplifiés.

Péter Török
la source
Je pense que c'est mon livre préféré et celui qui a le plus affecté ma façon de travailler, non seulement sur TDD mais sur Software Dev en général. Je dois également admettre que je n'ai pas lu beaucoup de livres TDD, alors ne me faites peut-être pas autant confiance.
antonio.fornie
4

J'ai lu deux livres:

Développement piloté par les tests: par l'exemple de Kent Beck et

Cadres de tests unitaires par Paul Hamil

Le livre Beck est bien considéré, mais je n'ai pas commencé les tests unitaires avant d'avoir lu "Frame Test Unitworks". Je fais du TDD, mais j'ajoute également des tests à du code plus ancien que je dois maintenir (quand je le peux).

Edit: De plus, une fois que vous maîtrisez cela, je recommande de l'utiliser immédiatement sur un projet en cours. Pour moi, c'est à ce moment-là que le véritable apprentissage a eu lieu, et je pense que le livre «Unit Test Framework» était un meilleur livre de référence à cet effet. (J'utilisais nunit avec C #).

vjones
la source
4

Bien qu'il ne concerne pas principalement le TDD (bien qu'il y touche, ainsi que la conception pour la testabilité), The Art of Unit Testing est un livre que je recommanderais car il vous apprend à écrire de bons tests.

Plus précisément, il enseigne comment créer des tests fiables, maintenables et lisibles. Je pense que c'est la section la plus importante du livre, en dehors peut-être des bases sur les tests unitaires et les cadres d'isolement. Il est évident que si les tests unitaires deviennent un point douloureux ou ajoutent de la friction au travail d'un développeur, leur réussite ou leurs avantages seront limités. Si l'on investit du temps et des efforts pour créer les tests, alors il devrait être en mesure de tirer le meilleur parti de cet investissement.

Mat
la source