L'entreprise pour laquelle je travaille actuellement utilise Sélénium pour unir-tester notre interface utilisateur. Qu'utilisez-vous pour tester unitairement votre interface utilisateur Web et dans quelle mesure le trouvez-vous efficace ?
Réponses
Trop de publicités?Je suis un grand fan de Selenium. Dire " test unitaire de votre interface web " n'est pas exactement exact comme l'ont mentionné certains commentaires. Cependant, je trouve que Selenium est incroyablement utile pour effectuer ce genre de tests d'acceptation et d'intégrité sur l'interface utilisateur.
Une bonne façon de commencer est d'utiliser Selenium IDE dans le cadre de votre développement. En d'autres termes, il suffit d'ouvrir l'IDE pendant que vous développez et d'écrire vos tests au fur et à mesure pour réduire le temps de développement. (Au lieu de devoir parcourir manuellement l'interface utilisateur pour arriver au point où vous pouvez tester ce sur quoi vous travaillez, il suffit d'appuyer sur un bouton et Selenium IDE s'en chargera pour vous. C'est un formidable gain de temps).
La plupart de mes principaux scénarios d'utilisation sont étayés par des tests Selenium RC. On ne peut pas vraiment les considérer comme des tests unitaires à la manière d'un framework xUnit, mais ce sont des tests ciblés sur des fonctionnalités très spécifiques. Ils sont rapides à écrire (surtout si vous implémentez des méthodes communes pour des choses comme la connexion ou la configuration de vos cas de test), rapides à exécuter et fournissent une boucle de rétroaction très serrée. En ce sens, les tests Selenium RC sont très similaire aux tests unitaires.
Je pense que, comme pour toute autre chose, si vous faites l'effort d'apprendre correctement un outil de test (par exemple, Selenium), vos efforts seront récompensés. Vous mentionnez que votre entreprise utilise déjà Selenium pour effectuer des tests d'interface utilisateur. C'est très bien. Travaillez avec cet outil. Si vous trouvez Selenium difficile à utiliser ou déroutant, restez-en là. La courbe d'apprentissage n'est pas si abrupte que cela, une fois que vous avez appris à connaître un peu l'API.
Si je travaille sur une application web, il est rare que j'écrive une quantité significative de code sans que des tests Selenium RC ne viennent l'étayer. C'est à ce point que je trouve Selenium efficace :) (J'espère que cela répondra à votre question )
Si vous avez conçu votre application correctement, vous n'aurez de toute façon pas des masses de logique dans l'interface utilisateur. Il est beaucoup plus logique de séparer le travail réel effectué en unités distinctes de l'interface utilisateur, puis de les tester.
Si vous faites cela, le seul code de l'interface utilisateur sera celui qui invoque le backend, donc il suffit de tester le backend.
J'ai utilisé NUnit ASP dans le passé (à mon travail), et si vous insistez pour tester unitairement votre interface utilisateur, je vous conseille vivement d'utiliser TOUT sauf NUnit ASP. C'est une plaie de travailler avec, et les tests ont tendance à être invalidés (nécessitant d'être révisés) après même les changements les plus mineurs de l'interface utilisateur (même si les sujets des tests ne changent pas réellement).
Nous utilisons QuickTestPro. Jusqu'à présent, il est efficace, mais la sélection de navigateurs est limitée. La partie la plus intéressante est la possibilité d'enregistrer l'activité de votre navigateur et de la convertir en un ensemble d'étapes scriptables. Il y a aussi un addin .Net qui permet, si vous avez du code de validation à faire pour les différentes étapes de votre test, d'écrire des méthodes dans une assemblée et de les appeler depuis votre script.
Nous avons utilisé JSunit pendant un certain temps pour faire des tests unitaires... ce n'est peut-être pas le même genre de tests que ceux dont vous parlez, mais c'est excellent pour s'assurer que votre JavaScript fonctionne comme vous l'attendez.
Vous l'exécutez dans le navigateur et il peut être configuré dans une construction Ant pour être automatiquement exécuté à distance contre un ensemble de navigateurs sur un ensemble de plates-formes (vous pouvez ainsi vous assurer que votre code est multi-navigateur et que la logique est correcte).
Je ne pense pas qu'il remplace le Selenium, mais il le complète bien.