Vous avez déjà passé des examens dans votre vie, que ce soit à l'école, pour votre santé, ou encore pour passer le permis. Bref, vous savez que les tests servent à confirmer ou non que quelque chose fonctionne comme il faut.
Les tests en programmation ne sont pas différents. Tout simplement, ils testent si votre code fonctionne ! ✅
Tester votre code
Les tests existent dans presque tous les langages de programmation, mais chaque développeur(se) peut tester son code différemment.
Devez-vous vous sentir concernés ? Oui, absolument !
Beaucoup de développeur(se)s veulent tout simplement créer des sites qui fonctionnent. Pour s'en assurer, ils se contentent de cliquer un peu sur toutes les pages qu'ils viennent de créer afin de vérifier que toutes les interactions fonctionnent comme prévu. Si tout a l'air d'aller, ils se disent que c'est bon.
Pourquoi est ce que cela ne suffit pas de faire ça pour tester qu'un site fonctionne ?
Et bien parce que si vous faites tout à la main et au petit bonheur la chance au début, cela va devenir très vite compliqué quand vous ferez évoluer le site (en rajoutant des fonctionnalités par exemple). Imaginez que vous codiez une nouvelle fonctionnalité qui modifie légèrement une fonctionnalité cruciale de votre site, comme la possibilité de télécharger une photo de profil utilisateur. 👥
Il ne suffit pas de pouvoir télécharger une photo tout simplement.
Comment confirmez-vous qu'une image d'une certaine taille ne fonctionnera pas ? Comment pouvez-vous être sûrs que la photo est associée au bon utilisateur ? Comment pouvez-vous savoir que, si vous changez les formats d'image acceptés, ce changement ne cassera pas toutes les photos de profil existantes ?
Vous pouvez perdre votre temps à tester ces choses manuellement en cliquant à droite à gauche partout sur votre site. Ceci dit, ce n'est pas du tout une bonne stratégie à grande échelle, et vous risquez de rater des bugs importants !
Protégez votre code
Protégez votre code des changements qui peuvent le casser involontairement ! Par exemple, votre collègue peut introduire un bug qui touche votre code sans le savoir. Même vous, vous n'êtes pas à l'abris de casser votre propre code par inadvertence ou parce que vous avez modifié ou ajouté quelque chose.
Si vous écrivez des tests, vous pourrez exécuter les tests après avoir modifié votre code ; ce qui vous permet de voir instantanément si le code ne marche plus comme prévu. Si le test échoue, ou révèle une erreur, vous saurez que votre code ne fonctionne pas - ou alors que vous n'avez pas écrit le bon test. Dans tous les cas, vous saurez que vous avez besoin de réparer quelque chose.
Qu'est-ce que vous pouvez tester ?
Toute situation est testable, même des situations simples. Prenons pour exemple une image simple : le fait d'ajouter des chiots à un panier (pourquoi pas ?).
Ce que vous voulez confirmer, c'est que "l'action d'ajouter un chiot au panier" a pour son résultat "un chiot supplémentaire dans le panier". Ça peut vous sembler trop simple, mais c'est un cas testable quand même. Vous écrirez votre spécification comme ci-dessous :
Given there are 2 puppies in a basket
When I add another puppy to the basket
Then the number of puppies in the basket should be 3
Si vous êtes développeur(se) frontend, vous pouvez écrire un test en utilisant le framework de test Jasmine, qui ressemble au code suivant :
describe("Puppies in a basket", function() {
describe("when adding 1 puppy to a basket with 2 puppies", function() {
it("should change the puppy quantity to 3", function() {
expect(puppy.length).toEqual(3);
});
});
});
Vous pouvez lancer ce test, et voir le résultat de l'exécution afin de vérifier que cela fonctionne ou non.
Imaginez un programme de test fait de telle façon qu'il pourrait détecter les mauvaises réponses d'un élève, en détectant sur la feuille d'examen l'emplacement des bulles coloriées au crayon à papier.
Les programmes que vous rédigez pour tester votre code peuvent fonctionner de la même façon que la machine à corriger les feuilles d'examen.
Maintenant que vous comprenez ce qu'est un test de code en théorie, regardons plusieurs méthodologies de tests !