8
votes

Chose recommandée pour une TDD Newbie

Je suis très nouveau au monde TDD. J'ai quelques questions concernant TDD.

  1. 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?

  2. 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?

  3. 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?

  4. "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?

  5. 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.

tdd

4 commentaires

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.


7 Réponses :


0
votes
  1. Oui Les tests d'abord sont à peu près ce que TDD est.
  2. Si vous n'avez aucune expérience avec non vous, je commencerais avec TDD pour que vos pieds soient mouillés (mon avis).
  3. Vous n'avez pas à vous moquer de faire du TDD. Toutefois, si votre application comporte des cours qui dépendent d'autres classes (qui sont à peu près garanties), vous devriez rencontrer des moqueurs. BTW Mocking ne consiste pas à moquer des données, mais de moquer de l'interaction entre la classe que vous testez et ses collaborateurs, l'autre classe (ES) dépend de.
  4. Mocking à la main est un bon moyen de la comprendre, mais les cadres moqueurs / isolation sont la voie à suivre si vous ne voulez pas passer tout votre temps à écrire de fausses implémentations.
  5. imo, le livre de Beck est un classique intemporel et un excellent moyen de commencer. Si vous travaillez avec .NET, je viens de lire l'art des tests unitaires qui couvrent de bonnes techniques et pratiques en détail lorsque des tests unitaires.

2 commentaires

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.



0
votes

(J'ai choisi la question la plus facile à répondre car je ne suis pas qualifié pour répondre à d'autres questions)

Tout livre recommandé pour TDD ou BDD?

Développement de logiciels, principes, modèles et pratiques agiles, par Robert C. Martin

Programmation extrême expliquée, par Kent Beck


1 commentaires

Merci. Qu'en est-il de BDD? Y a-t-il un livre pour BDD sur le marché?



2
votes
  1. Oui, il s'agit de conception, mais cette méthodologie de conception implique d'abord des tests d'écriture. Les gens suivent cette règle avec divers degrés de strictisme, mais la plupart des gens que je connais qui pratiquent TDD ont tendance à croire qu'il est préférable de suivre la règle.
  2. BDD a été décrit comme TDD fait correctement. La différence est minime. Essentiellement BDD fait simplement le point sur les tests comme spécifications plus explicites.
  3. Il y a beaucoup de désaccord sur l'utilité des simulacres. Personnellement, je préfère tester des interfaces et je peux éviter de placer des attentes dans un moqueur. Cela dit, les tests isolés sont toujours une bonne idée pour une grande variété de raisons, et non le moindre dont la vitesse est une vitesse de test. Il n'y a rien de plus ennuyeux que de refactoriser un morceau de code qui est toujours conforme exactement à l'interface précédente, ayant un résultat final complet, et pourtant tous les tests échouent, car les attentes sur la simulation n'étaient plus satisfaites. Une mauvaise utilisation de la simulation entraîne des tests des détails de la mise en œuvre plutôt que de veiller à ce que le travail effectué soit correct.
  4. Voir # 3. Je préfère simplement utiliser un talon sans attentes ni alternativement un test d'intégration.
  5. Développement axé sur les tests: un guide pratique de Dave Astels. Fortement recommandé.

0 commentaires

3
votes

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?

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.

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?

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.

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?

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).

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?

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.

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.

Il y a la liste des sur TDD .

Hope this helps.


0 commentaires

0
votes

Dois-je faire un test - d'abord dans TDD?

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.

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.

Devons-nous utiliser BDD sur TDD?

Certains disent BDD est TDD TAD DOIRE DOIDE Comme l'accent est mis sur les spécifications.

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.

Vous ne devez pas avoir à utiliser des objets simulés. Il n'y a qu'un outil qui peut parfois être pratique.

"Utiliser une maquette" vs "créant le classe moquée avec des données manuellement ".

Je n'ai jamais ressenti le besoin de recourir à un générateur d'objet simulé.

Tout livre recommandé pour TDD ou BDD?

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 .


0 commentaires

1
votes

Dois-je faire un test - d'abord dans TDD?

Oui, TDD est, en substance: xxx

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.

moqueur?

Il y a 4 alternatives plus ou moins viables que différents gourous préconisent.

  1. Mock-to-zéro: simulez toutes les dépendances telles que chaque unité (par exemple la classe Java) est efficacement testée.

  2. 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.

  3. Mock-Speed-vitesse: Seulement des interfaces fictives lentes, asynchrones ou autrement problématiques.

  4. 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.

    Évitez N ° 1 si vous n'aimez pas votre outil moqueur et évitez N ° 4 si vous n'aimez pas votre débogueur.


0 commentaires

1
votes

0 commentaires