Je voudrais essayer d'implémenter du TDD dans nos applications Web pour réduire les régressions et améliorer la qualité des versions, mais je ne suis pas convaincu de l'efficacité des tests automatisés avec quelque chose d'aussi moelleux que les applications Web.
J'ai lu et essayé TDD et les tests unitaires, mais les exemples sont des fonctionnalités «solides» et plutôt simples comme les convertisseurs de devises, etc.
Existe-t-il des ressources pouvant aider à tester les systèmes de gestion de contenu et de publication unitaire? Que diriez-vous de tester un panier / magasin (produits physiques et en ligne)? AJAX?
Googler pour "Web Test Driven Development" me donne juste d'anciens articles d'il y a plusieurs années couvrant les mêmes exemples de fonction de calculatrice ou des discussions sur pourquoi TDD est meilleur que tout (sans aucun exemple).
Réponses:
Gros avertissement: je n'ai pas créé d'applications Web et je n'ai testé aucune application Web. Ce qui suit ne sont que des bribes d'informations que j'ai absorbées dans mes promenades aléatoires dans la sphère de l'information.
Construisez votre application Web de manière à pouvoir tester les règles métier isolément. Si vous vous retrouvez à tester des règles métier via l'interface utilisateur, il est peut-être temps de réfléchir à une refonte.
Quand il s'agit de tester l'interface utilisateur, remplacez vos règles métier par des implémentations simulées qui répondent de manière prévisible.
Les deux règles ci-dessus sont extraites de la conférence de Bob Martin à RailsConf 2010 . Le discours ne porte pas sur TDD et la section où il mentionne les tests est courte et quelque part au milieu.
Il existe des outils tels que JsUnit , JSSpec , YUI Test pour tester JavaScript et Selenium et Watir pour tester l'interface utilisateur.
La bibliothèque pragmatique a quelques livres couvrant les tests d'applications Web. Une liste de livres étiquetés avec Testing est disponible sur http://www.pragprog.com/categories/design . Les livres de test de l'application Web Pragmatic Bookshelf sont principalement axés sur Ruby et Rails, mais devraient être applicables de manière générique.
la source
Test-Driven JavaScript Development est un très bon livre de Christian Johansen, le développeur derrière Sinon.js et Buster.js , qui couvre des sujets tels que (tirés du site Web):
Actuellement, nous utilisons Sinon.js avec Mocha, mais prêt à passer à Buster.js, car ses fonctionnalités sont vraiment bien!
la source
Sur un projet sur lequel j'ai travaillé récemment, le développeur principal avait décidé d'utiliser Unity afin que la simulation et le TDD soient simplifiés dans une grande application Web - je pense que l'utilisation de Unity sera souvent accompagnée de TDD est une application Web.
Enquêter sur les tests unitaires de CMS est susceptible de conduire à une impasse car il n'y a tout simplement pas de raison raisonnable de se moquer. Je ne vois pas ce qui peut être testé sans se moquer du trafic http vers les pages - et à ce stade, le test a peu de valeur.
Je pense qu'une règle d'or utile avec les applications Web est que si elle peut utiliser une maquette pour réduire la complexité, elle peut probablement être testée unitaire.
Ainsi, dans une application Web, vous pouvez simuler votre base de données pour tester de manière unitaire différentes parties de votre couche ou modèle d'accès aux données; vous pouvez vous moquer de l'entrée utilisateur pour tester uniquement la vue ou l'interface utilisateur, etc.
la source
J'ai écrit un livre sur TDD pour le développement web avec Python + Django. il couvre TDD, à la fois avec des tests de bout en bout / fonctionnels (sélénium) et des tests "unitaires" de niveau inférieur. Je couvre également les pratiques de développement modernes telles que la façon d'intégrer git dans votre flux de travail, comment déployer sur un serveur et automatiser et tester cela, l'intégration continue, les simulations et tester l'isolement, et bien plus encore:
http://www.obeythetestinggoat.com/
(ou http://shop.oreilly.com/product/0636920051091.do )
la source