Je veux apprendre (et maîtriser) le TDD. Quels sont les meilleurs:
pour apprendre, apprécier et utiliser TDD?
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:
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.
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.
À 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
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 #).
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.