Développement dirigé par les tests (et API) de comportement CakePHP – Alexander Morland
Cette conférence tenue par Alexander Morland (aka alkemann) était vraiment très intéressante car elle a montré en quoi un code CakePHP rendu générique (ici un comportement) pouvait être développé et utilisé sereinement par une équipe de développeurs grâce aux tests.
Alexander a commencé sa présentation par expliquer les intérêts des tests unitaires :
- Permet de documenter l’utilisation de méthodes (les tests du coeur de CakePHP sont une mine d’information non négligeable)
- Rend l‘intégration simple car il suffit de lancer l’intégralité des tests de l’application pour s’assurer que tout fonctionne
- Permet une approche « diviser pour reigner » du développement : chaque petite partie est testée individuellement, et cela forme un tout fonctionnel lorsque ces parties sont assemblées
- Facilite le refactoring et la modification du code
D’autre part, il a donné quelques astuces pour concevoir une API propre et correctement interfacée avec le coeur de CakePHP : utiliser les callbacks mis à disposition par Cake, faire attention à l’ordre des paramètres lors des surcharges de méthodes (notamment lors de l’ajout de nouveaux paramètres), faire dans la simplicité !
Une fois ces petits rappels et avantages présentés, Alexander a introduit les raisons qui ont poussé son entreprise à mettre en place ces pratiques de développement. La principale raison est la réutilisabilité du code ! En effet, le but ultime d’une entreprise est de coder une fois pour vendre plusieurs fois … aussi, d’un projet sur l’autre il est important de pouvoir ré-utiliser des briques génériques. Il faut donc avoir une API suffisamment bien pensée pour pouvoir être étendue et utilisée de manière générique, et suffisamment bien testée pour être sûr lorsque l’on reprend un bout de code que celui-ci fonctionne comme prévu.
D’autre part, le travail en équipe et la collaboration entre développeurs est aussi une raison importante de ce choix. En effet, l’intérêt du développement dirigé par les tests est que le partage de code entre développeurs se fait sereinement et que les tests d’une API peuvent être réalisés par un développeur différent de celui qui implémente l’API (en se basant sur ce qui a été spécifié initialement). Enfin, le développement de code générique, évolutif et testé permet également un développement cyclique visant à rajouter des fonctionnalités au fur et à mesure des besoins afin de compléter la base de code existante.
La suite de la conférence a permis d’illustrer les propos par un exemple de création d’API et de test de celle-ci (je vous invite à regarder le code disponible sur cakephp.org).
Au final, Alexander a conclu sa présentation par une note très positive sur les retours concrets au sein de son entreprise. En effet, la réalisation de tests unitaires au sein de son équipe a donné lieu à un jeu entre développeurs où les testeurs essayent de créer des tests les plus complets possibles pour obtenir un maximum de tests « rouges » sur le code développé par un collègue. Ainsi la sécurité de fonctionnement est accrue et la rédaction des tests (souvent considérée comme rébarbative) s’est parfaitement intégrée au processus de développement !
Pingback: CakePHP n’est pas mort !