En 1999, Kent Beck, développeur de logiciels américain, présente une nouvelle méthodologie de programmation nommée eXtreme Programming (XP). Cette méthode Agile améliore l’écriture et la robustesse du code notamment avec des principes connus des programmateurs : l'intégration continue et la programmation en binôme.
Kent Beck a simplement inversé le processus de développement traditionnel. Ainsi, au lieu d’écrire le code puis de le tester, la méthode préconise d'écrire les tests en premier lieu. Découvrez le TDD et ses avantages dans cet article.
Qu’est-ce que le Test-driven development ?
Le Test-driven development ou TDD est une méthode de développement logiciel qui vise à réduire les anomalies d’une application dans laquelle une série de tests automatisés va venir dirigée l’écriture du code.
Cette technique semble, au premier abord, à contre-courant des processus de développement traditionnel car elle impose l’écriture des tests unitaires avant la première ligne de code. Or, cette dernière apporte de nombreux avantages comme le fait de limiter les anomalies identifiées lors du développement d’une application.
Le cycle de TDD se décompose en 5 étapes :
Écrire un test ;
Vérifier qu’il échoue ;
Écrire juste le code suffisant pour passer le test ;
Vérifier que le test passe ;
Refactoriser le code.
Cette approche, dite “Test-First”, a évolué au fil des années vers plus de granularité ce qui a permis l’émergence de la méthode appelée Red, Green, Refactor (RGR). Ce micro-cycle de test permet aux développeurs de créer une série de tests, écrire un code d'implémentation et faire évoluer le code lors du processus de développement. Ce cycle du TDD a été donc codifié en 3 lois :
Rouge
Vert
Refactor
Comment fonctionne le test-driven development (TDD) ?
Le TDD est considéré comme un modèle de développement incrémental dans le développement de logiciels. En effet, le TDD est basé sur une procédure cyclique autrement dit le processus de test demande au concepteur de refaire et tester à nouveau les composants du code jusqu’à ce que le test réussisse. Un nouveau code est écrit après chaque test réussi, cela permet d’implémenter aisément de nouvelles fonctions au code.
Le concept de test-driven development permet d'obtenir un gain de temps dans la production du code d’une solution puisque les scénarios de test, imaginés au préalable, passent très peu de temps dans le cycle de test. Afin de faciliter le processus de test, le développeur peut utiliser une approche TDD.
Nous avons décidé de vous présenter une approche TDD souvent utilisée chez les développeurs de logiciels. Il s’agit d’un micro-cycle Rouge - Vert - Refractor (RGR). Ce cycle permet de guider le développeur dans l’écriture de ses tests. Mais il existe de nombreux cycles : le nano-cycle, le milli-cycle ou encore le cycle primaire. Tous ces cycles s’adaptent en fonction des objectifs des projets de développement.
Rouge : vous devez écrire un test qui échoue avant de pouvoir écrire le code de production correspondant autrement dit, dans cette phase de test, vous écrivez un test simple dont les composants n’ont pas été encore implémentés.
Vert : vous devez écrire le code le plus simple possible. Le test réussit, il passe en vert.
Refactoring : dans cette phase, vous devez restructurer le code afin de le rendre lisible et compréhensible pour les autres utilisateurs en supprimant, par exemple, la duplication de code.
Ce cycle de TDD va permettre aux développeurs de mettre en place une stratégie de conception pour guider le processus de développement d’un logiciel.
Les avantages du Test-driven development
Le TDD permet principalement de réduire les anomalies identifiées lors du processus de développement. La fréquence des tests obligent les programmateurs à être rigoureux et faire preuve de vigilance lors de l'écriture du code. Si un test échoue, alors qu’il passait auparavant, il facilite la détection de régression. Le refactoring en continu permet d’améliorer la qualité du code.
Le TDD permet également :
d’améliorer la compréhension de l’architecture du système et le code de production;
de limiter les erreurs et bugs en les identifiant rapidement;
de réduire les coûts de maintenance grâce au gain de temps que représente le TDD;
Les inconvénients du Test-driven development
La mise en oeuvre du TDD est bénéfique pour le développement de logiciel mais elle comporte également des inconvénients :
Le TDD peut être complexe à mettre en place pour des cas de test complexes;
Le TDD doit éventuellement être complété par d’autres procédures de test;
Pour résumé
La méthode TDD pilote le processus de développement d’un logiciel grâce aux tests. Les scénarios de test sont réalisés en amont du projet de conception contrairement au processus traditionnel.
Malgré un surcoût en développement, le Test-driven development est donc un processus de développement à adopter car il comporte de nombreux avantages et garantit la satisfaction de l’utilisateur final.
Vous souhaitez développer un logiciel en employant la méthode TDD ? Prenez contact avec l’équipe Développement de Fidesio qui saura répondre à vos questions.
N’hésitez pas à nous contacter.