samedi 5 décembre 2009

Selenium comme outil de test.

En visite dans un centre de développement de la DGFIP à Caen , j'ai assisté à une démonstration de l'outil SELENIUM dans un environnement JAVA. Il y a peu de temps encore, le quotidien de ces développeurs était constitué de COBOL/GCOS7. Quel chemin parcouru !.

Ce schéma illustre le principe de fonctionnement de Selenium.




Bien que les utilisateurs des applications soient sous IE6|7|8 , le développement est d'abord réalisé pour un client Firefox. Ainsi le débat n'est plus IE6|7|8 vs Firefox mais plutôt IE6|7|8 vs (Firefox et ses plugins) et là, il n'y a pas photo. Le comportement identique d'une application sous différents clients (IE6|7|8,firefox,opera, smartphone) est devenu un problème épineux. Quelques conseils :
  • Utiliser les feuilles de style et surtout s'en servir pour régler le problème du traitement erratique des marges (c'est le principal point de divergence des navigateurs) . Pour cela, en avant toutes choses, il convient de remettre toutes les marges à zéro.
  • Utiliser un javascript le plus standard possible : voir ici des conseils dans se sens (developpez.com).
Selenium permet de générer des scripts unitaires pour différents langages :
dont ruby :test::Unit et RSpec.
RSpec est un système de test basé sur le comportement (behavior). Pour réaliser un projet, il devient courant de 'raconter une histoire' plutot que de parler CU (cas d'utilisation') . Cette technique de narration est plus naturelle pour une MOA.
Avec RSpec cela va se traduire de cette facon :
Vous: j'ouvre un compte (créer) et son solde doit etre à zéro.
Cela va etre transcrit sous cette forme

describe Account, "when first created" do
it "should have a balance of $0" do
.....
end
end


Si tout va bien le rapport d'exécution donnera:

Account when first created
- should have a balance of $0

Cette notion de comportement est un concept qui émerge dans tous les nouveaux langages.

Selenium utilise le HTML comme format d'enregistrement, et le fait de manière très propre. Ainsi est il possible de générer le script d'enregistrement sans l'enregistrer préalablement ! Cela reviendrait à préparer les tests avant l'écriture des écrans de l'application.

Aucun commentaire: