Je ne peux pas trop insister sur les avantages de l'ATS-fondé de la méthode de développement. Lorsque vous adoptez TDD, votre unité-tests de devenir des citoyens de première classe aux côtés le code que vous écrivez, au lieu de code qui est maintenu pour le plaisir d'avoir en unités de tests et de ne pas être maintenu à jour.
En mode TDD, vous utilisez votre appareil-tests comme une spécification exécutable de ce que votre composant devrait le faire. Vous devez faire cela en considérant que vous voulez que votre composant à faire, et puis l'écriture de tests pour l'exercice de cette fonctionnalité. Depuis votre code initialement n'aurez pas de cette fonctionnalité, tous les nouveaux tests de vous écrire échouer ou d'être rouge. Une fois que vous avez vos tests, commencer la mise en œuvre de la composante. Progressivement, à mesure que vous ajoutez la fonctionnalité requise, le rouge des tests s'allume en vert. La bonne chose est que, après que vous avez mis en œuvre suffisamment de fonctionnalités pour rendre tous les tests passent, vous savez que vous avez terminé la mise en œuvre de la destinée de spécification et de savoir exactement où s'arrêter. Trop souvent j'ai vu des situations où un développeur aura achevé la mise en œuvre de la fonctionnalité requise mais ne l'arrête pas, plutôt que l'amélioration de la composante et l'ajout de fonctionnalités supplémentaires et d'eye-candy, dont aucun ne fait partie de la spécification requise, de perdre active de temps de développement.
Une fois que vous avez votre appareil-tests, il est facile de mettre cela dans une une intégration continue de l'environnement. Cet environnement serait check-out de la dernière version du code à partir de votre référentiel, le construire, puis exécutez votre appareil-tests. Si une régression qui se passe, si quelqu'un vérifie dans le code qui sauts de votre unité-tests, vous saurez à ce sujet pronto, au lieu de trouver après qu'il a été déployé à votre environnement de production. Pour s'assurer que le nouveau code n'a pas d'introduire une régression, nous avons configuré la connexion crochets sur notre dépôt pour s'assurer que tout le code soumis a également eu de l'accompagnement des tests et qu'ils passent. Ceci est particulièrement utile lorsque vous avez plusieurs personnes travaillant sur un projet, comme ils peuvent voir et via n'importe quel tableau de bord de suivi que vous pourriez utiliser si le référentiel est bon pour la synchronisation à ce point dans le temps ou non. Il est également facile de paramètres régionaux une version particulière du référentiel qui ne de travailler, de laisser les gens travailler avec les bonnes versions, alors que quelqu'un d'autre est de travailler sur la fixation de tout ce problème est actuellement en rupture de votre build. Ce serait aussi potentiellement un "verte" de construire, comme indiqué par le tableau de bord est un build qui a une très bonne probabilité de ne pas rencontrer les problèmes lorsqu'ils sont poussés à un environnement de production.
Beaucoup de gens pensent que l'adoption TDD signifierait davantage de travail et de tracas, et qu'il serait plus temps. Considérons cependant que le temps supplémentaire passé à l'écriture de tests permettra d'éviter toute fonctionnalité qui est en train d'être testé à partir de la rupture, et que vous seriez à la recherche de ces pauses plus tôt, plutôt que plus tard.
Un autre avantage de l'utilisation de TDD est que vous allez donner à votre conception beaucoup plus d'attention, et qu'il serait beaucoup mieux structuré et industrialisé au cours d'une non-ATS approche. Cette modularité est important de pouvoir disposer d'une unité de test de la suite qui est rapide à exécuter et non cassant.
GUI-test est difficile, mais pas impossible. Pensez à l'internet-l'INTERFACE utilisateur de tester des technologies tels que le Sélénium, le WebDriver et Watir, qui peuvent exercer web de l'Isu de la programmation. Il est facile à une mauvaise utilisation de ces outils, en effectuant seulement cher de bout en bout, essais de les utiliser. Une bien meilleure approche est à l'abstrait de l'INTERFACE de la couche de sorte qu'il peut être testé de manière isolée, indépendamment de votre logique métier. Vous ne voulez pas un test de l'INTERFACE utilisateur d'aller et de réaliser des opérations sur une base de données.
Pour récapituler, vous voulez écrire unité efficace-tests à faire en utilisant le TDD est une expérience agréable, plutôt qu'un fardeau. Vos tests doivent être rapides, test de composants dans l'isolement, et, idéalement, devrait être exécuté à tout moment.
Ce que j'ai décrit ici est un cas idéal. Vous n'avez pas à adopter de chaque idée mentionné, mais vous pouvez choisir ce qui fonctionne pour faire de votre processus de développement plus efficace.