2010-08-25 5 views
2

Il s'agit davantage d'une question générale et d'une sorte de discussion sur les meilleures pratiques.Test d'application avec des rails

Comment tester une application Rails?

Il existe des mantras comme BDD et TDD et des frameworks comme RSpec et Cucumber mais combien est-ce suffisant et quelle est la meilleure façon de faire? Est-il suffisant d'utiliser le concombre comme tests d'intégration? Etes-vous en train d'écrire des tests unitaires supplémentaires?

Alors, quoi et comment votre stratégie de test Rails?

Dans l'attente de bonnes opinions ...

+0

Comme je ne pense pas que je peux donner une réponse vraiment nouveau, je vais créer un lien vers ma réponse d'une question précédente qui était un peu http://stackoverflow.com/questions/1448821/does-cucumber-do-away-with-the-need-to-write-unit-tests/1448928#1448928. Ma réponse a également été éditée par M. Topley, comme votre question :) – theIV

Répondre

1

Comment peut-on tester une application Rails? En profondeur, en visant Eighty percent coverage and no less! La décision réelle quant à "comment" est facile, mais "combien" peut être difficile à répondre.

J'ai quelques projets de petite taille (presque, mais pas tout à fait anciens) avec presque aucun test, et les tests ont tendance à être des tests unitaires de bas niveau de composants cruciaux dans le code. À l'occasion, je souhaite qu'ils aient eu plus de tests, mais en général ils sont regroupés avec des surfaces relativement petites qui rendent le débogage et les tests manuels assez simples.

Dans mon travail de jour, nous utilisons rSpec, Cucumber et Selenium sur un assez grand projet Rails (10+ développeurs, plusieurs années en préparation).

rSpec fournit une couverture d'unité pour tous nos modèles, contrôleurs, assistants et autres classes. Le concombre fournit des tests fonctionnels et d'intégration de haut niveau.

Selenium est utilisé pour l'exécution de zones à forte javascript de notre interface utilisateur avec javascript (via Capybara et Cucumber). Nous disposons également d'une suite de tests de régression dans Selenium utilisés par notre équipe de test et d'assurance qualité (les versions mises à la disposition de l'assurance qualité sont vertes grâce à notre build CI). Mon installation "minimale" de nos jours serait une couverture au niveau de l'unité en utilisant rSpec sur les zones critiques et/ou complexes et une suite complète de tests fonctionnels de concombres sur les chemins critiques à travers l'application.

0

Il existe de nombreux outils pour tester les rails et autres applications Web sous de nombreux aspects. Mais si vous êtes nouveau à tester je vous recommande fortement de commencer par apprendre le cadre de test propre Rails avant de commencer à utiliser d'autres outils. L'apprentissage et, plus tard, la maîtrise d'un cadre de test permettent à l'avenir de mieux comprendre les avantages/inconvénients d'un autre cadre et de les faire fonctionner à l'unisson.

Vous pouvez commencer par tester les choses suivantes:

  • tests unitaires de vos modèles
  • Tests fonctionnels pour vos contrôleurs
  • d'apprentissage sur les luminaires à tubes et comment charger des données de test

J'ai vu beaucoup d'efforts de tests échoués, mais je ne les ai jamais vus échouer parce qu'ils ont choisi le mauvais outil/cadre. Ils échouent parce qu'ils ne savent pas maîtriser les outils qu'ils utilisent et en apprennent suffisamment sur les bases du test.

En savoir plus sur les tests Rails ici.
http://guides.rubyonrails.org/testing.html

Manuel Exploratoire Test
Autant que j'aime le test automatique est, à mon humble avis, ne remplace pas les tests manuels. La raison principale étant qu'un automatisé ne peut faire que ce qu'on lui dit et ne vérifier que ce qu'il a été informé de voir comme réussite/échec. Un humain peut utiliser son intelligence pour trouver des fautes et soulever des questions qui apparaissent lors de l'essai d'autre chose.
En savoir plus sur le mélange automatisé et les tests manuels dans une autre de mes réponses ici:
What test methods do you use for developing websites?

Questions connexes