web-dev-qa-db-fra.com

Quelles sont les meilleures ressources pour apprendre le TDD?

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?

27
Eric

Personnellement, j'ai trouvé que la lecture d'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 d'abord l'API en fonction de 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 en toute confiance retirer un gros morceau et insérer un nouveau morceau à la place en se comportant 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 clément.

Le meilleur endroit pour commencer petit, c'est avec vos routines utilitaires. La prochaine fois que vous en aurez besoin, il vous suffit 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 jUnit version 4 est vraiment sympa.

18
user1249

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.

8
Péter Török

À 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ésentation (Par GoogleTechTalks ) À Google à New York et parrainé par Google Engineering Productivity group

8
blunders

J'ai lu deux livres:

Test Driven Development: By Example par Kent Beck et

Cadres de tests unitaires par Paul Hamil

Le livre Beck est bien considéré, mais je n'ai pas commencé avec 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 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 #).

4
vjones

Bien qu'il ne s'agisse pas principalement de TDD (bien qu'il y touche, ainsi que de conception pour la testabilité), L'art des tests unitaires = 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.

4
Matt