J'aimerais écrire quelques tests automatiques pour mes rails 3 Application. P>
Je me demande comment commencer avec ça. P>
J'ai entendu parler de selenium / rspec / concombre, et je suppose qu'il y a beaucoup plus d'options. P>
Quels sont les avantages / inconvénients de ces cadres de test? Lequel d'entre eux a la meilleure documentation? Lequel est le plus populaire dans le monde rubis? Et dans l'industrie du tout? P>
J'ai la connaissance générale de la façon d'écrire des tests. Je veux juste apprendre le (s) cadre de test approprié pour tester les applications de Rails. P>
Aidez-moi s'il vous plaît à décider avec quel cadre de test commencer. P>
5 Réponses :
Le moyen le plus simple de commencer utilise TestUnit . Lorsque vous générez un modèle, une vue, un contrôleur utilisant un échafaudage, il générera automatiquement un dossier de test pour vous contenir un fichier de configuration et des tests d'environnement de test, ou vous pouvez ajouter des tests aux modèles existants avec un générateur de rails. P>
C'est alors une question de lecture de la documentation sur Testunit, dont il existe un montant équitable. P>
Pour une prochaine étape, ma préférence personnelle est d'utiliser RSPEC sur concombre - j'ai trouvé du concombre difficile de maintenir et, tout en étant merveilleux d'avoir des tests lisibles par votre patron, j'ai découvert que la plupart des chefs Don 't vraiment vouloir lire ou contribuer aux tests, et cela fait du développement fastidieux et est très "Bitty" - beaucoup de petits bits de texte dispersés dans divers fichiers. P>
Si vous voulez sauter directement et commencer à utiliser RSPEC pour les rails, alors je recommanderais RSPEC-Rails , qui comprend de nombreux aides à affirmer le comportement correct de votre application. P>
Je pourrais continuer, mais vous avez demandé «Où dois-je commencer» - il y a deux bons endroits. P>
Merci pour votre avis. Vous n'avez rien dit sur le sélénium. Je suppose que le RSPEC et le sélénium destinés à différents types de tests. Est-ce correct ?
Misha: RSPEC peut être utilisé avec sélénium si vous testez votre application comme rendu dans le navigateur (SELENIUM est un pilote de navigateur).
Ce que vous utilisez pour prétendre être un navigateur, c'est à vous - ça fonctionne bien avec RSPEC. J'utilise webrat parce que je trouve plus facile de mettre en place.
sélénium strong> est un cadre permettant d'automatiser les tests d'interface utilisateur. Script Selenium lance une fenêtre de navigateur, passe à une page Web et manipule des éléments de page. p>
rspec strong> et concombre strong> sont des outils pour ce qu'on appelle " Développement dirigé par le comportement (BDD) fort>". BDD est un processus de développement où vous avez une description d'une fonctionnalité séparée et un script (peut être un script sélénium) qui vérifie cette fonctionnalité. RSPEC et concombre Connectez fondamentalement ces deux, de sorte que lorsque vous exécutez un script de test, vous voyez la liste des fonctionnalités écrits en langage clair et leur statut de test. P>
Les scripts sélénium peuvent être écrits dans un Nombre de langues , tandis que les scripts Utilisez Ruby. La documentation est correcte pour tous, une connaissance du langage de programmation est nécessaire. P>
Liens de départ: P>
Il y a un tas de cadres qui vous aident à tester votre code de rubis / rails ... La grande chose est la nature dynamique de Ruby vous donne beaucoup de flexibilité. P>
J'aime utiliser RSPEC pour tester les internes de mon code et concombre pour tester le comportement de l'application. Donc, généralement, RSPEC testera des modèles et des méthodes, et le concombre teste l'interaction utilisateur via le navigateur. P>
Je recommande vivement ce programme de programmeurs pragmatiques sur BDD à l'aide de RSPEC sur le concombre a >. P>
Remarque: je ne recommande personnellement pas sélénium. J'irais avec du concombre avec Capybara pour tester le navigateur / interaction de l'utilisateur.
JESSE: Capybara peut utiliser le sélénium comme pilote de navigateur si vous testez JavaScript; ils ne sont pas mutuellement exclusifs.
Je ne disais pas qu'il y a un meilleur ensemble d'outils de test; et la communauté n'a définitivement pas décidé d'une norme en aucune manière. P>
Je recommande vivement Le livre RSPEC à partir des programmeurs pragmatiques-- Environ la moitié du livre est sur les tests avec des rails avec des simulateurs de concombre, de RSPEC et de navigateur tels que le sélénium. C'est un aperçu complet des différentes situations que vous trouverez avec des rails et des outils que vous voudrez peut-être utiliser dans chaque situation. P>
Il existe de nombreux outils pour tester des rails et d'autres WebApps de nombreux aspects différents. Mais si vous êtes nouveau à tester Apprentissage et la maîtrise ultérieure, un cadre de test facilite l'avenir de comprendre les avantages / les inconvénients avec un autre cadre et de les faire travailler à l'unisson. P>
Vous pouvez commencer par tester les éléments suivants: p>
J'ai vu de nombreux efforts de test échoués, mais je ne les ai jamais vus échoués parce qu'ils choisissent le mauvais outil / cadre. Ils échouent parce qu'ils ne savent pas comment maîtriser les outils qu'ils utilisent et en apprennent assez sur les bases des tests. p>
En savoir plus sur les tests de rails ici. Test exploratoire manuel fort>
http://guides.rubyonRails.org/testing.html P>
Autant que j'aime les tests automatisés, IMHO, pas un substitut des tests manuels. La raison principale étant qu'un automatisé ne peut faire que ce à quoi il est dit et ne vérifie que ce qu'il a été informé de voir comme Pass / échec. Un humain peut utiliser son intelligence pour trouver des défauts et soulever des questions qui apparaissent tout en testant autre chose.
En savoir plus sur le mélange de tests automatisés et manuels dans une autre de mes réponses ici:
Quels méthodes d'essai utilisez-vous pour développer des sites Web? p>
Toutes les très bonnes questions. IMO, il y a un tel manque de cohésion / compréhension de tant d'aspects des rails, en particulier en ce qui concerne les tests.
Quelques bons articles sur MetaBates.com .