En JavaScript, les tests unitaires sont un test d'exactitude des modules de programme (la plus petite unité de conception logicielle). Son objectif est d'isoler les modules de programme et de prouver que ces modules individuels sont corrects. Les tests unitaires garantissent que les problèmes sont découverts dès le début du processus de développement et permettent aux programmeurs de vérifier facilement si des extraits de code fonctionnent toujours correctement.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version JavaScript 1.8.5, ordinateur Dell G3.
En programmation informatique, les tests unitaires (également appelés tests de modules) sont un test permettant de tester l'exactitude des modules de programme (la plus petite unité de conception de logiciels). Une unité de programme est le plus petit composant testable d’une application. En programmation procédurale, une unité est un programme, une fonction, un processus, etc. ; pour la programmation orientée objet, la plus petite unité est une méthode, y compris les méthodes des classes de base (superclasses), des classes abstraites ou des classes dérivées (sous-classes).
Chaque cas de test idéal est indépendant des autres cas ; afin d'isoler les modules pendant les tests, des programmes de test vest tels que des stubs, des simulacres ou des faux sont souvent utilisés. Les tests unitaires sont généralement écrits par les développeurs de logiciels pour garantir que le code qu'ils écrivent répond aux exigences logicielles et suit les objectifs de développement.
Le but des tests unitaires est d'isoler les modules du programme et de prouver que ces modules individuels sont corrects. Les tests unitaires garantissent que les problèmes sont découverts dès le début du processus de développement, de sorte que le programme « meurt plus tôt ». Nous devons écrire des tests unitaires pour toutes les fonctions et méthodes dès les premiers stades du développement. Les tests unitaires lisibles permettent aux programmeurs de vérifier facilement si les extraits de code fonctionnent toujours correctement. Les cas de tests unitaires bien conçus couvrent tous les chemins pour programmer les branches unitaires et les conditions de boucle. En utilisant ce chemin de test ascendant, le module du programme est d'abord testé, puis l'ensemble des modules est testé. Une fois qu'un changement provoque une erreur, l'erreur peut être rapidement localisée et réparée à l'aide de tests unitaires.
Les tests unitaires sont très populaires et populaires dans le développement back-end, comme JUnit pour les développeurs JAVA, etc., tandis que il est très peu utilisé dans le développement front-end. La raison principale est que les tests unitaires sont plus adaptés au test du code logique, ce qui est très pratique pour les langages de programmation back-end tels que JAVA. Cependant, le développement front-end nécessite souvent de gérer l'interface utilisateur, et les codes liés à l'interface utilisateur ne peuvent pas l'être. unit testing. , mais c'est en effet très gênant et beaucoup plus difficile que le code logique. Cela a conduit au fait que les tests unitaires ne sont pas devenus populaires dans le développement front-end.
Cependant, avec la popularité des tests unitaires, en particulier la promotion du développement agile, de nombreux excellents frameworks de tests unitaires JavaScript ont émergé, tels que QUnit, Jasmine, etc. Tous ces frameworks peuvent très bien tester le code Javascript. Bien sûr, tester le code de l'interface utilisateur est également plus difficile, mais nous pouvons tester une partie du code de l'interface utilisateur en construisant soigneusement notre code de test. Cependant, chaque cadre n'est pas omnipotent. Ils ont leurs propres domaines d'expertise. Plusieurs cadres représentatifs sont sélectionnés pour être présentés ci-dessous.
l framework QUnit
a) Introduction
QUnit est un outil de test unitaire JavaScript développé par l'équipe jQuery. Il est puissant et facile à utiliser. Actuellement, tout le code JQuery est testé à l'aide de QUnit, et JavaScript natif peut également utiliser QUnit.
À l'origine, John Resig a conçu QUnit dans le cadre de jQuery. En 2008, QUnit avait son propre nom, sa propre page d'accueil et sa propre documentation API, et a commencé à permettre à d'autres de l'utiliser pour des tests unitaires. Mais à cette époque, QUnit était encore basé sur jQuery. Ce n'est qu'en 2009 que QUnit a pu fonctionner de manière totalement indépendante.
b) Avantages
Il est très pratique à utiliser, a une belle apparence et des fonctions de test complètes (y compris les tests asynchrones
Il est très simple, facile à utiliser) ; , et est actuellement public Il n'y a que 19 API ;
Il n'est pas nécessaire de s'appuyer sur d'autres logiciels ou frameworks, tant qu'il peut exécuter JS. QUnit lui-même n'a qu'un seul fichier JS et un fichier CSS. Bien sûr, il peut être intégré à d'autres frameworks tels que jQuery si nécessaire ;
Prend non seulement en charge les tests dans le navigateur, mais prend également en charge les tests sur les backends tels que Rhino et node.js.
c) Inconvénients
Il a un mauvais support d'automatisation et est difficile à intégrer avec des outils tels que Ant, Maven ou la construction automatique. Il est principalement utilisé pour les tests dans les navigateurs.
l Jasmine Framework
a) Introduction
Jasmine est un framework de tests unitaires JavaScript bien connu qui est indépendant du comportement Cadre de développement piloté par une syntaxe claire et facile à comprendre.
Le développement piloté par le comportement (BDD) : est une technologie de développement logiciel agile qui encourage la collaboration entre les développeurs, l'assurance qualité et le personnel non technique ou les participants commerciaux aux projets logiciels. BDD a été nommé à l'origine par Dan North en 2003. Il inclut des pratiques de programmation extrêmes telles que l'acceptation et les tests clients, en réponse au développement piloté par les tests. Ces dernières années, il s’est considérablement développé.
L'objectif de BDD est d'acquérir une compréhension claire du comportement attendu des logiciels grâce à des discussions avec les parties prenantes. Il étend l'approche de développement piloté par les tests en écrivant des cas de test en langage naturel lisibles par les non-programmeurs. Les développeurs axés sur le comportement décrivent l'objectif de leur code en utilisant un langage natif mélangé à un langage unifié dans le domaine. Cela permet aux développeurs de se concentrer sur la façon dont le code doit être écrit plutôt que sur les détails techniques, et cela minimise également le besoin de séparer le langage technique des rédacteurs de code de celui des clients professionnels, des utilisateurs, des parties prenantes, des chefs de projet, etc. et aller-retour entre les langues.
Les pratiques BDD comprennent :
l Établir des objectifs à long terme que les différentes parties prenantes souhaitent atteindre
l Utiliser des méthodes d'injection de fonctionnalités pour cartographier les fonctionnalités nécessaires pour atteindre ces objectifs
l Intégrer les parties prenantes impliquées dans le processus de mise en œuvre grâce à une approche de développement logiciel external-in
l Utiliser des exemples pour décrire le comportement de l'application ou de chaque unité de code
l Fournissez des commentaires rapides et effectuez des tests de régression en automatisant ces exemples
l Utilisez « devrait » pour décrire le comportement du logiciel afin de clarifier les responsabilités du code et de répondre aux questions à ce sujet. Remettre en question la fonctionnalité du logiciel
l Utilisez « assurer » pour décrire les responsabilités du logiciel afin de distinguer l'utilité du code lui-même de l'utilité marginale apportée par d'autres codes d'unité (élément).
l Utilisez des simulations comme substituts aux modules de code associés qui n'ont pas encore été écrits
Injection de fonctionnalités BDD : une entreprise peut avoir plusieurs visions différentes qui apporteront des avantages commerciaux, notamment la rentabilité et économiser de l'argent ou protéger l'argent. Une fois qu’une vision est déterminée par l’équipe de développement comme étant la meilleure vision dans les conditions actuelles, elle aura besoin d’une aide supplémentaire pour réussir à réaliser la vision.
Identifiez ensuite les principales parties prenantes de la vision et faites appel à d'autres parties prenantes. Chaque partie prenante définit ce qu'elle doit accomplir pour réaliser la vision. Par exemple, le service juridique peut exiger que certaines réglementations soient respectées. Le responsable marketing souhaitera peut-être participer à une communauté d’utilisateurs qui utiliseront le logiciel. Les experts en sécurité doivent s'assurer que le logiciel n'est pas vulnérable aux attaques par injection SQL.
A travers ces objectifs, l'ensemble approximatif de sujets ou de fonctionnalités requis pour atteindre ces objectifs sera défini. Par exemple, « Autoriser les utilisateurs à trier les valeurs des contributions » ou « Audit des transactions ». A partir de ces thèmes, les fonctionnalités utilisateur peuvent être déterminées ainsi que les premiers détails de l'interface utilisateur.
b) Avantages
Il s'agit d'un framework de test basé sur le développement piloté par le comportement. Sa syntaxe est très proche du langage naturel, simple, claire et facile à comprendre.
Il peut être facilement intégré à Ant, Maven, etc. pour des tests automatisés. Il peut également être facilement intégré à des outils d'intégration continue tels que Jenkins et peut générer des documents XML des résultats des tests.
Il dispose d'une API riche et aide également les utilisateurs à étendre son API, ce que peu d'autres frameworks peuvent faire.
Facile et simple à utiliser, importez simplement deux fichiers js
Prend non seulement en charge les tests dans le navigateur, mais prend également en charge les tests back-end tels que Rhino et node.js.
Il dispose d'un support spécial pour le langage Ruby et peut être facilement intégré aux projets Ruby
c) Inconvénients
L'interface de test dans le navigateur n'est pas aussi belle que celle détaillée de QUnit. .
l JsTestDriver
a) Introduction
JsTestDriver est un outil de test unitaire JavaScript facile à intégrer à la construction continue systèmes Et la possibilité d'exécuter des tests sur plusieurs navigateurs permet un développement de style TDD en toute simplicité. Une fois JsTestDriver configuré dans le projet, tout comme Junit teste les fichiers Java, JsTestDriver peut exécuter directement le fichier js pour effectuer des tests unitaires. Le framework JsTestDriver lui-même est un package jar JAVA qui doit être exécuté localement et écouter un port.
b) Avantages
Vous pouvez tester plusieurs navigateurs en même temps. La méthode d'utilisation consiste à transmettre les chemins de plusieurs navigateurs comme paramètres lors du démarrage du service. Peut s'exécuter dans les navigateurs sur plusieurs machines, y compris les appareils mobiles.
Les tests s'exécutent très rapidement car il n'est pas nécessaire d'ajouter les résultats au DOM pour les restituer, ils peuvent être exécutés dans autant de navigateurs en même temps, et le fichier non modifié est extrait du cache par le navigateur.
Aucun fichier de pièce jointe HTML n'est requis, fournissez simplement un ou plusieurs scripts et scripts de test, et l'exécuteur de test créera un fichier vide lors de son exécution.
Il peut être facilement intégré à Ant, Maven, etc. pour des tests automatisés. Il peut également être facilement intégré à des outils d'intégration continue tels que Jenkins et peut générer des documents XML des résultats des tests.
Il existe des plug-ins Eclipse et IntelliJ, qui peuvent être facilement testés dans ces deux IDE, un peu comme JUnit.
Prend en charge d'autres frameworks de test et peut tester les codes de test écrits par d'autres frameworks de test. Par exemple, il existe des plug-ins correspondants qui peuvent convertir les codes de test QUnit et Jasmine en codes de test JsTestDriver.
c) Inconvénients
ne peut pas être testé dans le navigateur et ne peut être exécuté que via des outils automatisés ou la console. Les résultats générés ne sont pas assez intuitifs.
C'est un peu compliqué à installer et à utiliser, et cela dépend de l'environnement JAVA.
l FireUnit
a) Introduction
FireUnit est un framework de tests unitaires basé sur le Javascript de Firebug. Pour faire simple, FireUnit ajoute un panneau d'onglets à Firebug et fournit quelques API JavaScript simples pour enregistrer et afficher les tests.
b) Avantages
Simple et facile à utiliser
c) Inconvénients
Pas beaucoup de fonctions, le code de test est souvent écrit dans le code source, bien que il peut être visualisé en temps réel L'effet est obtenu, mais le couplage est trop fort et difficile à nettoyer
Fonctionne uniquement sous Firefox
[Recommandations associées : Tutoriel d'apprentissage javascript]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!