Simple Web Application Unit Testing

Yoan BlancSun, 15 Oct 2006, ,

After having discovered that PHP sucks less than JavaScript reading the feedback of the last WebTuesday (I’ll need to go there one day, a Tuesday maybe). Harry mentioned in his presentation Selenium a powerful tool for doing Web Application Unit Testing. Sounds great! Let’s dive!

  1. Download it: Selenium Remote Control

  2. Unzip it and go in.

  3. Run the server (Java is required).

    cd server/
    java -jar selenium-server.jar -interactive
  4. We’ll try it with Python but Selenium support lots of cool languages like Ruby, Perl, Java and .Net (try Mono).

    In an other shell go into the selenium directory and then into the python dir.

    Simply run:

    python test_google.py

    Rocks? Fails? For myself, it fails with firefox but I manage to run it with Opera.

  5. Too Fast? Let’s try it into the Python shell. From the python directory run:

    python

    Woo! I hope you already done that before, you may love it.

    from selenium import selenium
    sel = selenium('localhost', 4444, '*opera', 'http://www.google.ch')
    sel.start()

    Wait a second, it runs Opera for you.

    sel.open('http://www.google.ch')
    sel.type('q', 'Yoan Blanc')
    sel.click('btnG')
    print sel.get_title()

    It normally displays: “u'Yoan Blanc - Recherche Google'”. Now you can quit.

    sel.stop()

    Hit Ctrl+D to quit the Python shell

Selenium will become your next new friend (after Firebug of course) for testing your web application.

Ayant fait la lecture du compte-rendu du dernier Webtuesday (un évènement zurichois des bons développeurs du coin), j’ai pu découvrir dans la présentation de Harry sur JavaScript un nouveau nom et outil, nommé Selenium. Cet outil permet de piloter un navigateur web dans un langage de script tel que Python, Ruby, Perl ou via Java et même via le framework .NET (Mono pour les linuxiens).

L’objectif premier est la création de tests unitaires qui permettent de faire des tests de régression sur son application web. Une méthode déjà fortement (bien que pas assez) répandue dans le milieu des framework, bibliothèques, applications serveur, applications desktop.

Ce genre de tests permettent de tester l’intégrité d’une application. Qu’une chose ayant fonctionné, fonctionne toujours comme initialement conçu. Certains vont même plus loin en disant qu’il faudrait écrire les tests avant de réaliser l’application. Un concept certainement accessible dans le cadre de bibliothèques ou API mais difficilement dans un application web sauf si celle-ci fournit un API REST.

À vos tests !

Digg it!, so del.icio.us, blogmarks, reddit.