Blog

Cypress, tests unitaires et tests fonctionnels
07/10/2022

Cypress, quelles sont les différences entre les tests unitaires et les Tests fonctionnels ?

Les tests sont devenus un aspect important du développement web pour deux raisons, vérifier qu'une application fonctionne correctement et assurer la meilleure expérience utilisateur possible. Il existe différents types de tests, mais aujourd'hui, nous nous concentrerons principalement sur les tests de bout en bout (end to end) et sur la manière de les mettre en œuvre à l'aide de Cypress.

Dans l'article précédent nous avons donné une abréviation sur Cypress (Qu'est ce que Cypress ?, comment installer Cypress ?.......etc), Pour plus d'information sur le processus d'installation, nous avons un article pour vous qui détail toute l'installation et la configuration.

Nous avons l’habitude de séparer les tests en deux catégories (même s’il en existe davantage) : les tests unitaires et les tests fonctionnels.

Qu’est-ce que les tests unitaires ?

Le test unitaire est un processus de vérification d'une unique unité de logiciel, elle-même définie comme étant la plus petite partie non divisible d'un code source. Par exemple, dans le cadre d'un développement en langage C, il est communément admis que l'unité de logiciel est une fonction de code.

Quel est l’objectif des tests unitaires ?

  • Tester les unités de code de manière isolée.
  • Vérifier si le code est correct.
  • Tester chaque fonction ainsi que la procédure.
  • Détecter les bogues plus tôt et les corriger dans le cycle de développement tout en réduisant les coûts.
  • Aider les développeurs à comprendre le code de base et leur permettent d’apporter rapidement des modifications.
  • Aider également à la réutilisation du code.

Quand utiliser les tests unitaires ?

Les tests unitaires doivent être effectués avant la mise en production du logiciel, sinon ils font perdre du temps qui pourrait être consacré à l’écriture de nouvelles fonctionnalités, à la correction de bogues ou à l’amélioration du code. Les tests unitaires sont également particulièrement utiles lors du développement de bibliothèques de code réutilisables, car celles-ci peuvent être réutilisées à l’infini dans différents projets sans provoquer d’interactions indésirables avec d’autres parties du système.

Qu’est-ce que les tests fonctionnels ?

Les tests fonctionnels sont définis comme une méthode permettant de tester la fonctionnalité d'une application logicielle. Le plus souvent, les tests fonctionnels sont utilisés pour vérifier des scénarios ou des modèles d'utilisation de bout en bout.

Quel est l’objectif des tests fonctionnels ?

  • Permettre de détecter les défauts qui pourraient être oubliés par les programmeurs lors du développement du logiciel.
  • Permettre de gagner en confiance et fournir des informations sur le niveau de qualité.
  • Garantir un résultat qui répond aux besoins et aux attentes de l'utilisateur.

Quand utiliser les tests fonctionnels ?

Les tests fonctionnels sont généralement lancés une fois que tout le code a été écrit et testé de manière unitaire, car les exigences fonctionnelles sont souvent complexes et plus difficiles à évaluer. Les tests fonctionnels sont également utilisés après les tests unitaires lorsqu’un développeur a des difficultés à faire fonctionner l’implémentation d’une méthode comme prévu.

Quelle est la différence entre un test unitaire et un test fonctionnel ?

Le but ultime des tests unitaires est de décomposer chaque partie des codes sources en unités et de voir si chaque partie fonctionne correctement. Cela signifie que si un ensemble d'entrées n'est pas fonctionnel, la sortie de retour est attendue.

Les tests unitaires

  • Ils ont pour but de vérifier que la relation d’entrée / sortie donnée par la spécification est bien réalisée
  • Ils se limitent à tester des règles métiers au niveau d’une classe / fonction tout en étant indépendants du framework (ceux-ci étant déjà testés)
  • Toutes les classes n’ont pas forcément d’utilité à être testées, celles contenant de la logique métier sont à privilégier

Les tests fonctionnels

Il existe deux types de tests fonctionnels : les tests fonctionnels de progression et les tests fonctionnels de non régression.

  • Ils ont pour but de s’assurer que le comportement fonctionnel obtenu est bien conforme avec celui attendu.
  • Ils permettent de vérifier l’état général de l’application

Conclusion sur la création de tests fonctionnels avec Cypress

Difficile de faire la liste exhaustive des fonctionnalités offertes par Cypress dans un seul article tellement elles sont nombreuses. Voici néanmoins un résumé des avantages majeur de Cypress, testés par notre équipe :

  1. Est un outil open-source avec de nouvelles fonctionnalités ajoutées régulièrement
  2. S’installe facilement avec NPM
  3. Détecte les navigateurs localement
  4. Syntaxe des scénarios compréhensible
  5. Prend en compte la visibilité des éléments
  6. Possibilité de prendre des screenshots mais aussi des vidéos
  7. Se configure simplement en JSON
  8. Fournit un test runner permettant de développer des tests fonctionnels assez visuels
  9. Propose un dashboard en ligne (en option)
  10. Beaucoup d’exemples de scénarios de test disponibles à l’installation de Cypress

CONCLUSION

Voilà c’est tout pour aujourd’hui ! J’espère que cet article vous a donné envie d’utiliser Cypress dans vos développements ! Il y a beaucoup de possibilités d’utilisation avec Cypress, comme l’intégration continue avec la commande cypress run qui va jouer les tests et retourner les cas de réussite ou d’échecs.