147 votes

WatiN ou Selenium?

Je vais bientôt commencer à coder des tests automatisés de nos présentations. Il semble que tout le monde recommande WatiN et Selenium. Lequel préférez-vous pour tester automatiquement les formulaires web ASP.NET? Lequel de ces produits fonctionne le mieux pour vous?

À noter, j'ai remarqué que WatiN 2.0 est en CTP depuis mars 2008, est-ce quelque chose à craindre?

108voto

Jeroen van Menen Points 2123

Je travaille actuellement dur sur une version bêta de WatiN 2.0 quelque part au cours du T1 de 2009. Ce sera une mise à jour majeure par rapport aux versions actuelles CTP 2.0 et vous offrira essentiellement les mêmes fonctionnalités pour automatiser FireFox et IE que la version 1.3.0 propose pour automatiser IE.

Donc pas de soucis de ce côté.

Jeroen van Menen
Développeur principal WatiN

58voto

Mark Erdmann Points 940

Si vous cherchez à faire un investissement sérieux et à long terme dans un cadre qui continuera à être amélioré et soutenu par la communauté, Selenium est probablement votre meilleure option. Par exemple, je viens de tomber sur ces informations sur le blog de Matt Raible :

Depuis vendredi, Google compte plus de 50 équipes exécutant plus de 51 000 tests par jour sur la Ferme Selenium interne. 96% de ces tests sont gérés par Selenium RC et les machines de la Ferme le font correctement. Les autres 4% sont en partie dus à des bugs de RC, en partie à des erreurs de test, mais isoler la cause peut être difficile. Selenium a été adopté comme technologie principale pour les tests fonctionnels des applications web chez Google. C'est une bonne nouvelle.

Je suis également allé à l'une des réunions de Selenium récemment et j'ai appris que Google investit des ressources sérieuses pour améliorer Selenium et l'intégrer avec WebDriver, qui est un outil de test automatisé développé par Simon Stewart. L'un des principaux avantages de WebDriver est qu'il contrôle le navigateur lui-même plutôt que de s'exécuter à l'intérieur du navigateur en tant qu'application Javascript, ce qui signifie que des problèmes majeurs comme le problème "même origine" ne seront plus un problème.

37voto

Cole Shelton Points 542

Nous avons testé les deux et avons décidé d'opter pour WaTiN. Comme d'autres l'ont souligné, Selenium possède quelques fonctionnalités intéressantes qui ne se trouvent pas dans WaTiN, mais nous avons rencontré des problèmes pour faire fonctionner Selenium et une fois que nous l'avons fait, les tests étaient définitivement plus lents que avec WaTiN. Si je me souviens bien, les problèmes de configuration que nous avons rencontrés provenaient du fait que Selenium avait une application séparée pour contrôler le navigateur réel tandis que WaTiN faisait tout en interne.

30voto

Grynn Points 748

J'ai essayé les deux et voici mes premières impressions...


WatiN

Les points positifs

  • Exécution rapide.
  • Les outils de création de scripts sont des projets indépendants; il y en a 2 que je connais : Wax (basé sur Excel, hébergé sur CodePlex) et WatiN Test Record (hébergé sur SourceForge). Aucun n'est aussi robuste que Selenium IDE.
  • Très bon support pour IE. Peut se rattacher et se détacher des instances en cours d'exécution. Peut accéder à des poignées de fenêtres natives etc. (Voir exemple de script ci-dessous).
  • Emballé dans NuGet, facile à utiliser dans des environnements .NET, style Visual Studio et à garder mis à jour.

Les points négatifs

  • En cherchant WatiN (watin xyz), Google recommande souvent "watir xyz" à la place. Pas tant de documentation disponible.
  • Ce qui existe en documentation est confus; par exemple : à première vue, il semblerait qu'il n'y ait pas de support natif pour les sélecteurs CSS. Surtout qu'il y a des bibliothèques d'extensions comme 'WatiNCssSelectorExtensions' et de nombreux articles de blog sur les techniques alternatives (comme injecter jQuery/sizzle dans la page). Sur Stack Overflow, j'ai trouvé un commentaire de Jeroen van Menen qui suggère qu'il y a un support natif. Au moins, le développeur principal passe du temps sur Stack Overflow :)
  • Aucun support natif pour XPath.
  • Aucune exécution à distance/prise en charge basée sur la grille prête à l'emploi.

Exemple de script (C#). Vous ne pouvez pas faire cela avec Selenium (pas que je sache, en tout cas) :

class IEManager
{
    IE _ie = null;
    object _lock = new object();

    IE GetInstance(string UrlFragment)
    {
        lock (_lock)
        {
            if (_ie == null)
            {
                var instances = new IECollection(true);  //Trouver toutes les instances existantes d'IE
                var match = instances.FirstOrDefault(ie=>ie.Url.Contains(UrlFragment));
                _ie = match ?? new IE();
                if (match==null)  //nous avons créé une nouvelle instance, nous devrions donc le nettoyer quand c'est fait !
                    _ie.AutoClose = true;
            }
        }

        return _ie;
    }
}

Selenium

  • Plus lent que WatiN (surtout parce qu'un nouveau processus doit être créé).
  • Support natif pour les sélecteurs CSS/XPath.
  • Selenium IDE est bon (je ne dirais pas excellent, mais c'est le meilleur de sa catégorie !).
  • Paraît plus Java-ish que .NET-ish...mais en réalité, il est indépendant du langage de programmation ; toutes les commandes sont envoyées à un 'Driver' hors processus. Le pilote est en réalité un processus hôte pour l'instance du navigateur. Toute communication doit être sérialisée dans et hors des limites du processus, ce qui pourrait expliquer les problèmes de vitesse par rapport à WatiN.
  • Processus découplés - "Driver" et "Control" signifient plus de robustesse, plus de complexité, etc., mais aussi plus facile à créer des grilles/environnements de tests distribués. J'aurais vraiment aimé si le mécanisme de "distribution" (c'est-à-dire la communication entre le pilote et le contrôle) se faisait à travers WebSphere ou un autre gestionnaire de files d'attente de messages existant et robuste.
  • Prise en charge de Chrome et d'autres navigateurs prête à l'emploi.

Malgré tout, j'ai finalement opté pour WatiN ; j'ai principalement l'intention d'écrire de petites applications de scraping d'écran et je veux utiliser LINQPad pour le développement. Se connecter à une instance IE distante (que je n'ai pas moi-même démarrée) est un gros avantage. Je peux bidouiller dans une instance existante...puis exécuter un peu de script...puis bidouiller à nouveau etc. C'est plus difficile à faire avec Selenium, bien que je suppose que des "pauses" pourraient être intégrées dans le script pendant lesquelles je pourrais bidouiller directement avec le navigateur.

18voto

Igor Brejc Points 9752

La plus grande différence est que Selenium offre un support pour différents navigateurs (pas seulement IE ou FF, voir http://seleniumhq.org/about/platforms.html#browsers).

De plus, Selenium dispose d'un serveur de contrôle à distance (http://seleniumhq.org/projects/remote-control/), ce qui signifie que vous n'avez pas besoin d'exécuter le navigateur sur la même machine où le code de test est exécuté. Vous pouvez donc tester votre application Web sur différentes plateformes OS.

En général, je recommanderais d'utiliser Selenium. J'ai utilisé WatiN il y a quelques années, mais je n'étais pas satisfait de sa stabilité (cela a probablement été amélioré depuis). Le plus grand avantage de Selenium pour moi est le fait que vous pouvez tester l'application Web sur différents navigateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X