Tout le monde reconnaît l’intérêt des tests de régression, mais peu prennent le temps d’en faire. Nous devons donc changer de philosophie : utiliser le test d'unité pour accélérer les cycles de développement. Cela mérite une explication. Pendant le développement d'applications Web, pour tester un changement,
Testez d’abord, codez ensuite
vous devez déployer le code vers un serveur puis feuilleter les pages manuellement jusqu’au point où le nouveau code s’exécute. À ce stade, vous vérifiez visuellement que votre code a fonctionné. Le premier point faible de ce scénario est d’être trop long et laborieux. Le second est que l’information affichée sur la page ne prouve pas forcément la bonne qualité du code. Peut-être n’avez-vous pas ajouté ces enregistrements à la base de données ?
Vous pouvez vous dispenser de ce processus vraiment trop long tout en ajoutant à un jeu de tests de régression : grâce à l’utilitaire PHP open source appelé PHP Unit. Examinez le code de test du fichier SampleTests.php dans la figure 3. Le code teste la méthode getNoseIdFromNoseSn dans Sample.php de la figure 1. Pour exécuter un test d’unité à partir de la ligne de commande, tapez simplement phpunit suivi du nom du PHP de test :
C:\work\getreal>phpunit SampleTests.php
PHPUnit 3.3.4 by Sebastian Bergmann.
F
Time: 0 seconds
There was 1 failure:
1) testGetNoseIdFromNoseSn(SampleTests)
Failed asserting that two strings are equal.
expected string <123>
difference
got string <2123>
/var/www/getreal/SampleTests.php:9
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Vous pouvez voir que le test d’unité a détecté une défaillance – en descendant jusqu’au numéro de ligne. Pour le processus de développement itératif, continuez à modifier le code et à exécuter le test d’unité jusqu’à ce que la sortie soit propre et nette. Pour démontrer un test propre, j’ai changé l’assertion de SampleTests.php pour vérifier 2123 et j’ai réexécuté phpunit:
C:\work\getreal>phpunit SampleTests.php
PHPUnit 3.3.4 by Sebastian Bergmann.
.
Time: 0 seconds
OK (1 test, 1 assertion)
Pour obtenir un code de grande qualité et être ainsi un programmeur comblé, suivez le précepte bien connu : « tester d’abord, coder ensuite ». Procédez ainsi : 1) Créez le squelette de votre PHP (essentiellement, l’API). 2) Ecrivez les tests d’unités pour chaque méthode dans ce PHP. 3) Exécutez les tests d’unités, qui, d’ailleurs, échoueront tous parce que vous n’avez pas encore étoffé le squelette de ce code. 4) Etoffez le PHP et poursuivez les tests d’unités jusqu’à ce qu’ils soient tous satisfaisants.
Le test d’unités présentent deux avantages importants : premièrement, après avoir appliqué la stratégie « tester d’abord coder ensuite » pendant un certain temps, vous aurez un grand corpus de tests d’unités, constituant vos tests de régression. Deuxièmement, en concevant et en affinant votre code PHP pour le rendre testable, vous aboutirez à un code plus modulaire.
Utilisons maintenant les tests d’unités pour corriger des bogues de production. Quand un bogue se manifeste, votre première action est de le reproduire avec une unité de test. Après quoi, vous corrigez le problème, réexécutez l’unité de test (pour valider la correction), réexécutez tous vos tests de régression (pour prouver que la correction n’a pas endommagé du code ailleurs), puis mettez votre code en production. Désormais, le nouveau test d’unité fera partie des tests de régression et donc votre code de correction rapide sera testé pendant toute la vie de l’application.
Quand vous aurez commencé à suivre le principe « tester d’abord, coder ensuite », vous l’appliquerez à tous vos développements. En effet, le test d’unité améliore les cycles de développement et provoque moins de ruptures de code. Votre travail sera plus gratifiant, vous serez un meilleur programmeur, et votre travail sera plus agréable.
Téléchargez cette ressource
Sécuriser votre système d’impression
Longtemps sous-estimée, la sécurisation d’un système d’impression d’entreprise doit être pleinement prise en compte afin de limiter le risque de fuite d’informations sensibles. Voici les 3 principales précautions à prendre.