Qu'est-ce que le développement piloté par les tests : guide du débutant
Publié: 2018-03-12Les programmeurs et les bogues sont dans une lutte sans fin pour la suprématie depuis des temps inconnus. C'est inévitable - même les meilleurs programmeurs sont la proie des bogues. Aucun code n'est vraiment à l'abri des bogues, c'est pourquoi nous effectuons des tests. Les programmeurs, du moins les plus sains d'esprit, testent leur code en l'exécutant sur des machines de développement pour s'assurer qu'il fait ce qu'il est censé faire. Traditionnellement, les cas de test étaient écrits après l'écriture du code, mais dans le développement piloté par les tests, un cas de test automatisé est écrit avant d'écrire un morceau de code afin que l'exécution et les tests puissent être vérifiés simultanément.
Dans cet article, nous parlerons en profondeur du développement piloté par les tests et pourquoi est-il meilleur que les méthodes traditionnelles !

Table des matières
Qu'est-ce que le développement piloté par les tests ?
Le développement piloté par les tests a été créé dans le cadre de la méthodologie Extreme Programming (XP) et a été appelé le concept « Test-First » . Le développement piloté par les tests vous permet de tester votre code de manière approfondie, et vous permet également de retester votre code rapidement et facilement car il est automatisé. Essentiellement, avant d'écrire un morceau de code, le programmeur crée d'abord un test unitaire. Ensuite, le programmeur crée juste assez de code pour satisfaire le test unitaire. Une fois le test réussi et le code refactorisé, le programmeur peut procéder à d'autres améliorations. Le développement piloté par les tests garantit que le code est soigneusement testé, ce qui conduit à un code modularisé, extensible et flexible.
Chaque fois qu'une nouvelle fonctionnalité doit être ajoutée, elle doit subir ce qu'on appelle le "cycle de vie" de TDD. Parlons davantage de ce cycle de vie.
Comment devenir un développeur Full Stack
Cycle de vie du développement piloté par les tests
Le cycle de vie du développement piloté par les tests couvre tout, de l'écriture du test unitaire initial à la refonte du code.
- Ajouter un test : chaque nouvelle fonctionnalité doit subir un test avant son implémentation. La condition essentielle pour écrire un test est d'avoir une compréhension claire de toutes les exigences. Ceci est accompli à l'aide de cas d'utilisation et d'histoires d'utilisateurs.
- Exécutez tous les tests et vérifiez le test net : Ceci est fait pour assurer le bon fonctionnement de notre test. Fondamentalement, cette phase vise à vérifier que le test n'est pas passé par un code qui ne répond pas aux exigences. Ce faisant, cette étape élimine la possibilité d'avoir un test défectueux à portée de main.
- Écrire du code : maintenant que votre test est en place, la prochaine étape évidente consiste à écrire un code qui efface le test. Ce code n'a pas besoin d'être parfait dans tous les aspects, mais il doit effacer le test. Une fois que nous sommes sûrs que ce code efface le test, il peut être modifié selon les exigences.
- Exécutez les tests : Après avoir écrit le code, il est maintenant temps de voir si le code réussit le test ou non. Si votre code réussit les tests, cela signifie que votre code répond aux exigences - jusqu'à maintenant.
- Refactoriser le code : Ceci est essentiellement fait pour nettoyer le code. La refactorisation n'endommage aucune des fonctionnalités ; c'est juste pour nettoyer le code en supprimant la duplication entre le code de test et le code de production.
- Répéter : Ce cycle est maintenant répété avec un nouveau test pour ajouter plus de fonctionnalités. Chaque fonctionnalité subit le même cycle. Essentiellement, la taille des étapes ne doit pas dépasser 1 à 10 modifications entre chaque test. Si un code ne passe pas le test rapidement, le développeur doit revenir en arrière et ne pas trop déboguer.
Les avantages et les inconvénients du développement piloté par les tests
Le développement piloté par les tests présente des avantages certains par rapport aux méthodes de test traditionnelles, qui étaient principalement manuelles. Cependant, ce n'est pas infaillible. Comme toute autre technologie, le développement piloté par les tests présente également un ensemble d'inconvénients.

Voyons en détail quels sont les avantages de TDD :
- L'écriture de petits tests garantit la modularité de votre code. Pratiquer TDD vous aide à comprendre les principes sous-jacents d'une bonne conception modulaire.
- TDD apporte de la clarté lors de la mise en œuvre de votre code, ce qui permet un filet de sécurité pendant la phase de refactoring.
- Avec TDD, la collaboration est beaucoup plus facile car les utilisateurs peuvent désormais modifier le code en toute confiance, car le test les informera si leurs modifications ne sont pas à la hauteur du test.
- La base de TDD est les tests unitaires. Pour cette raison, le refactoring est beaucoup plus facile et plus rapide. Refactoriser un ancien code est pénible, mais si le code est soutenu par des tests unitaires, cela devient tellement plus facile.
- Cela aide à clarifier toutes les exigences avant de commencer la partie codage. De cette façon, beaucoup d'ambiguïtés qui peuvent survenir plus tard sont évitées.
- Le développement piloté par les tests se concentre sur les tests pendant l'écriture. Cela oblige le programmeur à rendre ses interfaces suffisamment propres pour réussir le test. Il est difficile de comprendre cet avantage tant que vous ne travaillez pas sur un morceau de code qui n'a pas subi de TDD.
- Les erreurs stupides sont détectées presque immédiatement. Cela aide à supprimer ces erreurs qui feraient perdre beaucoup de temps si elles étaient trouvées dans QA.
Voyons maintenant quelles sont les limites du développement piloté par les tests :
- La suite de tests utilisée pour les tests doit être maintenue, sinon les tests pourraient ne pas être entièrement déterministes.
- Les tests sont difficiles à écrire, surtout au-delà de la phase de test unitaire.
- TDD ralentit le rythme de développement, du moins au début.
- Comme pour toute forme de développement, il y a une grande différence entre le faire simplement et le faire bien. Rédiger de bons tests unitaires nécessite un niveau de spécialité.
- Il est difficile d'appliquer cette approche à votre code hérité (existant).
- TDD vous oblige à effectuer un entretien ménager de routine. Il est nécessaire d'affiner les tests pour qu'ils s'exécutent plus rapidement.
- Il est facile de se laisser distraire par les fonctionnalités sophistiquées de n'importe quel cadre de test unitaire, mais il convient de garder à l'esprit que les tests simples ont tendance à donner les meilleurs résultats.
- À moins que tous les membres de l'équipe ne maintiennent correctement leurs tests, l'ensemble du système peut rapidement se dégrader.
En conclusion…
Le développement piloté par les tests est la voie à suivre pour l'avenir du développement d'applications. Il existe un certain nombre de frameworks de test automatisés tels que PHPUnit, Serenity, Robot, RedWoodHQ et bien d'autres. Choisissez celui qui correspond à vos besoins et commencez à créer de meilleures applications maintenables en un rien de temps !
Inscrivez-vous à des cours de génie logiciel dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
