2010-07-12 4 views
4

J'ai lu que je devrais d'abord écrire les tests de base simples et passer graduellement aux tests les plus difficiles. Quels tests (dans l'ordre) devrais-je écrire pour la fonction suivante?TDD - Quels tests dois-je écrire pour cette fonction?

fonction List.syncWithList(lst)

  • devrait ajouter des éléments à la liste qui ne sont pas dans la liste, mais qui sont lst
  • doit supprimer tous les éléments de la liste qui ne sont pas lst
  • devrait remplacer tout les éléments de la liste qui ont des balises de version différentes de celles de lst
  • ne doivent pas remplacer les éléments de la liste ayant les mêmes balises de version que ceux de lst
+2

Vous avez fourni une liste de choses à tester. Que veux-tu de plus? –

Répondre

8

Vous avez votre liste de base de tests. Vous venez de nous les fournir. Au strict minimum, vous devez tester que toutes les exigences fonctionnelles ont été satisfaites (par exemple, les quatre points que vous nous avez donnés dans la question).

Ajout à cela sont les cas de bord, des choses comme des listes vides (sur un et deux côtés), des listes identiques et ainsi de suite.

La façon la plus simple de commencer est d'ajouter ce qui suit:

  • liste vide des deux côtés.
  • listes identiques.
  • liste de gauche vide avec une liste de droite d'un élément à ajouter.
  • liste d'éléments à gauche avec une liste de droite vide à supprimer.
  • deux tests précédents, mais avec des listes de cinq éléments d'un côté. Remplacement d'un élément dans une liste de gauche à un seul élément
  • Remplacement d'un élément dans une liste de gauche de cinq éléments
  • remplacement de trois éléments dans une liste à gauche de cinq éléments.
  • vérifier qu'aucun remplacement n'a été effectué sur des étiquettes de version identiques.

puis d'ajouter plus que vous rencontrez des problèmes individuels.

Et je ne peux pas trop insister: automatisez vos tests! Vous trouverez que le test est beaucoup plus facile quand vous pouvez simplement appuyer sur un bouton et regarder par-dessus les résultats. Chaque fois que vous rencontrez un bug, ajoutez un test qui aurait attrapé ce bug à la suite de tests ci-dessus et appuyez sur le bouton pour le vérifier.

Nous avons nos tests jusqu'à un bel art. Avec une seule commande, un processus entier est mis en place qui balaie les bases de données, les charge avec des données connues, exécute nos tests, compare la sortie avec les tests réussis précédents et ainsi de suite.

Si nous devions faire tout cela manuellement chaque fois que nous ferions un changement, nous lancerions bientôt l'idée. En automatisant tout, le test est un jeu d'enfant.

+3

Ceci est une excellente réponse. Je voudrais juste ajouter que les points de balle que le demandeur a écrits sont en fait de bons noms de test. Les noms de vos tests doivent être lus comme une description de ce que fait la classe et de son comportement attendu. – kyoryu

+1

+1 pour les tests automatisés –

+1

+1: Vous avez déjà votre liste. Testez cela. –

Questions connexes