RSS
 

Cakefest #3 – Second jour de conférences

12 août

«»

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 !

Pensez à utiliser mon flux RSS pour vous tenir au courant des futurs articles ! Vous pouvez aussi me retrouver sur Twitter pour une actualité plus fréquente.

«»

 
3 Comments

Posted in En vrac

 

Tags: , , ,

  • http://www.gravisure.com/ Vanitom

    Bonsoir,

    Je viens de tester « siege ». C’est bien comme soft pour savoir où on en est.
    Car avant j’utilisais l’affichage réseau de FireBug et ce n’était pas très précis.
    Mais là c’est top, on peut tout paramètrer pour avoir une comparaison exact entre différente version.

    Par contre j’ai une question. Est’il possible de faire ces tests sur une page nécessitant une authentification ?

    Pour finir juste une petite remarque. As tu testé « siege » sur http://www.google.com/ . C’est impressionnant mais c’est Google.

    En tout cas merci pour ces articles intéressant.

  • http://www.pierre-martin.fr Pierre MARTIN

    Bonjour Vanitom,

    J’ai découvert siege lors de ce Cakefest, et ne l’ai utilisé que pour faire quelques tests et voir ce que celà donnait (d’ailleurs c’est vrai qu’on se rend bien compte des performances des grands sites omparés à d’autres plus modestes).

    Du coup je ne peux pas trop t’éclairer sur l’authentification … si ce n’est que leur site indique « Siege supports basic authentication, cookies, HTTP and HTTPS protocols » …

    Bonne continuation en tout cas pour tes tests de performance !
    Pierre

  • Pingback: CakePHP n’est pas mort !