Rapporteur - Concepts de test Javascript

Étant donné que la connaissance de JavaScript est essentielle pour travailler avec Protractor, dans ce chapitre, nous allons comprendre les concepts des tests JavaScript en détail.

Test et automatisation JavaScript

JavaScript est le langage de script typé et interprété dynamiquement le plus populaire, mais la tâche la plus difficile est de tester le code. C'est parce que, contrairement à d'autres langages compilés comme JAVA et C ++, il n'y a pas d'étapes de compilation en JavaScript qui peuvent aider le testeur à détecter les erreurs. En outre, les tests basés sur le navigateur prennent beaucoup de temps; il est donc nécessaire de disposer d'outils prenant en charge les tests automatisés de JavaScript.

Concepts de tests automatisés

C'est toujours une bonne pratique d'écrire le test car cela améliore le code; le problème avec les tests manuels est qu'ils prennent un peu de temps et sont sujets aux erreurs. Le processus de test manuel est également assez ennuyeux pour les programmeurs car ils doivent répéter le processus, écrire des spécifications de test, changer le code et actualiser le navigateur plusieurs fois. En outre, les tests manuels ralentissent également le processus de développement.

Pour les raisons ci-dessus, il est toujours utile de disposer d'outils capables d'automatiser ces tests et d'aider les programmeurs à se débarrasser de ces étapes répétitives et ennuyeuses. Que doit faire un développeur pour automatiser le processus de test?

Fondamentalement, un développeur peut implémenter l'ensemble d'outils dans la CLI (Command Line Interpreter) ou dans l'IDE de développement (Integrated development environment). Ensuite, ces tests seront exécutés en continu dans un processus séparé, même sans la contribution du développeur. Le test automatisé de JavaScript n'est pas non plus nouveau et de nombreux outils tels que Karma, Protractor, CasperJS, etc. ont été développés.

Types de tests pour JavaScript

Il peut y avoir différents tests à des fins différentes. Par exemple, certains tests sont écrits pour vérifier le comportement des fonctions dans un programme, tandis que d'autres sont écrits pour tester le flux d'un module ou d'une fonctionnalité. Ainsi, nous avons les deux types de tests suivants -

Test unitaire

Le test est effectué sur la plus petite partie testable du programme appelée unité. L'unité est essentiellement testée de manière isolée sans aucune sorte de dépendance de cette unité sur les autres pièces. Dans le cas de JavaScript, la méthode ou la fonction individuelle ayant un comportement spécifique peut être une unité de code et ces unités de code doivent être testées de manière isolée.

L'un des avantages des tests unitaires est que les tests des unités peuvent être effectués dans n'importe quel ordre car les unités sont indépendantes les unes des autres. Un autre avantage du test unitaire qui compte vraiment est qu'il peut exécuter le test à tout moment comme suit -

  • Dès le début du processus de développement.
  • Après avoir terminé le développement de tout module / fonctionnalité.
  • Après avoir modifié un module / une fonctionnalité.
  • Après avoir ajouté une nouvelle fonctionnalité dans l'application existante.

Pour les tests unitaires automatisés des applications JavaScript, nous pouvons choisir parmi de nombreux outils et frameworks de test tels que Mocha, Jasmine et QUnit.

Test de bout en bout

Il peut être défini comme la méthodologie de test utilisée pour tester si le flux de l'application du début à la fin (d'une extrémité à l'autre) fonctionne correctement selon la conception.

Les tests de bout en bout sont également appelés tests de fonction / de flux. Contrairement aux tests unitaires, les tests de bout en bout testent la manière dont les composants individuels fonctionnent ensemble en tant qu'application. C'est la principale différence entre les tests unitaires et les tests de bout en bout.

Par exemple, supposons que si nous avons un module d'enregistrement dans lequel l'utilisateur doit fournir des informations valides pour terminer l'enregistrement, le test E2E pour ce module particulier suivra les étapes suivantes pour terminer le test -

  • Tout d'abord, il chargera / compilera le formulaire ou le module.
  • Maintenant, il obtiendra le DOM (Document object model) des éléments du formulaire.
  • Ensuite, déclenchez l'événement de clic du bouton d'envoi pour vérifier s'il fonctionne ou non.
  • Maintenant, à des fins de validation, collectez la valeur des champs d'entrée.
  • Ensuite, les champs de saisie doivent être validés.
  • À des fins de test, appelez une fausse API pour stocker les données.

Chaque étape donne ses propres résultats qui seront comparés à l'ensemble de résultats attendu.

Maintenant, la question qui se pose est, bien que ce type de test E2E ou fonctionnel puisse être également effectué manuellement, pourquoi avons-nous besoin d'automatisation pour cela? La raison principale est que l'automatisation facilitera ce processus de test. Certains des outils disponibles qui peuvent être facilement intégrés à n'importe quelle application, à cet effet sont Selenium, PhantomJS et Protractor.

Outils de test et cadres

Nous avons divers outils et cadres de test pour les tests angulaires. Voici quelques-uns des outils et cadres bien connus -

Karma

