Introduction aux pratiques XP

Perrick Penet, No Parking

CERDECAM, Bruxelles, 2006

Dette technique et code "boulet"

La dette technique mesure le côté brouillon ou périmé des travaux de développement d'un logiciel. Au fur et à mesure la quantité de code "boulet".

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.

Les valeurs XP

Dans la version 1 : Communication - Simplicité - Feedback - Courage.

Dans la version 2 : Communication - Simplicité - Feedback - Courage - Respect.

Les pratiques XP

Dans la version 1

  1. jeu de la planninfication
  2. livraisons courtes
  3. métaphore
  4. conception simple
  5. tests (unitaires et recette)
  6. remaniements
  7. programmation en binôme
  8. propriété collective
  9. intégration continue
  10. rythme soutenable
  11. client sur site
  12. standards de code

Les pratiques XP

Dans la version 2

Tests développeur

Vous pouvez investir dans des outils mais ceux n'ajoutent aucune valeur avec le temps : les intérts (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, il y a des 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

Se prémunir de la chute des cheveux...

Voici probablement ce que vous souhaitez éviter :

...et combattre le spam ;-)

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...

Exemple de test unitaire

La documentation SimpleTest et ses tutoriaux sont pas mals (je sais, je les ai traduit ;-).

<?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 ?

testoflogging

Fail: testcreatingnewfile->True assertion failed.
1/1 test cases complete. 0 passes and 1 fails.

testoflogging

1/1 test cases complete. 1 passes and 0 fails.

Exemple de test fonctionnel

<?php
require_once('simpletest/web_tester.php');
require_once('simpletest/reporter.php');

class TestOfCerdecam extends WebTestCase {
    
    function testImageDuPlan() {
        $this->get('http://www.ecam.be/images/stories/plan%20général%20voiture.gif');
        $this->assertResponse(200);
    }
}
$test = &new TestOfCerdecam();
$test->run(new HtmlReporter());
?>

Développement piloté par les tests (ou Test driven development - TDD)

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 te 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 :

écrire un test
écrire du code
remanier le code

Euh, en fait a ressemble plutôt à :

écrire un test
écrire du code
écrire un peu plus de code
remanier le code bordélique
remanier le code plus si bordélique que a
recommencer avec un nouveau test

D'autres bénéfices des tests

Pour la liste de quelqu'un d'autre : Keith Ray.

Sous le capot de SimpleTest

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 :

SimpleTest de l'extérieur

Des outils pour développeurs utilisant SimpleTest (I):

Paquets

Des outils pour développeurs utilisant SimpleTest (II):

Trucs pour IDE

Des outils pour développeurs utilisant SimpleTest (III):

Lanceurs de tests

Des outils pour développeurs utilisant SimpleTest (IV):

Divers

Le radiateur

Des cartes en papier pour : écrire / gommer / raturer / colorer / trier / voir de loin / voir de près / échanger / trier / déchirer

Questions ? Commentaires ?

SimpleTest

http://www.lastcraft.com/simple_test.php

Perrick Penet

bo”te : No Parking

blog : :: onpk ::

communauté : AFUP