46 votes

Qu'est-ce qu'un bon exemple de classe pour démontrer le TDD?

J'ai besoin de faire une courte présentation (2-4 heures) sur le Développement Piloté par les tests et le besoin de venir avec une petite classe qui permet de créer à l'aide de l'ATS de la méthodologie. La classe doit être relativement petite, mais "vendre" le concept de TDD.

Si quelqu'un a lu James Newkirk du livre, Test-Driven Development pour en Microsoft.Net la Pile exemple est parfait. C'est une petite classe, a une liste gérable de tests/les exigences et le processus de création vend TDD (à mon humble avis).

Je ne veux pas utiliser la Pile exemple ou similaire structures de données (file d'attente, des listes, etc) pour la crainte d'empiéter sur Newkirk du travail.

Donc, je suis à la recherche de quelques bonnes idées pour un échantillon de classe.

Merci.

25voto

Noel Kennedy Points 4741

Comment sur l'utilisation de la 1ère section de Kent Beck est de l'Argent exemple. Il commence très simplement mais quand vous arrivez à plus de deux monnaies différentes, TDD soudainement vous montre la falisity de l'avant la conception, ou YAGNI (vous n'allez pas en avoir besoin).

Un autre bon exemple est l'oncle Bob bowling score TDD exemple. Je pense que c'est un bon exemple de la façon dont l'ATS narrative et vous apporte une solution propre qui aurait été explicitement inaccessible via un design de face.

Pour en faire un vraiment excitant de présentation, avant de vous pourrait remettre en question le public à la conception des deux scénarios à l'aide de toutes les méthodes qu'ils jugent appropriée. Ensuite, vous montrer le TDD façon de les concevoir.

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

1) la collecte de tous les joueurs chevronnés dans une base de code et en cours d'exécution à travers les scénarios, suivie par une vaste suivre à travers pour confirmer qu'il fonctionne

2) TDD

=D

9voto

Yishai Points 42417

Si vous avez le temps pour cela, je voudrais prendre un exemple avec une dépendance externe, de la sorte, que va devenir abstraite dans le test. Soit une base de données, les appels à une interface graphique, les appels à un système distant, etc.

La raison en est que l'un des blocs de TDD est que l'exemple semble trop autonome. "Bien sûr, quand tout est une unité autonome, vous pouvez unité de test, mais quand j'ai des 15 systèmes à intégrer, ce qui est le point?" genre de chose.

Je voudrais également au moins montrer un exemple à la fin (regardez Michael Plume du livre de Travailler de façon Efficace avec le Code existant pour comment-tos) de la migration d'une classe existante pour l'amener en vertu de l'ATS. Ne vous attardez pas sur que comme un exemple, mais les chances sont de votre public sera de penser sur la façon de migrer la classe, ils ont écrit ce matin-là, aucune raison de laisser pourrir comme un "indicible."

7voto

philant Points 17345

Les problèmes TDD ont une liste de problèmes, allant du plus simple au moins simple.

Certains ont une liste de tests pour commencer à partir de pas encore de solution.

3voto

Bill the Lizard Points 147311

Si vous avez un exemple parfait d'un livre, vous devriez l'utiliser et promouvoir le livre. Aucun auteur ne s'opposerait à cela.

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

3voto

Carl Manaster Points 23696

Trois que j'aime bien, par ordre de difficulté croissant:

  • Range (of integers; implémenter isEmpty (), contient (), intersects (), length ())
  • Tri naturel
  • Serpent

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X