Industrialisation PHP

11oct/100

Revue de presse Industrialisation PHP de la semaine 40 (2010)

Understanding APC

APC est une extension PHP qui est à la fois un cache d'OPCode et un cache de données utilisateur. Le blog TechPortal explique son fonctionnement, le compare avec memcached et propose des clés pour déterminer quand choisir l'un ou l'autre.

Zend Framework app's PHPUnit suite 3x faster

Zend a choisi PHPUnit comme outil de tests unitaires pour son framework. Leur bonne intégration, notamment grâce à Zend_test, facilite beaucoup les tests d'application développées avec Zend Framework. Cependant, les tests touchant à la base de données restent lents à cause des vidages de tables après chaque test. Olek Janiszewski propose une solution ingénieuse à ce problème : utiliser des transactions et faire systématiquement un rollback après le test unitaire.

Créer une autorité de certification et des certificats SSL auto-signés

Utiliser des certificats SSL est très important pour améliorer la sécurité des applications web. Cependant, ceux-ci coûtent souvent cher. Il peut donc être intéressant de créer ses propres certificats lorsque cela est possible, notamment dans le cas d'un usage interne à une organisation.

Bugfixes without Tests are Anti-fixes

Dans un court article, Dan Ackerson rappelle a juste titre qu'une correction de bogue sans test revient à faire un pari dangeureux. On ne peut être sûr que le remède n'est pas pire que le mal et que ce bogue ne réapparaîtra pas plus tard. C'est d'ailleurs une des choses que les utilisateurs détestent le plus : ils ne comprennent pas comment un problème corrigé peut survenir à nouveau.

Examine All HTTP/HTTPS Traffic on Windows with Fiddler2

Bien que discret, le protocole HTTP est l'élément indispensable au fonctionnement des applications web. Il est parfois nécessaire d'étudier le détail des échanges HTTP pour débusquer l'origine  d''un problème. Pour cela il existe des outils que l'on appelle proxies de développement. Comme leur nom l'indique, ils se placent entre le client HTTP, généralement le navigateur mais pas seulement, et le serveur HTTP analysant tout ce qui transite. Parmi les logiciels gratuits disponibles sur Windows, on trouve Fiddler2 dont parle le blog Coding This dans un article récent.

The story of one MySQL Upgrade

Cette semaine, le blog MySQL Performance, nous conte par le détail le déroulement d'une mise à jour périlleuse d'un serveur MySQL. On y apprend les étapes définies et les outils utilisés.

31mar/100

De l’intérêt de MVC pour tester son application

Quand on utilise une couche d'abstraction de base de données, comme PDO ou n'importe quelle couche écrite en PHP, la raison invoquée est souvent de pouvoir supporter différentes bases de données. Dans la pratique, sauter du jour au lendemain de MySQL à Oracle, ou le contraire, ne se fait jamais aussi simplement. En pratique, c'est même assez fallacieux comme argument.

Communément, il y a une bonne raison pour utiliser une telle couche : faire des tests. Et ça, cela arrive beaucoup plus souvent que de changer de base de données. À l'aide d'un simple changement de configuration, la couche d'abstraction de base de données vous permet de faire tourner facilement votre application sur une base de tests, ou celle de production, ou celle de recette, ou encore de vieilles versions... En disposant de jeux de données de tests, il devient alors possible de reproduire différentes situations, voire même de les faire cohabiter.

C'est une application qui justifie même l'utilisation de MVC de manière pratique : on utilise MVC au quotidien pour pouvoir faire des tests d'une partie de l'application sans perturber l'autre. C'est le principe même de séparation des objectifs.

En fait, la souplesse de la couche d'abstraction est également disponible avec le moteur de gabarits (aussi appelée la vue). Combien d'entre vous se plaignent de devoir envisager d'installer Selenium pour faire tourner des tests sur les gabarits ? C'est long, ça fait peur.

Or, un truc tout simple consiste à utiliser les gabarits pour faire les tests : au lieu de produire une page HTML complexe et pleine de Javascript et de CSS, vous pouvez produire une page XML ou JSON, qui contient toutes les informations à afficher, et dépouillée de la couche de présentation. En fait, n'importe que format facile à analyser dans le cadre de vos opérations sera une bonne idée.

Les tests unitaires deviennent alors beaucoup plus aisés à écrire, et vous ne dépendez plus de la couleur du bouton "OK", ou de la CSS. Vous appelez simplement le site, qui produit une page contenant les informations sans leur présentation. Si les bonnes informations sont présentes, il ne restera plus qu'à tester effectivement les couleurs du site : la logique métier est maintenant sous contrôle.

C'est d'autant plus intéressant que l'on utilise ici les gabarits de deux manières : une pour les tests, et une pour la production. Il manque encore une utilisation tierce des gabarits pour avoir trois utilisations modulaires, et être tranquille quant à la qualité de l'interface modèle / gabarit. Quand on met en place une interface, il faut généralement trois utilisations différentes pour être sûr que l'interface est bien modulaire.

En utilisant MVC pour faire les tests, vous allez gagner beaucoup en qualité de code : d'abord parce que vous allez faire des tests automatisables sur une partie de votre application; ensuite parce que vous allez utiliser la structure de votre application et non plus vous targuer d'utiliser simplement un motif de conception; et aussi comprendre un peu mieux vos différentes interfaces.