Quand ils mettent au point une application, les développeurs se doivent d’écrire des tests afin de s’assurer du bon fonctionnement de leur code. Ces tests seront utilisés tout au long du développement de façon automatique. Ils évitent également l’apparition de nouveaux bugs.
Voici un aperçu de ces tests appliqués au développement de Mobapi.
Pourquoi tester ?
Les tests se sont beaucoup développés ces dernières années au point de devenir indispensables lors du développement d’un logiciel. Ils présentent de nombreux avantages que nous détaillons ci-dessous.
Le premier avantage est de garantir que le code fonctionne, c’est-à-dire qu’il produise effectivement ce que l’on souhaite produire. C’est le premier but d’un test !
Effectuer des tests apporte aussi une dose de rigueur au sein du projet : un code testé est un code conforme à la règle attendue.
De plus, lorsque les tests sont bien écrits, ils servent de documentation. Cela permet une meilleure compréhension du code et de ses fonctionnalités par les autres intervenants.
Les tests sont souvent conçus dans une logique d’amélioration continue : à chaque fois qu’un développeur modifie le code de l’application, les tests sont lancés et exécutés.
Cela permet à chaque développeur d’être certain que la modification qu’il a apportée n’a pas affecté l’ancienne version du code et n’a pas créé de nouveaux bugs. On évite ainsi un retour en arrière.
Pour résumer, tester le code permet de développer une application plus rapidement et avec plus d’assurance.
Comment ça marche ?
Lorsque l’on parle de tests, on trouve en réalité plusieurs niveaux :
- Les tests unitaires permettent de tester le code au plus bas niveau, en isolant chaque partie du code. Ils sont indispensables et représentent 80% des tests au niveau global.
- Les tests d’intégration servent à vérifier le bon fonctionnement entre plusieurs parties de l’application. Ils représentent environ 10% des tests.
- Les tests fonctionnels sont utiles au développeur pour confirmer le bon fonctionnement des interactions d’un utilisateur avec l’application, par exemple l’action générée par le clic sur un bouton ou un lien.
Méthodologies
Il existe 2 méthodologies pour organiser le développement de son application autour des tests :
- le Test Driven Development (TDD)
- le Behaviour Driven Development (BDD).
Ces 2 méthodes sont très utilisées car elles font gagner du temps sur la phase de codage de l’application. Les développeurs évitent ainsi d’écrire des fonctions non indispensables.
Le principe du TDD est d’écrire le test avant d’écrire le code. Oui, on anticipe sur quelque chose qui n’existe pas encore.
Le développeur écrit le test, lequel va évidemment produire une erreur. Ensuite, il écrit le code de façon à passer le test, ni plus ni moins. Tout le code est élaboré en pensant avant tout aux tests.
La méthode BDD découle du TDD. La différence est qu’elle crée un langage compréhensible par tous les acteurs du projet : développeurs, chefs de projets, commerciaux, etc.
Cela passe par l’utilisation de frameworks (en français, structure logicielle) plus ou moins orientés vers l’une ou l’autre méthode. Techniquement, cela se voit grâce à une syntaxe plus ou moins proche du langage « humain ».
Typiquement, un test écrit sous l’influence du TDD donnerait quelque chose comme ça :
[pastacode lang=”javascript” message=”” highlight=”” provider=”manual” manual=”test(%222%20add%202%20equals%204%22%2C%20function()%20%7B%0A%0A%C2%A0%20%C2%A0%20%C2%A0%20%C2%A0%20ok(2%20%2B%202%20%3D%3D%3D%204%2C%20%22Passed!%22)%3B%C2%A0%20%C2%A0%0A%0A%7D)%3B”/]
Lorsque l’on utilise le Behaviour Driven Developpment, on lit les tests comme on lirait un texte rédigé par un humain, beaucoup plus lisible par rapport au TDD. Par exemple :
[pastacode lang=”javascript” message=”” highlight=”” provider=”manual” manual=”describe(%22An%20addition%22%2C%20function()%20%7B%0A%0A%C2%A0%20it(%22adds%202%20and%202%22%2C%20function()%20%7B%0A%0A%C2%A0%20%C2%A0%20expect(2%2B2).toEqual(4)%3B%0A%0A%C2%A0%20%7D)%3B%0A%0A%7D)%3B”/]
Conclusion
Chez Mobapi, les développeurs ont rédigé des tests à tous les niveaux de l’application. Voici par exemple une capture d’écran de ce qu’il se passe lorsqu’un développeur modifie le code source de l’application et met à jour ce code :
Tous les tests sont passés avec succès et le développeur n’a pas modifié le fonctionnement de l’ancien code, il peut passer à l’étape suivante.
À travers cet article, j’espère que vous comprenez maintenant pourquoi nous avons décidé d’utiliser ces formidables outils que sont les tests ;)