web-dev-qa-db-fra.com

Quels tests le sélénium couvre-t-il au-delà du karma?

Je comprends que Karma est un programme d’essai en JavaScript, capable d’exécuter des tests dans de vrais navigateurs. Si tel est le cas, quel type de couverture de test le sélénium fournit-il en plus du karma?.

27
Jason Weden

Il y a une énorme différence entre Karma et Selenium. Selenium a un mécanisme de contrôle de navigateur intégré, contrairement à Karma. Donc, Selenium est plus adapté aux tests de bout en bout, par exemple avec nightwatch.js . Karma est conçu pour les tests unitaires, il est donc beaucoup plus difficile de réaliser des tests de bout en bout. Vous pouvez par exemple ajouter un lanceur Phantomjs, mais ce ne sera jamais la même chose que de vrais tests de navigateur avec Selenium ... Je pense que les deux ils peuvent exécuter n’importe quel framework de test js si vous avez un adaptateur ... moka, jasmin, qunit, etc ...

Une éternité plus tard:

Il est possible d'écrire des tests e2e avec Karma. Vous devez créer un iframe ou ouvrir une nouvelle fenêtre et exécuter un script qui effectue la navigation, déclenche les événements, soumet des formulaires, etc. à partir du cadre ou de la fenêtre parent. La page testée doit autoriser votre serveur Karma avec CORS ou vous devez désactiver la sécurité du navigateur. Je travaille sur une bibliothèque de test e2e , qui fait exactement cela.

25
inf3rno

Il existe plusieurs versions de Selenium, dont la plus récente (je crois) est Selenium Web Driver, qui vous permet de créer un pilote qui gérera un navigateur pour vous en simulant des actions qui interagissent avec l'interface utilisateur, comme le ferait un utilisateur (via un Json). câble).

Ma compréhension actuelle de Karma (que je pourrais ajouter est très limitée) est qu’elle repose beaucoup sur l’exécution de javascript. À cause de cela, Karma devrait appeler des événements de changement sur des éléments (comme dans «flou» et «survoler»), alors que Selenium se contenterait de cliquer, de faire défiler, de déplacer le curseur. Les navigateurs de Selenium sont limités à ceux spécifiés sur leur page Web ici .

10
Nashibukasan

Cela dépend de ce que vous testez. Si vous utilisez javascript pour écrire des tests unitaires - via jasmine/mocha/chai ou équivalent - l'argument voulant que le karma s'appuie fortement sur javascript et que Selenium ne le fasse pas - est redondant.

Au cours de toutes mes expériences, j'ai travaillé avec très peu de testeurs automatisés dédiés, et bien que le langage Selenium soit peut-être leur choix, la bibliothèque de méthodes Selenium n'est pas aussi facile à mémoriser qu'un moteur de sélection équivalent comme jQuery. 

La difficulté qu'éprouvent les testeurs automatisés dédiés à apprendre la langue et le manque d'intérêt des développeurs pour apprendre une langue inférieure perpétuent le manque d'investissement des entreprises pour investir dans des tests automatisés plus complexes. 

Il y a eu quelques implémentations d'augmentation de jQuery avec Selenium au fil des ans, mais aucune n'a vraiment un public énorme et la plupart sont écrites en Java. 

Webdriverio a un paquet npm doté de quelques fonctionnalités jquery - https://www.npmjs.com/package/webdriverio-jquery

Karma a le moyen d'importer le moteur entier jquery - https://github.com/bessdsv/karma-jasmine-jquery

Cela dépend de ce qui est testé. Si vous testez le code frontal, il est logique d'utiliser javascript. Il est plus facile d'utiliser jquery que le langage Selenium et, actuellement, le karma prend mieux en charge jquery que webdriver. 

L'utilisation de jQuery pour des tests automatisés permettrait aux compétences transférables de se développer, et inversement, les développeurs de réaliser des tests automatisés.

0
Steve Tomlin