17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

402<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Pour tous les programmes à interface graphique, les tests fonctionnels permettent de<br />

valider des portions de code de très haut niveau concernant la mécanique d’affichage,<br />

qui ne sont pas toujours couvertes par les tests unitaires, et d’emprunter les mêmes<br />

chemins que l’utilisateur, pour couvrir des combinaisons qui ne se retrouvent pas forcément<br />

dans les tests unitaires.<br />

Enfin, pour les applications web, les tests fonctionnels qui ne travaillent que par<br />

l’intermédiaire des pages web calculées puis envoyées au navigateur, permettent de<br />

vérifier, dans les limites des outils disponibles, le bon rendu des pages.<br />

Tests de l’ergonomie<br />

Lorsqu’une application graphique est manipulée par un utilisateur, il est guidé par la<br />

logique de présentation des informations. Les tests fonctionnels suivent les mêmes rails.<br />

Pour chaque fonctionnalité complexe du logiciel, qui nécessite des enchaînements<br />

d’écrans, des saisies de données, etc., la conception d’un test fonctionnel peut permettre<br />

de déceler un certain nombre de problématiques d’ergonomie, comme :<br />

des enchaînements d’écrans incompréhensibles ;<br />

un chemin trop long, pouvant être raccourci ;<br />

un dose d’informations par écran trop pauvre ou trop riche, etc.<br />

Dépendance forte à l’outil utilisé et au type d’interface<br />

Contrairement aux tests unitaires, les tests fonctionnels sont fortement dépendants de<br />

l’outil utilisé. Pour les interfaces graphiques, les développeurs utilisent fréquemment<br />

des logiciels tiers, qui implémentent leurs propres mécanismes de scripts et parfois ne<br />

proposent que d’enregistrer les actions souris pour les rejouer sur l’applicatif.<br />

La suite de ce chapitre ne portera donc que sur les outils et techniques relatives aux<br />

tests unitaires, applicables dans tout contexte.<br />

On peut citer, pour le lecteur intéressé, certains outils libres pour les tests fonctionnels,<br />

qui s’adaptent bien à un environnement Python :<br />

Les projets mechanize (http://wwwsearch.sourceforge.net/mechanize/) et WebUnit<br />

(http://webunit.sourceforge.net/) fournissent des objets Python sans interface graphique<br />

qui simulent le comportement d’un navigateur web avec gestion des formulaires,<br />

des cookies, des redirections...<br />

Le logiciel Selenium (http://selenium.thoughtworks.com/) permet de jouer des scenarii<br />

programmés dans un véritable navigateur web tel qu’Internet Explorer ou<br />

Mozilla Firefox.<br />

Le logiciel FunkLoad (http://funkload.nuxeo.org/) offre un système de benchmark<br />

et de reporting étendu.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!