Je suis très nouveau au monde TDD. J'ai quelques questions concernant TDD. P>
Dois-je faire le test - d'abord dans TDD? J'ai entendu dire que TDD ne concerne pas le test. Il s'agit de conception. Je suis convenu qu'il est bon de faire un test - d'abord, mais ce que j'aime savoir, c'est que c'est toujours TDD si nous suivons la dernière approche de test? p> li>
Devons-nous utiliser BDD sur TDD? J'écris d'abord la spécification de ma tâche et j'essaie d'écrire le cas de test en fonction de mes spécifications. Est-ce une approche erronée? Vous préférez-vous utiliser BDD ou TDD pour votre développement? p> li>
moqueur? Certaines personnes de mon équipe disaient qu'ils sont pratiques TDD. Mais ils ne suivent jamais la première approche du test. Ils ne se moquent jamais des données. Devons-nous nous moquer des données dans TDD? p> li>
"Utilisation de la bibliothèque simulée" vs "Création de la classe Mock avec des données manuellement". Préférez-vous utiliser une mock bibliothèque ou créer les classes simulées avec des données simulées? p> li>
Tout livre recommandé pour TDD ou BDD? J'ai lu le développement classique de l'essai classique de Kent Beck - par exemple. J'ai constaté que ce livre est publié au stade très précoce de TDD, de sorte que certaines des choses de ce livre ne sont pas un peu obsolètes. P> Li> ol>
7 Réponses :
Merci ... J'avais une expérience dans un test de l'unité et même développer une structure d'essai unitaire avec certaines fonctionnalités personnalisées pour l'équipe de QA quelques ans .. Mais oui. pas essayé de pratiquer TDD dans le projet réel. Lorsque je commence à écrire un test de l'unité avant de coder, je ne suis pas si compatible avec cela. Quand j'essaie BDD, cela semble être quelque chose que je veux. Son plus lisible, sachez quoi tester (SPEC) et savoir quand mettre fin à la fin (SPEC). HTY, n'est-ce pas si profondé dans TDD et BDD, mais je me manquerai peut-être quelque chose dans TDD.Vous vous préférez vraiment TDD? Ne pensez-vous pas que c'est un peu bizarre d'écrire des tests d'unité plus que ce que nous avons dans SPEC DOC.
Cela dépend probablement du processus de votre équipe et du type de code que vous écrivez. J'avais généralement une grande partie d'une spécification pour commencer, alors écrivez d'abord des tests, ce n'est pas un problème, cela aide à développer ce que les spécifications sont et déterminent les problèmes. J'ai trouvé des tests d'écriture d'abord très utiles également dans la conception d'un système, car cela vous oblige à "visualiser" ce que vous allez créer et réfléchir à la façon dont vous l'utiliseriez, comme si c'était déjà fait. Cela contribue à se concentrer sur ce que votre objectif est.
(J'ai choisi la question la plus facile à répondre car je ne suis pas qualifié pour répondre à d'autres questions) P>
Tout livre recommandé pour TDD ou BDD? P> blockQuote>
Développement de logiciels, principes, modèles et pratiques agiles, par Robert C. Martin P>
Merci. Qu'en est-il de BDD? Y a-t-il un livre pour BDD sur le marché?
1). Est-ce que je dois faire-premier test en TDD? J'ai entendu dire que TDD ne concerne pas le test. Il s'agit de conception. Je suis d'accord que il est bon de faire-premier test, mais ce que je comme à savoir est qu'il est encore TDD si nous suivons l'approche de test dernière? p> blockQuote>
Oui! À proprement parler TDD est le développement piloté par les tests. Ainsi, le développement est entraîné par le test. Donc, vous testez d'abord, puis élaborer un programme pour passer tous les tests. P>
2). Devons-nous préférer utiliser BDD plus TDD? Je l'habitude d'énumérer la spécification de ma première tâche et je essayez d'écrire le scénario de test basé sur mon spécification. Est-ce une approche erronée? Avez-vous les gars préfèrent utiliser BDD ou TDD pour votre développement? p> blockQuote>
Je pense que vous devriez les équilibrer. Utiliser une autre technique pour fournir la conception globale d'abord mieux que le temps de fournir (faire la gestion des risques pour trouver le temps approprié, vous devriez consacrer à la conception) (Trouver un article sur « essentiel RUP". Il donne une assez bonne idée de l'équilibre agile et moins agile). Identifier les parties les plus critiques crée ensuite tester et développer pour passer le test. P>
3) .Mocking? Certaines personnes de mon équipe utilisé pour dire qu'ils sont praticsing TDD. Mais ils ne suivent jamais des tests en premier approcher. Ils ne se moquent jamais des données. Faire nous devons moquer des données TDD? p> blockQuote>
Test-première et moqueur n'est pas la même chose. Mocking permet au code d'être plus testable ainsi que testable quand d'autre part (qui ce code repose sur) n'existe pas. Donc, s'il n'y a pas une telle dépendance (SI !!), vous pouvez ne pas se moquer d'eux. (Lire " Travailler efficacement avec Legacy Code " au sujet point de couture pour plus de détails). p>
4). « Utilisation Mock Library » Vs « création de la classe simulée avec les données manuellement ». Faire vous préférez utiliser la bibliothèque ou maquette créer les classes simulées avec une maquette données? p> blockQuote>
Je pense que tout comme l'utilisation de quelqu'un d'autre-bibliothèque ou créer yourown. Totalement dépend de la situation et de nombreux facteurs. Par exemple, si votre projet est grand et vous pouvez trouver la bibliothèque maquette appropriée, l'utiliser. P>
5). Tout livre recommandé pour TDD ou BDD? J'ai lu Kent Beck classique Test-Driven Development - par exemple. Je trouve que ce livre est publié dans stade très précoce de TDD si certains des les choses dans ce livre ne sont pas un peu pas à jour. p> blockQuote>
Il y a la liste des sur TDD . P>
Hope this helps. P>
Dois-je faire un test - d'abord dans TDD? p> blockQuote>
Oui, TDD est nécessairement testé - en premier. Écrire le test Permet d'abord penser à la fonction à écrire en termes de comportement, plutôt que de la mise en œuvre, en mettant l'accent sur l'invocation de la fonction et la vérification du résultat. Cela conduit à un code testable; Sinon, vous pouvez vous retrouver dans une impasse.
Les tests d'écriture permettent également de ne pas oublier ni négliger les tests. p>En outre, écrire - et échouer - les tests permettent d'abord tester le test. Un test écrit après que le code ne soit jamais échouer. P>
Devons-nous utiliser BDD sur TDD? p> blockQuote>
Certains disent BDD est TDD TAD DOIRE DOIDE A > Comme l'accent est mis sur les spécifications. P>
Devons-nous nous moquer des données dans TDD? Certaines personnes de mon équipe disaient qu'ils sont pratiques TDD. Mais ils Ne suivez jamais la première approche du test. p> blockQuote>
Vous ne devez pas avoir à em> utiliser des objets simulés. Il n'y a qu'un outil qui peut parfois être pratique. P>
"Utiliser une maquette" vs "créant le classe moquée avec des données manuellement ". p> blockQuote>
Je n'ai jamais ressenti le besoin de recourir à un générateur d'objet simulé. p>
Tout livre recommandé pour TDD ou BDD? P> blockQuote>
TDD par exemple est un très bon tutoriel et présente un tas de motifs. Un autre excellent livre, plus une référence est modèles Xunit . P>
Dois-je faire un test - d'abord dans TDD? p>
Oui, TDD est, en substance: p>
xxx pré> Si vous utilisez un autre processus, il peut être logique d'utiliser certains des outils et techniques, mais il a gagné 't vraiment être tdd. Pour tout ce qui vaut la peine. P>
moqueur? p> blockQuote>
Il y a 4 alternatives plus ou moins viables que différents gourous préconisent. P>
Mock-to-zéro: simulez toutes les dépendances telles que chaque unité (par exemple la classe Java) est efficacement testée. p> li>
Mock-to-linéaire: des dépendances cycliques simulées uniquement, de sorte qu'il existe une commande linéaire des tests dans lesquels chaque unité n'est testée que par des dépendances testées. p> li>
Mock-Speed-vitesse: Seulement des interfaces fictives lentes, asynchrones ou autrement problématiques. p> li>
zéro-moqueur: il suffit de tester des trucs, utilisez un débogueur pour déterminer ce qui se passe si les choses se cassent. P> Li> ol>
Évitez N ° 1 si vous n'aimez pas votre outil moqueur et évitez N ° 4 si vous n'aimez pas votre débogueur. P> blockQquote>
Pour BDD, vous pouvez trouver une excellente référence dans: p>
Vous pouvez également suivre le travail de Dan North pour lui La différence entre TDD et BDD est petite p>
Autre lien Développement dirigé par le comportement d'apprentissage (BDD) P>
Pour moi, je pense que si vous faites BDD, vous faites déjà TDD P>
J'espère que cela aide p>
chose intéressante de ce lien Stackoverflow.com/questions/80243/... Dans la pratique Je pense que TDD a souvent des effets très négatifs sur la base de code (conception de merde, code de procédure, aucune encapsulation, code de production jonchée de Code de test, interfaces partout, le code de production difficile au refacteur car tout est étroitement couplé à de nombreux tests, etc.).
+1 pour une question bien pensée.
@Mark: Est-ce vraiment votre expérience? Personnellement, TDD était un grand moment AHA pour moi et m'a aidé à mieux comprendre l'encapsulation mieux en me forçant à penser clairement à ce que chaque classe était censée faire - et à ne pas faire. En ce qui concerne les "interfaces partout partout", je peux voir que, à travers des simulacres, mais à l'inverse, TDD vous pousse également à mettre en œuvre quelque chose qui fonctionne, par opposition à entrer en mode astronaute architecte. Eh bien ... J'espère que je n'ai pas l'air d'un des zélets TDD :)
@Remarquer. Cela étant dit, mes premières tentatives de test unitaire n'étaient pas glorieuses et j'ai écrit de nombreux tests d'unités fragiles qui ont créé leurs propres problèmes de maintenance. L'écriture de bons tests d'unités de maintenance prend du travail et de la pratique, tout comme écrire un code régulier.