Question Quel est un bon exemple de classe pour démontrer le TDD?


Je dois faire une courte présentation (2 à 4 heures) sur le développement piloté par les tests et proposer un petit cours que je peux construire en utilisant la méthodologie TDD. La classe doit être relativement petite, mais "vendre" le concept de TDD.

Si quelqu'un a lu le livre de James Newkirk, Test-Driven Development pour dans Microsoft.Net, l'exemple de Stack est parfait. C'est une petite classe, a une liste gérable de tests / exigences, et le processus de création vend TDD (IMHO).

Je ne veux pas utiliser l'exemple de Stack ou des structures de données similaires (file d'attente, listes, etc.) de peur d'empiéter sur le travail de Newkirk.

Je cherche donc quelques bonnes idées pour un exemple de classe.

Merci.


46
2018-04-24 19:12


origine


Réponses:


Que diriez-vous d'utiliser le 1ère partie de l'exemple de Kent Beck's Money. Cela commence très simplement, mais lorsque vous arrivez à ajouter deux devises différentes, TDD vous montre soudain la falisabilité du design initial, ou YAGNI (vous n'en aurez pas besoin).

Un autre bon exemple est celui de l'oncle Bob bowling score TDD exemple. Je pense que c'est un bon exemple de la façon dont un récit TDD vous amène à une solution propre qui aurait été explicitement inaccessible via un design avant.

Pour en faire une présentation vraiment passionnante, vous pouvez dès le départ inciter le public à concevoir les deux scénarios en utilisant les méthodes qu’ils jugent appropriées. Vous montrerez ensuite la manière dont TDD les conçoit.

Le vrai moment WTF pour moi avec TDD était quand Beck a enlevé les deux sous-classes de Money, et les tests ont fonctionné. Ce n'est pas une action triviale; l'homme a supprimé deux classes! La confiance de faire quelque chose comme cela ne peut être trouvée que par deux moyens.

1) rassembler tous les joueurs seniors dans une base de code et parcourir les scénarios, suivi d’un suivi approfondi pour confirmer que cela fonctionne

2) TDD

= D


25
2018-04-24 19:22



Si vous avez le temps de le faire, je choisirais un exemple avec une dépendance externe quelconque qui sera analysée dans le test. Soit une base de données, des appels à une interface graphique, des appels vers un système distant, etc.

La raison en est que l'un des obstacles à TDD est que l'exemple semble trop autonome. "Bien sûr, lorsque tout est une unité autonome, vous pouvez effectuer des tests unitaires, mais quand j'ai 15 systèmes à intégrer, quel est l'intérêt?" sorte de chose.

Je montrerais aussi au moins un exemple à la fin (consultez le livre de Michael Feather Travailler efficacement avec Legacy Code pour savoir comment) de migrer une classe existante pour l'amener sous TDD. Ne vous attardez pas sur cela comme exemple, mais il y a de fortes chances que votre public réfléchisse à la manière de migrer la classe qu'il a écrite ce matin-là, sans aucune raison de laisser cet animal «inavouable».


8
2018-04-24 19:24



Problèmes de TDD a une liste de problèmes, allant du simple au moins simple.

Certains ont une liste de tests pour démarrer à partir de aucune solution pour le moment.


7
2018-04-24 19:25



Si vous avez un exemple parfait dans un livre, alors vous devriez l'utiliser et promouvoir le livre. Aucun auteur ne s'y opposerait.

En dehors de cela, j'ai assisté à une présentation TDD il y a quelques années, où l'exemple était une simple calculatrice et qui fonctionnait à merveille.


3
2018-04-24 19:16



Trois j'aime bien, dans l'ordre de difficulté croissant:

  • Plage (des entiers; implémenter isEmpty (), contient (), intersecte (), longueur())
  • Tri naturel
  • Serpent

Si j'avais une demi-heure, je le ferais Range; 90 minutes, probablement tri naturel; plus: Serpent. Cela dépend du public, cependant.


3
2018-04-24 19:40



Je voudrais essayer de trouver quelque chose de petit dans un domaine bien connu. J'ai récemment donné une présentation sur BDD / TDD basée sur ASPNET.MVC. Cela comprenait un contrôleur, une action et un modèle de vue. Cela m'a également donné l'occasion d'introduire un conteneur de dépendance et un cadre moqueur.


2
2018-04-24 19:17



Que diriez-vous d'une simple classe de mathématiques, avec addition, soustraction, multiplication et autres?


1
2018-04-24 19:14



Un exemple classique de la communauté TDD / Extreme / Agile est l'exemple du jeu de bowling. Il me semble rappeler qu’elle a été utilisée à la fois chez Beck et Martin, ainsi que sur de nombreuses reprises sur xprogramming.com pour des exemples et des explorations de différentes techniques au sein de TDD.


1
2018-04-24 19:27



Sortez et prenez les demandes du public. :)


1
2018-04-24 19:31