décembre
2007
Le langage PHP est un langage de programmation flexible, permissif et facile à appréhender. Les principes et contraintes de conception généralement imposées dans les langages à vocation industrielle (C/C++, Java, etc.) ne s’appliquent pas nécessairement avec PHP, on peut les appliquer si on le désire, mais souvent ils sont ignorés pour plusieurs raisons.
Le programmeur est seul maître à bord, il choisit la précision avec laquelle il souhaite intégrer un paradigme, que ce soit impératif, fonctionnel ou orienté objet, tout comme il décide de structurer ou non son développement par rapport à des processus éprouvés. Cette grande liberté est à l’origine du succès du langage, mais c’est également son plus grand défaut.
C’est un des points que je tente de démontrer en formation, face à un public pas toujours averti de la méthodologie de conception d’un logiciel (et un applicatif web est un logiciel).
Beaucoup de développeurs PHP qui n’ont pas de formation spécifique en programmation ou qui sont peu expérimentés ne perçoivent pas l’importance d’un processus de développement, et de test en particulier.
L’absence d’une forme structurée de tests engendre notamment les problématiques suivantes :
- Le code source n’est pas testé en profondeur : cela a pour conséquence des aléas de « post-publication », plus ou moins critiques. Le plus souvent il s’agit d’instabilités dans l’application ou des problèmes de sécurité classiques.
- Le code source n’est pas robuste : toute modification du code source (refactorisation, ajout de fonctionnalités) est susceptible d’engendrer des régressions.
- Le code source n’est pas réutilisable, pas transmissible : si un autre développeur doit vous assister ou reprendre votre travail, il sera confronté d’une part à votre code source et d’autre part à l’absence d’un protocole de test uniformisé.
- Le code source n’est pas évolutif : il va sans dire, plus votre application aura une structure complexe et plus vous peinerez à déceler des erreurs et problèmes de conception de manière empirique. Vous serez contraint à moyen terme, de reprogrammer entièrement votre application.
Tout ceci aura non seulement un impact sur la fiabilité du programme (et vos prestations de service), mais également sur le temps alloué pour le développement et la maintenance du projet, avec les tracas que cela implique pour vous et vos utilisateurs finaux.
Bien que les tests unitaires soient primordiaux, ils ne résoudront pas les problèmes d’analyse et conception (au mieux, ils les mettront en évidence), c’est pourquoi vous devez garder en tête que la qualité finale de votre produit dépend de votre méthodologie de travail dans son ensemble.
Souvent je fais un parallèle avec mes stagiaires en formation : Pensez vous une seule seconde qu’un industriel automobile puisse vous vendre un véhicule sans l’avoir tester ?
Dans l’industrie plus générale, ne pensez vous pas que les tests, et le QA, sont omniprésents ?
Les domaines bancaire, ou spacial; n’échappent pas à ceci, la qualité est très surveillée, et les procédures de tests réellement drastiques, avant que le produit final ne sorte sur le marché.
Pourquoi est ce que l’informatique, ou l’Internet, devraient échapper à cet aspect important du monde industriel d’aujourd’hui ????
Surtout que nous avons réellement les outils pour :
Developpez vous propose un article d’introduction à PHPUnit
Aussi, je vous fournis un article sur une méthode agile, appelée TDD, pour Test Driven Developpment : Développement piloté par les tests.
Cette méthode n’est pas adaptée à tous les projets, mais dans le cas d’un développeur autodidacte (j’en rencontre souvent en formation), elle est très conseillée afin d’assurer une qualité certaine du produit final vendu.
Enfin, la documentation de PHPUnit , une merveille, une mine d’or à lire absolument, qui je pense va vous convaincre de l’utilité des tests.
Retenez surtout : chaque fois qu’un programmeur est tenté de faire un « echo », « print_r » ou toute autre variante : qu’il écrive un test plutot…
Commentaires récents
Archives
- novembre 2010
- août 2010
- juillet 2010
- juin 2010
- mai 2010
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- août 2009
- juillet 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juillet 2008
- juin 2008
- mai 2008
- avril 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
- mars 2007
- février 2007