Question

Je sais que certaines personnes sont des promoteurs massifs de développement piloté par les tests. J'ai utilisé des tests unitaires dans le passé, mais seulement à des opérations de test qui peuvent être testés facilement ou qui, je crois tout à fait peut-être correct. Complets ou des sons de couverture à proximité de code complet comme il prendrait beaucoup de temps.

  1. quels projets vous utilisez le développement piloté par les tests pour? Utilisez-vous uniquement pour des projets d'une certaine taille?
  2. dois-je utiliser ou non? Convaincre moi!
Était-ce utile?

La solution

Ok, certains avantages à TDD:

  1. Cela signifie que vous vous retrouvez avec d'autres tests. Tout le monde aime ayant tests, mais peu de gens comme écrit les. Construire test écrit dans vos moyens d'écoulement de développement vous vous retrouvez avec d'autres tests.
  2. L'écriture à une force de test que vous réfléchissiez à la testabilité de votre conception, et la conception testable est presque toujours une meilleure conception. Il est pas tout à fait clair pour moi pourquoi cela arrive à être le cas, mais mon expérience et celle de la plupart des évangélistes TDD semble porter dehors.
  3. Voici une étude disant que bien que TDD prend un peu plus de temps pour écrire, il y a un bon retour sur investissement parce que vous obtenez le code de meilleure qualité, et donc moins de bugs à corriger.
  4. Il vous donne confiance en refactoring. Il est un grand sentiment de pouvoir changer un système sans se soucier de casser tout le reste parce qu'il est assez bien couvert par des tests unitaires.
  5. Vous presque jamais obtenir un bug de répétition, puisque chacun vous trouvez devrait faire un test avant qu'il ne devienne une solution.

Vous avez demandé à être convaincu, si ceux-ci étaient des avantages. Voir cette question pour une vision plus équilibrée.

Autres conseils

Robert C. Martin origine fait ces points - je peux les sauvegarder de ma propre expérience:

  • Vous construirez automatiquement une suite de tests de régression des tests unitaires que vous allez.
  • Vous passerez presque jamais le débogage de temps, comme si vous code vous-même dans un trou, il est plus facile de défaire votre code au moment où le dernier test passé, plutôt que de fissure ouvrir un débogueur.
  • Toutes les quelques minutes, vous vérifiez que votre code fonctionne -. Tous (ou au moins tous du comportement couvert par les tests, si vous faites TDD est un pourcentage très élevé de celui-ci)

Je assez bien faire TDD tout le temps, que je travaille sur le code de production ou de jeu; Je trouve qu'il est difficile de coder toute autre manière ces jours-ci.

(Avertissement:. Je ne presque pas de choses de l'interface utilisateur, donc je ne peux pas discuter TDD pour UIS)

J'utilise TDD dans à peu près tout ce que je fais, d'applications triviales à piles entières SIP.

Je ne pas utiliser TDD dans un site Web PHP héritage que je repris. Je trouve pénible de ne pas avoir des tests. Et je trouve cela extrêmement gênant briser accidentellement des parties du site parce que je n'ai pas une suite de tests de régression me dire je me suis cassé quelque chose. Le client n'a pas le budget pour moi (a) des tests d'écriture pour la base de code et (b) dans le processus rendre le code testable en premier lieu, donc je viens de mettre en place avec elle.

  • Chaque fois que votre client peut être plus efficacement fourni (ils éventuellement de bons rapports avec les tests - et il sera au moins de limitation des discussions de fin de projet)
  • Chaque fois qu'il prendrait plus de temps garder vos co-développeurs informés sur EVERYTYHING dans le code que de faire des efforts dans la construction de l'épreuve - et cela est plus tôt que vous pouvez penser

Quoi? Pas de réponse négative!

Disclaimer: Je ne suis pas anti-tests unitaires. Quand les gens disent TDD, je suppose qu'ils veulent dire la version à consonance maladie où ils sont des tests d'écriture avant d'écrire le code de 80-100% de tout le code qu'ils écrivent.

Je dirais:

  • Il est un catalyseur. Si la capture des problèmes de régression est un énorme problème pour vous que TDD-auto complète dès le début semble utile, l'écriture de tests pour chaque dernier morceau de code que vous écrivez, peut réellement vous aider à ignorer le vrai problème.

  • Il aide les gens ignorent le vrai problème. Lors de la fixation d'un tour de bugs dans un jeu de whack-a-mole où deux autres pop-up, les coups d'architecture. Concentrer. Se concentrer sur le vrai problème. En voyant les grains de beauté avant doit être buter est propre-o, mais vous ne devriez pas être là en premier lieu.

  • Il mange beaucoup de temps. Je frappe des bugs occasionnels. Je ne suis pas touché tant qu'il semble utile de préfixer chaque nouvelle écriture I chose avec un test pour elle. problèmes de capture où ils sont susceptibles de se produire. erreurs de poignée de sorte qu'ils sont faciles à diagnostiquer. Valider. Test des points clés de chevauchement / goulot d'étranglement. Mais pour pleurer à haute voix ne teste pas tous les derniers getter et setter dans quelque chose qui ne devrait probablement pas avoir eu ceux en premier lieu.

  • Conception Mise au point: Il n'y a absolument aucun moyen, même un bon développeur va écrire le meilleur code qu'ils pourraient quand ils se concentrent également sur l'épreuve. S'il semble que la seule façon que vous pouvez avoir une bonne conception, je vous recommande de voir ci-dessus à propos de « se concentrer sur le vrai problème. »

  • Macro-Design Fail: Le code de base à mon travail actuel est truffé d'interfaces qui se ne ont jamais utilisé plus d'une fois et les violations massives de principe DRY de base que je ne finalement commencé à comprendre quand je me suis rendu les gens écrivaient pour la test-cadres et les tests en général. L'essai ne doit pas conduire à l'architecture stupide. Pas vraiment, il n'y a rien qui est en quelque sorte plus évolutive ou digne entreprise de copier et coller 20 fichiers, puis seulement apporter des changements significatifs à deux d'entre eux. L'idée est de préoccupations distinctes, et non pas les séparer au milieu. Cruft et abstraction inutile vous coûter plus cher que de ne pas avoir une couverture de 95% jamais.

  • Il est très populaire et beaucoup de gens vraiment, vraiment comme ça. Si cela ne suffit pas de raison d'au moins la deuxième estimation et / ou vétérinaire la merde hors de toute technologie avant l'adoption, vous apprendre une certaine paranoïa.

Licencié sous: CC-BY-SA avec attribution
scroll top