PHPQuebec, Montréal, 2006
La dette technique mesure le côté brouillon ou périmé des travaux de développement d'un logiciel. Au fur et à mesure la masse de code "boulet" vous rattrape.
Est-ce que votre code est facile à faire évoluer ? Pouvez-vous obtenir un retour instantané sur chacun de vos changements ? Si la réponse à une de ces questions est NON, vous avez du code "boulet". Et celui-ci vous pompe du temps et de l'énergie.
Michael Feathers : Working Effectively with Legacy Code .
Voici probablement ce que vous souhaitez éviter :
Voici ce que les tests automatisés peuvent faire pour vous :
N'hésitez pas à aller découvrir d'autres personnes entièrement satisfaites.
Confiance et sérénité sont les mots magiques.
Vous savez que ça marche et vous savez quand ça marche. Les tests développeur, c'est bien !
Il se pourrait bien qu'au passage on gagne une bataille contre le spam : dès la racine.
Une fois que tous les développeurs auront cessé de perdre leurs cheveux, il ne restera que les messages à propos du Viagra...
Dans la version 1 : Communication - Simplicité - Feedback - Courage.
Dans la version 2 : Communication - Simplicité - Feedback - Courage - Respect.
|
|
Vous pouvez investir dans des outils mais ceux-ci n'ajoutent aucune valeur avec le temps : les intérêts (au sens bancaire du terme) sont négligeables.
Nous accordons plus de valeurs aux individus et aux interactions. Et moins aux procédures et aux outils.
Extrait du Agile Manifesto.
Dans cet univers d'interactions, on distingue deux types de tests : unitaires et fonctionnels -- les tests développeur : Kent Beck -- Developer Testing.
Definition d'un test unitaire : c2 wiki
Définition d'un test fonctionnel : c2 wiki
D'autres tests sont possibles...
La documentation SimpleTest et ses tutoriaux sont pas mals (je sais, je les ai traduit ;-). Ils ne sont plus tout à fait à jour : la dernière release est une alpha.
<?php require_once('simpletest/unit_tester.php'); require_once('simpletest/reporter.php'); require_once('../classes/log.php'); class TestOfLogging extends UnitTestCase { function testCreatingNewFile() { @unlink('/temp/test.log'); $log = new Log('/temp/test.log'); $this->assertFalse(file_exists('/temp/test.log')); } } $test = &new TestOfLogging(); $test->run(new HtmlReporter()); ?>
Et qu'est-ce qu'on y gagne ?
<?php require_once('simpletest/web_tester.php'); require_once('simpletest/reporter.php'); class TestOfPHPQuebec extends WebTestCase { function testPageConf2006() { $this->get('http://conf.phpquebec.com/fr/conf2006/'); $this->assertResponse(200); } } $test = &new TestOfPHPQuebec(); $test->run(new HtmlReporter()); ?>
Vous avez écrit quelques tests, c'est assez pénible. Et puis un jour quelque chose de bizarre arrive : vous modifiez du code ici, puis lancez votre suite de tests et une barre rouge appara”t là-bas. Vous étiez sur le point d'introduire un nouveau bug et il a été découvert automatiquement. A partir de maintenant, votre investissement va payer.
Vous êtes sur le point de devenir "test infected".
Ecrire un test avant du code est votre nouvelle ligne de conduite. Le rythme de votre production change :
Euh, en fait ça ressemble plutôt à :
Pour la liste de quelqu'un d'autre : Keith Ray.
Actuellement il y a deux paquets de tests unitaires en PHP qui soient effectivement actifs : Pear PHPUnit (Sebastian Bergmann) et SimpleTest (Marcus Baker).
Au coeur de SimpleTest :
La version qui arrive (1.1) devrait ajouter :
Des outils pour développeurs utilisant SimpleTest (I):
Des outils pour développeurs utilisant SimpleTest (II):
Des outils pour développeurs utilisant SimpleTest (IV):
Vous avez aimé Netscape ? vous allez adorer Vista ! Les concurrents (IE pour l'un et Apple / Ubuntu pour l'autre) ont sortis et continuent de sortir des versions régulièrement.
Vista© ? D'abord 2003 puis
Et pendant ce temps, Ubuntu©
Pour une prestation, le déploiement est facile : un serveur suffit et voilà...
$ pear update <paquet>
Pour un logiciel avec plusieurs utilisateurs : pensez à faciliter la mise-à-jour.
Les habitués "fire and forget" peuvent faire très mal au niveau de la sécurité :
Des cartes en papier pour : écrire / gommer / raturer / trier / échanger / trier / voir de loin & de près / déchirer
Question : fatigue ou ennui ?
Le binômage est fatiguant : les développeurs sont constamment à la recherche d'un haut niveau de concentration.
PHP s'est construit sur la simplicité.
The no-framework PHP MVC framework : la mode du framework coûte cher. A commencer par trouver le bon : Taking a look at ten different PHP frameworks
Et s'il y avait un principe à retenir : DRY, pour Don't Repeat Yourself. Ensuite on se rendra compte de l'émgergence de modèles de conception (design patterns).
Attention question piège : la documentation est souvent la bouc-émissaire.
PHP a un très bonne documentation : à quel prix ?
Il "suffit" souvent de trouver la dose de documentation demandée (ie. PHPDoc n'est pas toujours LA solution).
Note : quand même un truc à éviter de dire à votre responsable si vous ne travaillez pas en binôme
Il existe des bindings pour SVN avec PHP : ça peut toujours servir.
Attention au transfert FTP, le Facile se Transforme en Pénible.
Reprendre le graphique du chronomètre à 1 puis 3 boutons.....
Commencer par les "coding standards" de PEAR (pear.php.net)
class t_a_c() {
function f() {
...
return $b_number;
}
}
class voyager_avec_air_canada() {
function préparer_carte_embarquement() {
...
return $numéro_carte_embarquement;
}
}
Pour cet exemple, il faudra attendre PHP6 et le support Unicode complet.
Ne pas oublier Ruby on Rails et son pouvoir des conventions en marche contre Java et ses fichiers de configuration en XML.
email : perrick@noparking.net
boîte : No Parking
blog : :: onpk ::
contrib : SimpleTest
communauté : AFUP