Karma, créé par Vojta Jina, est un testeur. À l'origine, ce projet s'appelait Testacular. Ce n'est pas un framework de test, ce qui signifie qu'il nous donne la possibilité d'exécuter facilement et automatiquement des tests unitaires JavaScript sur de vrais navigateurs. Karma a été conçu pour AngularJS car avant Karma, il n'existait pas d'outil de test automatisé pour les développeurs JavaScript basés sur le Web. D'autre part, avec l'automatisation fournie par Karma, les développeurs peuvent exécuter une simple commande unique et déterminer si une suite de tests entière a réussi ou échoué.

Avantages de l'utilisation de Karma

Voici quelques avantages de l'utilisation de Karma par rapport au processus manuel -

  • Automatise les tests dans plusieurs navigateurs et appareils.
  • Surveille les fichiers pour les erreurs et les corrige.
  • Fournit une assistance et une documentation en ligne.
  • Facilite l'intégration avec un serveur d'intégration continue.

Inconvénients de l'utilisation du karma

Voici quelques inconvénients de l'utilisation de Karma -

Le principal inconvénient de l'utilisation de Karma est qu'il nécessite un outil supplémentaire pour la configuration et la maintenance.

Si vous utilisez Karma test runner avec Jasmine, alors moins de documentation est disponible pour trouver des informations sur la configuration de votre CSS dans le cas d'avoir plusieurs identifiants pour un élément.

Jasmin

Jasmine, un cadre de développement axé sur le comportement pour tester le code JavaScript, est développé chez Pivotal Labs. Avant le développement actif du framework Jasmine, un framework de test unitaire similaire appelé JsUnit a également été développé par Pivotal Labs, qui dispose d'un exécuteur de test intégré. Les tests des navigateurs peuvent être exécutés via des tests Jasmine en incluant le fichier SpecRunner.html ou en l'utilisant également comme exécuteur de test en ligne de commande. Il peut également être utilisé avec ou sans Karma.

Avantages de l'utilisation du jasmin

Voici quelques avantages de l'utilisation de Jasmine -

  • Un framework indépendant du navigateur, de la plateforme et de la langue.

  • Prend en charge le développement piloté par les tests (TDD) ainsi que le développement piloté par le comportement.

  • A une intégration par défaut avec Karma.

  • Syntaxe facile à comprendre.

  • Fournit des fonctionnalités de test d'espionnage, de contrefaçon et d'intercommunication qui facilitent les tests en tant que fonctions supplémentaires.

Inconvénients de l'utilisation de jasmin

Ce qui suit est un inconvénient de l'utilisation de Jasmine -

  • Les tests doivent être renvoyés par l'utilisateur au fur et à mesure de leur modification car il n'y a pas de fonction de surveillance des fichiers disponible dans Jasmine lors de l'exécution du test.

Moka

Mocha, écrit pour les applications Node.js, est un cadre de test, mais il prend également en charge les tests de navigateur. C'est un peu comme Jasmine, mais la différence majeure entre eux est que Mocha a besoin d'un plugin et d'une bibliothèque car il ne peut pas fonctionner de manière autonome en tant que cadre de test. D'autre part, Jasmine est autonome. Cependant, Mocha est plus flexible à utiliser que Jasmine.

Avantages de l'utilisation de moka

Voici quelques avantages de l'utilisation de Mocha -

  • Mocha est très facile à installer et à configurer.
  • Documentation simple et conviviale.
  • Contient des plugins avec plusieurs projets de nœuds.

Inconvénients de l'utilisation de moka

Voici quelques inconvénients de l'utilisation de Mocha -

  • Il a besoin de modules séparés pour les assertions, les espions, etc.
  • Il nécessite également une configuration supplémentaire pour une utilisation avec Karma.

QUnit

QUint, développé à l'origine par John Resig en 2008 dans le cadre de jQuery, est une suite de tests unitaires JavaScript puissante mais facile à utiliser. Il peut être utilisé pour tester n'importe quel code JavaScript générique. Bien qu'il se concentre sur le test de JavaScript dans le navigateur, il est néanmoins très pratique à utiliser par le développeur.

Avantages de l'utilisation de QUnit

Voici quelques avantages de l'utilisation de QUnit -

  • Facile à installer et à configurer.
  • Documentation simple et conviviale.

Inconvénients de l'utilisation de QUnit

Ce qui suit est un inconvénient de l'utilisation de QUnit -

  • Il a été principalement développé pour jQuery et donc pas si bon pour une utilisation avec d'autres frameworks.

Sélénium

Selenium, initialement développé par Jason Huggins en 2004 en tant qu'outil interne chez ThoughtWorks, est un outil d'automatisation de tests open source. Selenium se définit comme «Selenium automatise les navigateurs. C'est ça!". L'automatisation des navigateurs signifie que les développeurs peuvent interagir très facilement avec les navigateurs.

Avantages de l'utilisation du sélénium

Voici quelques avantages de l'utilisation du sélénium -

  • Contient un grand ensemble de fonctionnalités.
  • Prend en charge les tests distribués.
  • A un support SaaS via des services tels que Sauce Labs.
  • Facile à utiliser avec des documentations simples et des ressources riches disponibles.

Inconvénients de l'utilisation du sélénium

Voici quelques inconvénients de l'utilisation du sélénium -

  • Un inconvénient majeur de l'utilisation de Selenium est qu'il doit être exécuté en tant que processus séparé.
  • La configuration est un peu lourde car le développeur doit suivre plusieurs étapes.