Depuis toutes ces années où je développe des applications web, je teste bêtement tout ce que je fais, petit bout par petit bout. Cette technique a fait de moi un spécialiste du Ctrl+S, Alt+Tab, Ctrl+R, Alt+Tab (parfois suivi de "ah bon sang de fenêtre débile, que fais tu là?") Bref, ça a son charme et je ne me vois pas faire autrement.
Quand l'application est terminée (ou sur le point de l'être) je réalise généralement une checklist de plusieurs pages, avec tous les points de contrôle à effectuer. Vient ensuite le moment du test, c'est assez laborieux, il faut remplir des formulaires, cliquer, valider, cocher la case sur le papier. Imaginez un logiciel de blog (exemple totalement au hasard) qu'il faut tester dans 5 contextes d'hébergement différents. Imaginez ensuite que le logiciel en question fonctionne avec 3 bases de données différentes et qu'il est impératif de tester le comportement de chacune d'entre-elle (vous aimiez le développement cross-browser ? vous allez adorer le développement cross-database ;-) 3x5=15, une heure par test, 15 heures[1]. Les releases, c'est ma hantise (et ça rime !)
Il y a quelques mois est sorti Selenium IDE, un produit dérivé de Selenium qui permet de réaliser et de lancer automatique des actions sur un site web et de récupérer certaines valeurs. Je savais que je m'en servirai, je ne savais pas encore à quel point j'allais adorer !
Avec Selenium, on peut enregistrer des variables, ouvrir une page, remplir un champ de formulaire identifié via XPath (une bonne occasion de réviser) ou DOM, cliquer sur un lien ou un bouton, ajouter des points d'arrêt, etc... On peut même évaluer un bout de code javascript ou encore intéragir avec une fenêtre en popup.
Conséquence assez logique, la checklist est bien plus longue à écrire, ça prend pas mal de temps, surtout au début. Mais ensuite, pour chaque nouveau test, on appuie sur play et on regarde le travail se faire[2]. Et pour chaque release, plus de checklist à préparer, il faudra éventuellement la compléter ou la corriger mais rien de comparable au calvaire que je vivais avec mes feuilles de papier.
Selenium IDE, quand à lui, est l'extension Firefox qui permet d'écrire les tests très facilement (voire de les enregistrer automatiquement) et de les lancer directement depuis l'extension. Celle-ci s'accommode fort bien de XPather, encore une autre géniale extension Firefox pour jouer avec XPath.
Si tout ce que je viens de raconter vous intéresse, lisez la liste des commandes Selenium et jetez un oeil aux User-Extensions (et puis inquiétez vous aussi un peu de l'intérêt que vous portez à ce genre de choses, sauf si c'est votre travail, là vous avez le droit.)
Si j'ai un peu de temps, je vous parlerai du côté serveur avec xdebug pour PHP, encore un bien bel outil :) Bon tests !