Tests automatisés : application à un MES (2)


Retour à la page développeur

Code :

Automatisation du test d'une interface web

Tester automatiquement une interface web signifie pour simuler les requêtes que fait un navigateur client (requêtes HTTP de type GET, POST) et vérifier la réponse du serveur (erreurs 404,500, ou bien OK 200).

La création du script de test peut être très fastidieuse si on ne dispose pas d'un moyen de capturer la navigation au travers du navigateur. La bonne nouvelle est que Microsoft a pensé à ces problèmes et a mis à disposition un outil, Microsoft Web Application Stressing Tool qui est gratuit et permet de gérer tout cela.

La première phase consiste à enregistrer à l'aide de cet outil une navigation complète dans le site. Cela prend du temps, mais cela paie rapidement, puisque les régressions se manifestent très vite. Dans une gestion de projet de type "modèle à spirales" ou "extreme programming", où les choses peuvent muter rapidement, il est très important de pouvoir détecter tous les effets de bords des modifications.

Microsoft fournit avec le WAS un utilitaire de ligne de commande afin de pouvoir lancer les tests de manière automatique. Par exemple:
H.EXE START "Sample Script" /W
lance un test en mode synchrone (on retrouve la main quand le test est fini).

Cela permet de faire partir le test à heures régulières. Mais comment analyser automatiquement le résultat du test? Mon approche a été d'aller directement faire des requêtes dans la base de données support du WAS. En créant une source de données (Panneau de configuration/ODBC Sources/DSN sistema/Add -> microsoft access database -> sélectionner le fichier WAS.MDB dans c:\program files\Microsoft web application stressing tool) du nom de WAS, un programme peut faire la query suivante qui selectionne toutes les pages fautives du scénario :

SELECT DISTINCT CSTR(REPORTPAGES.URI) AS SCRIPT, REPORTPAGEDATA.Type AS ErrorCode FROM REPORTPAGES, REPORTPAGEDATA WHERE (REPORTPAGEDATA.NAME='ResultCode') AND NOT (REPORTPAGEDATA.Type = '200') AND (REPORTPAGEDATA.TransactionID=REPORTPAGES.TransactionID) AND (REPORTPAGES.ReportID=1)

(Notez REPORTPAGES.ReportID=1 doit être mis à jour avec le numéro du Report généré)
Le résultat de cette query est :

Script Errorcode
/samples/ad_test.asp 404
/samples/post.asp
404
/samples/browser.asp 404
/samples/cookie.asp 404
/samples/fileacc.asp 404
/samples/htmltest.htm 404
/samples/logo.jpg 404

Afin de ne pas avoir un ensemble de batch pour tester l'interface et un ensemble de scenarios pour tester l'application C++, j'ai réalisé un interpréteur très rudimentaire (quick and dirty...) qui permet de lancer ces tests. C'est l'objet de la page suivante.

Retour à : test d'application web
Passer à : langage de test

Retour à la page développeur