Tester des applications Web avec Perl

Après avoir fouillé un peu pour voir ce qui se fait en matière de tests fonctionnels pour les applications Web, je suis tombé sur la combo qui tue :

Il manquait à mon gout juste une chose : un wrapper qui vous permette d’écrire un scénario sans se soucier de l’agent à utiliser (WWW, Mozilla ou IE). En effet, ça serait vraiment dommage d’avoir à écrire autant de scénario qu’on a d’environnement à tester.

J’ai donc écrit un petit wrapper
pour écrire une suite de test qui joue un scénario avec l’agent que l’on souhaite.

Globalement ça marche comme ça :

  1. on écrit le scéario qui nous plait dans un module qui hérite de Test::WWW::Mechanize::Runner dans des “suites”
    package MonScenario;
    use Test::WWW::Mechanize::Runner;
    use base 'Test::WWW::Mechanize::Runner';
    
    suite load_google => sub {
        my ($agent) = @_;
    
        ok($agent->get('http://www.google.fr'),
            'GET http://www.google.fr');
    };
    
  2. le fichier de test ne comprend que 3 lignes et ressemble à ça (pour un jeu avec Mozilla::Mechanize) :
    use MonScenario;
    MonScenario->init('mozilla');
    MonScenario->run();
    

Bientôt sur le CPAN…

PS : bon, il y a un soucis de compilation pour Mozilla::DOM (une dépendance de Mozilla::Mechanize) sur Debian (il cherche à utiliser le xpcom de mozilla alors que debian oblige à passer par xulrunner) ; le patch est simple, je compte le soumettre dans le BTS du CPAN je l’ai soumis sur le BTS du module, et si je trouve une demi-heure quelque part, à packager libmozilla-mechanize-perl.

This entry was posted in Programmation and tagged , , . Bookmark the permalink. . 899 views.

One Response to Tester des applications Web avec Perl

  1. sputnick says:

    Salut,

    je suis interessé par tes travaux. Comme tu le suggère, il y a des soucis sur cpan :
    http://pastebin.com/d798ee48
    je trouve l’idée séduisante en espérant que ça ouvre des perspectives où le bot se comporte encore plus comme un “vrai” browser.
    Je suis sous archlinux i686 perl v5.10.0.
    Si il le faut, j’ouvrirais un bug report.

    sputnick.