Posts Tagged ‘ Debugger

PHPUnit et le développement piloté par les tests

J’ai récemment trouvé deux articles en épurant mes différents abonnements RSS de cette fin d’année qui présentent l’utilisation de PHPUnit.

Cet outil permet de mettre en place des tests unitaires pour PHP de la même façon que JUnit pour Java. Ces tests, une fois développés permettent de garantir le fonctionnement de tout le code après chaque modification. En effet, ils sont écrits suite aux spécifications fonctionnelles et technique du produit et décrivent précisément tous les comportements attendus des objets PHP. Ils sont ensuite exécutés à chaque commit sur le système de versioning ou part un système d’intégration continu (Cruise Control, Trac Bitten, Hudson, …)

Ce genre de technique ne peut être mis en place que lorsque le développement est réalisé dans un cadre strict de génie logiciel (Design Patterns, Single Responsability, Interface Segregation, …). Julien Pauli, contributeur sur le site Développez.com a récemment écrit deux articles sur le sujet.

Le premier présente le concept de tests unitaires et son implémentation à travers PHPUnit, il est disponible à l’adresse http://julien-pauli.developpez.com/tutoriels/php/phpunit-tdd/. Il est très complet et m’a permis de bien appréhender l’utilité de ces tests pour la fiabilisation des applications web.

Le second est séparé en deux parties. Une introduction bien détaillée, expliquant les principes élémentaires du développement objet et du principe SOLID (ca ne fait jamais de mal de se refaire une petite lecture dessus). La deuxième partie est un exemple concret de mise en place de scripts de tests PHPUnit sur la fonctionnalité panier d’un site marchand. Cet article est disponible à l’adresse : http://julien-pauli.developpez.com/tutoriels/php/phpunit-avance/

Si comme moi vous êtes en quête d’amélioration de vos développements (utilisation du debugger xdebug, mise en place de tests unitaires, …), je vous conseille vivement la lecture de ces deux articles!

Utiliser un debugger pour PHP: XDebug

Dans d’autres langages comme ActionScript ou Java, les debuggers sont très utilisés car les affichages successif (echo, var_dump, die, …) pour tracer les valeurs des variables ne peuvent pas forcément être mis en place aussi facilement qu’en PHP.

L’avantage d’un tel outil est aussi de pouvoir avoir un aperçu des objets actuellement actifs en mémoire ou des valeurs de chaque variable à un instant donné dans l’application. Pour ma part, l’utilisation d’un debugger est en train de devenir une obligation pour garantir une bonne qualité de code et pour régler les problèmes rapidement et surement.
L’apprentissage et l’utilisation d’autres langages comme ActionScript démontre aussi l’intérêt d’utiliser les points d’arrêts pour analyser le fonctionnement.

Après plusieurs recherches sur le web et la lecture de retours d’expériences j’ai trouvé, installé et testé Xdebug. Ce debugger PHP gratuit et facile de mise en oeuvre s’interface directement avec Netbeans (mon IDE PHP favori sur Mac…).

Cet outil peut s’installer de différentes façons (vous trouverez la liste ici), la plus simple étant à travers un paquet PECL/PEAR:

pecl install xdebug
pear install xdebug

Il suffit ensuite de modifier le fichier php.ini utilisé sur le système en rajoutant les lignes suivantes:

[xdebug]
zend_extension=[CHEMIN ABSOLU VERS LE FICHIER xdebug.so]
xdebug.file_link_format="txmt://open?url=file://%f&line=%1"
xdebug.remote_enable = on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.rmote_port=9000

xdebug.remote_autostart = 1

Pour que les modifications soient prises en compte au niveau du serveur Apache, il faut redémarrer le serveur web. Démarrer ensuite Netbeans, vous pouvez directement rajouter des points d’arrêts dans vos scripts et analyser le comportement de votre code en lançant le mode d’exécution debug.