Josselin Dionisi - Développeur indépendant

Comprendre l'importance des tests unitaires et des tests fonctionnels

ionicons-v5-k Josselin Dionisi 27 sept. 2022
1800 lectures Niveau : intermédiaire

Aujourd’hui j’ai choisi un sujet qui est parfois délaissé par les développeurs et pourtant bien pratique : les tests. 

Non, je ne parle pas de tester votre code avant de l’envoyer en prod’ en appuyant sur F5 pour voir si tout fonctionne. 😛

Je parle des tests automatisés que vous écrivez en suivant la logique d’un algorithme pour créer des cas pratiques qui vont pouvoir être lancés à différents moments.

Imaginez que vous ayez un site e-commerce et que vous souhaitiez tester qu’un produit s’ajoute bien au panier (ce qui est quand même primordial). Et bien vous pouvez tout à fait écrire un test qui va reproduire toutes les actions que ferait un utilisateur réel pour vérifier que tout se passe bien. 

Les tests unitaires

Les tests unitaires agissent sur des briques élémentaires de votre code, à la plus petite échelle possible. Ils sont surtout là pour vérifier que votre code est “propre” et que ses bases ne contiennent pas de problèmes. 

A titre d’exemple, si vous envoyez une requête d’authentification à votre API, elle doit vous retourner un token. C’est un test qui s’écrit rapidement et qui prendra quelques millisecondes à s’exécuter. Mais il est sans doute très important pour le fonctionnement global de votre application. 

De ce fait si à chaque mise à jour de votre appli, vous prenez quelques secondes pour lancer ce test, vous serez sûrs que cette partie fonctionne sans aller la tester manuellement. 

Alors certes il vous faudra un peu de temps pour écrire vos tests mais une seule fois, ensuite ce sera automatisé et donc un gain de temps 😀

Un peu de doc si vous voulez creuser le sujet :

Faire des tests en PHP : 

Documentation PHP Unit

Faire des tests en React :

Documentation tests unitaires avec React

Les tests fonctionnels

Ici, à l’inverse, nous allons tester des fonctionnalités de votre appli et non plus du code. Au lieu de tester l’authentification à l’API comme lors du test unitaire, le test fonctionnel va reproduire le comportement d’un utilisateur final. On parle de test end-to-end.

Votre fonction de test ira donc littéralement sur la page de login, remplira les champs du formulaire et simulera un appui sur le bouton de connexion. 

Vous pouvez alors aller encore plus loin et vérifier le texte qui s’affiche sur la page après votre action. Cela vous permettra de voir si vous avez un message d’erreur ou au contraire de succès suite au login.

Ecrire un test fonctionnel sur le framework Symfony : 

Les tests fonctionnels sous Symfony

L'exécution et l'automatisation

Maintenant que vos tests sont écrits, vous pourrez les lancer après chaque développement que vous aurez fait sur votre application. En quelques instants vous serez alors sûr que vous n’avez pas brisé de fonctionnement important avec vos modifications. 

Si vous vous souvenez de [mon article sur la CI/CD](https://developpeur-freelance.io/blog/ci-cd/), vous savez aussi que vos tests peuvent s’exécuter automatiquement à chaque mise à jour de votre dépôt Git. 😉

Voilà vous avez une vue d’ensemble de ce à quoi servent les tests et en quoi ils sont importants plus votre projet va prendre