L'efficacité du TDD est indépendant de la taille du projet. Je pratique les trois lois de la DRT, même sur le plus petit exercice de programmation. Les tests ne prennent pas beaucoup de temps pour écrire, et de les enregistrer une énorme quantité de temps de débogage. Elles me permettent aussi de refactoriser le code sans avoir peur de casser quoi que ce soit.
TDD est une discipline similaire à la discipline de la double-saisie-comptabilité pratiqué par les comptables. Il permet d'éviter des erreurs dans-la-petite. Comptables entrer dans chaque opération deux fois, une fois comme un crédit, et une fois qu'une carte de débit. Si pas de simples erreurs ont été faites, alors le bilan est somme nulle. Zero est un simple contrôle sur place qui empêche les cadres d'aller en prison. Par la même occasion, de programmeurs d'écrire des tests unitaires à l'avance de leur code comme une simple vérification. En effet, ils écrivent chaque bit de code deux fois: une fois comme un test, et une fois que le code de production. Si les tests passent, les deux bits de code sont en accord. Ni la pratique protège contre les plus grands et les plus complexes de ses erreurs, mais les deux pratiques sont néanmoins précieux.
La pratique du TDD n'est pas vraiment une technique de contrôle, c'est une pratique de développement. Le mot "test" dans le DRT est plus ou moins une coïncidence. En tant que tel, TDD n'est pas un remplacement pour les bonnes pratiques en matière de dépistage, et de bons testeurs de l'AQ. En effet, c'est une très bonne idée d'avoir testeurs expérimentés écrire QA plans de test indépendamment (et souvent à l'avance) les programmeurs de l'écriture du code (et leurs tests unitaires).
C'est ma préférence (en effet ma passion) que ces tests de QA sont également automatisé à l'aide d'un outil comme FitNesse, le Sélénium, ou Watir. Les tests doivent être faciles à lire par des gens d'affaires, faciles à exécuter, et absolument sans équivoque. Vous devriez être en mesure de les exécuter à une notification de moments, généralement plusieurs fois par jour.
Chaque système doit également être testé manuellement. Cependant, les tests manuels ne doivent jamais être machinal. Un test qui peut être inclus dans le script doit être automatisé. Vous souhaitez uniquement mettre de l'humain dans la boucle lorsque le jugement humain est nécessaire. Par conséquent, l'homme doit être en train de faire des tests exploratoires, pas aveuglément à la suite des plans de test.
Donc, la réponse courte à la question de savoir quand à l'unité-test de rapport de test manuel est qu'il n'y a pas de "rapport". Vous devriez écrire des tests unitaires automatisés d'abord pour la grande majorité du code que vous écrivez. Vous devriez avoir automatisé QA tests d'acceptation écrite par les testeurs. Et vous devriez pratiques stratégiques exploratoire d'un test manuel.