Pages

lundi 5 janvier 2015

Pourquoi écrire des tests dans une application Javascript

J'ai décidé en ce début d'année de faire toute une série d'articles sur les tests dans les applications Javascript. Je vais essayer d'expliquer pourquoi il est important de faire des tests dans une application Javascript et je vais présenter plusieurs outils qui peuvent nous faciliter la tâche.



Pourquoi faire des tests ?

J'entends les sceptiques 
« Mais pourquoi faire des tests ? C'est une perte de temps. Certains disent que ça ne sert à rien sur une application serveur... Alors en Javascript...». 

Ce sont des idées fausses, les tests ne sont jamais une perte de temps. Quand on travaille en entreprise et que l'on doit garantir l'exécution d'une applications les tests sont primordiaux et ce pour plusieurs raisons


Prouver que le code est correct

Le but d'un test est avant tout de vérifier que la portion de code testée se comporte comme vous le voulez. Automatiser ce test vous évite de devoir re-tester les même cas à chaque fois manuellement.

Empêcher les regressions

Quand on parle de régression c'est lorsqu'un bug corrigé dans le passé apparaît à nouveau. Si des tests automatisés sont mis en place pour vérifier un comportement, les régressions peuvent être anticipées.

Si votre application est plus ou moins couverte par les tests vous serez plus confiant lorsque vous ferez des modifications

Refactoring plus serein

Cette confiance dans les tests vous permet d'être plus serein quand vous faites du refactoring. Le refactoring est essentiel pour qu'une application reste maintenable et évolutive dans le temps. Quand je parle refactoring, je pense à l'optimisation du code, à la suppression du code qui n'est plus utilisé, à la mise à jour de librairies...

Sans test unitaire, il est très dangereux de se lancer dans du refactoring car les impacts ne sont pas maîtrisés.

Feedback plus rapide

Vous pouvez faire des tests manuels, mais une portion de code Javascript est souvent liée à une page HTML ou à d'autres fonctions Javascript. Il est parfois difficile de tester tous les cas de figures manuellement. Automatisé le test permet de le faire plus aisément et d'avoir un feedback immédiatement.

Documentation

Une suite de tests bien écrite raconte une histoire. Cette histoire indique comment se comporte une portion de code et c'est la meilleure documentation que l'on peut avoir. 

Les spécifications sont souvent peu mises à jour au fur et à mesure des évolutions, même lorsque vous mettez les moyens. Quand on revient dessus nous n'avons pas la certitude de savoir si elles correspondent à l’implémentation réelle. 

Un test unitaire qui fonctionne ne laisse pas de place au doute.

Meilleur design

Vouloir faire des tests unitaires demande d'écrire du code testable. Pour cela certains principes d'architectures permettront de faciliter la mise en place des tests : découpage en couche, injection de dépendances…. 

Tous ces principes permettent au final de tester une portion de code unitairement en l'isolant du reste du système. Ceci est important car il faut que les tests soient le plus rapide possible. Si vous devez à chaque fois charger l'application complète pour lancer un test, vous risquez d'avoir des tests très lents. S'ils sont lents, vous les exécuterez moins souvent, les erreurs ne seront pas détectées tout de suite, vous perdrez confiance et vous abandonnerez les tests au détriment des différents points que je viens de citer plus haut.

Des tests en Javascript ?

Oui le besoin de tests en Javascript est aussi voir plus important que dans d'autres langages comme Java, .Net, C++… Javascript est un langage dynamique non typé. En Javascript le compilateur n'est pas là pour détecter des erreurs comme des fautes d'orthographe dans les noms de variables, les appels des méthodes inexistantes, la lecture d'une propriété d'un objet non instancié… à chaque fois il faut exécuter le code pour détecter les problèmes.


La prochaine fois nous verrons comment écrire un test unitaire sans aucun framework...

Aucun commentaire:

Enregistrer un commentaire

Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.