Pourquoi Selenium RC est-il si lent?
Pour quelque temps, j'ai étudié le Sélénium RC afin de faire des tests fonctionnels, de mon application web. J'ai maintenant trouvé une stratégie de test qui est tellement efficace, que je ne veux pas déplacer loin de Selenium RC (après avoir passé des semaines à essayer de trouver un bon moyen de valider ASP.NET les contrôles de validation).
Mais maintenant que mon Selenium RC aventure, c'est passer d'un POC pour être quelque chose que j'utilise, je suis confronté à un problème. Il est incroyablement lent. L'exécution d'un test unique qui charge une page, remplit dans certains domaines, et clique sur un bouton prend de l'ampleur de secondes à s'exécuter. Quand il est en cours d'exécution, je peux facilement voir chaque champ est rempli, une à la fois. En utilisant Selenium IDE dans Firefox n'est pas lent.
J'ai trouvé cette page, qui indique clairement que le Sélénium RC est lent http://selenium-grid.seleniumhq.org/how_it_works.html
Mais pourquoi est-ce? Est-ce parce que le navigateur est l'interrogation du sélénium serveur? Si oui, pouvez cet intervalle d'interrogation de ne pas être modifiée? Ou est-il une autre raison. Je ne suis pas habitué à un appel distant de prendre un humainement perceptible quantité de temps à s'exécuter.
C'est horrible que l'exécution de quelques tests devraient prendre si longtemps. Je peux exécuter la totalité de ma présentation (MVP), les entreprises et couche de base de données de la suite de tests (500+ tests) de manière plus rapide qu'il n'en faut pour exécuter 10 tests pour une simple page web.
source d'informationauteur Pete
Vous devez vous connecter pour publier un commentaire.
Êtes-vous tester avec IE et de Sélénium dans multifenêtré mode? C'est extrêmement lent et vous devriez essayer de démarrer le seleniumserver avec -singlewindow
Fonctionnels et des tests d'Intégration prendra plus de temps, surtout depuis qu'ils s'exécutent dans un Navigateur. Cela signifie qu'il ils ont pour charger tous les 3 couches de votre MVC, et puis l'exécuter et même quand il est en train de faire quelque chose sur la page. Ainsi, chaque action a le potentiel pour aller à la base de données. C'est, en soi, une longue tâches en cours d'exécution par rapport aux tests unitaires.
Les tests de commencer par faire un
open
sur cette page qui attend alors pour tout charger. Donc, si c'est de prendre un long moment, alors il pourrait prendre un long moment pour votre utilisateur si elles étaient pour accéder à la page. E. g. Beaucoup d'images, unminified JavaScript/CSS, des pauvres, des dates d'expiration sur les téléchargements.Ce que la page de Sélénium est dire que le serveur est un goulot d'étranglement car il implique que vous exécutez les tests synchronisely et si vous avez déplacé le Sélénium Grille, il peut s'exécuter en parallèle pour faire le test de la suite de terminer plus rapidement. Ce n'est pas ce qui suggère que le sélénium serveur d'interrogation pour voir ce qu'il devrait faire, mais plutôt le Sélénium Serveurs sondage la Grille hub pour voir si il est toujours vivant, et de montrer qu'ils sont encore en vie.
L'autre raison pour laquelle les tests sont en cours d'exécution lente est en Sélénium de la langue de base est le JavaScript qui interagit avec le DOM. Le DOM peut ralentir les choses beaucoup surtout si vos tests sont à l'aide de XPath comme les locators. XPath + JavaScript + IE + Sélénium == Douloureuse et il n'y a rien que nous Sélénium, les Développeurs peuvent faire plus pour l'affiner. Eh bien, il est et qui va être de Sélénium 2 qui est en alpha et peut être téléchargé à partir de http://selenium.googlecode.com/ . J'ai travaillé sur l' .NET de la mise en œuvre suis voir d'énormes améliorations de la vitesse à l'instant. J'ai blogué à ce sujet parce que les changements qui m'a étonnée. J'ai été voir jusqu'à 8 tests en cours d'exécution dans le même temps, il sert à prendre le Sélénium 1 à exécuter 1 test
Est-il possible que votre défaut de la vitesse d'exécution est-elle trop faible? Découvrez getSpeed() et setSpeed() méthodes sur DefaultSelenium.