XMLProxySpy V0.1

Documentation de XMLProxySpy obtenue depuis les commentaires de code

Introduction XmlProxySpy ou xps est un logiciel qui permet d'engegister des navigations sur un navigateur et de pouvoir ensuite les rejouer sans être devant son navigateur.

See:
          Description

Kernel
xmlProxySpy.kernel This package contains objects usefull for the process of XPS system.
xmlProxySpy.kernel.thread Package which contains all the kernel thread classes.

 
Archive
xmlProxySpy.kernel.archive The package that ???.

 
Graphic User Interace
xmlProxySpy.ui The package that handles the user interface.
xmlProxySpy.ui.special.logs  

 
Web
xmlProxySpy.web The package that gathers all the classes used inside the web application that accesses XMLProxySpy.

 
Utils
xmlProxySpy.ant The package that gathers all the Ant especially developed tasks.
xmlProxySpy.kernel.util The package that ???.
xmlProxySpy.kernel.util.xml The package that ???.

 

Introduction

XmlProxySpy ou xps est un logiciel qui permet d'engegister des navigations sur un navigateur et de pouvoir ensuite les rejouer sans être devant son navigateur. Les applications sont multiples, il est possible avec ce systeme de pouvoir charger des données dans un syteme intranet avec trés peu de manipulations manuelles, il suffit d'enregister un seul chargement puis de programmer XPS pour inserer un nombre illimité d'autres données en changant le parametre d'un seul processus. Les tests de montée en charge de sites internet, extranet ou intranet sont possible de manière simple avec XPS. un certain nombre de scenarios préalablement construit peuvent servir de base pour un test de montée en charge. Les tests de non regressions peuvent s'automatiser simplement, une batterie de scenarios liés à differentes parties de l'application peuvent être construit puis rejoué, il suffit alors d'observer les pages produitent pour observer les eventuelles regression. Le mecanisme de XPS peut permettre d'acceder à une page web sans passer par les étapes intermédaire de logging, par exemple on pouura enregistrer une navigation pour acceder à son compte mail sur lr net et pouvoir par le suite obtenir la dernière page du scenario directement dans son navigateur. Une nouvelle vision des favoris né de ce principe. D'autres applications sont encore à découvrir.

Technique

Principe

Le principe général de XPS est de parametrer un proxy depuis un navigateur qui pointe vers la machine locale sur un port configurable dans XPS (par défaut le port 3000). Ainsi toutes le requetes http passent par le proxy qui peux les engeritrer sous un certain format pour les rejouer ultérieurement.

Xps fonctionne comme un proxy, il prend en compte les demandes du cleint, établie la connexion avec le server web, transmet la requete et renvoi la réponse au client. Ce mecanisme est le principe des proxy. Xps transforme à la volée les requetes http en document xml effectue des changements pour impléménter le mécanisme de proxy puis retransforme les documents xml en requete http classique.

Connexions

Les connexions entre le navigateur est XPS ne sont pas permanente, le client effectue une connexion avec XPS pour chaque requete (page html, image gif....). De la même façon les requetes envoyées au serveur ainsi que les reponses sont transmises par une nouvelle connexion à chaque fois.

Format des requetes

Les requetes http sont traduite par XPS ou plutot par une classe de XPS (XMLProxyTranslator). deux methodes sont déféinis, une qui permet de transformer une requete http en format xml et une autre qui fait le contraire.

Les requetes http envoyées par un navigateur classique (comme ie) sont de la forme :

GET / HTTP/1.0
User-Agent: Mozilla/4.72 [en] (WinNT; I)
Host: www.voila.fr
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*
Accept-Encoding: gzip Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8

XPS les traduit sous cette forme

<?xml version="1.0" encoding="ISO-8859-1"?>
<REQ>
<ACTION METHOD="GET" NORM="HTTP/1.0" URL="http://cf.icq.com/cf/2000/coollinks.html"/>
<HEADER NAME="Accept" VALUE="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint"/>
<HEADER NAME="Accept-Language" VALUE="en-us"/>
<HEADER NAME="Accept-Encoding" VALUE="gzip, deflate"/>
<HEADER NAME="User-Agent" VALUE="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)"/>
<HEADER NAME="Host" VALUE="cf.icq.com"/>
</REQ>

pour une requete en methode post :

<?xml version="1.0" encoding="ISO-8859-1"?>
<REQ>
<ACTION METHOD="POST" NORM="HTTP/1.0" URL="http://www31.caramail.com/scripts/baltop"/>
<HEADER NAME="Accept" VALUE="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint"/>
<HEADER NAME="Referer" VALUE="http://www31.caramail.com/general.jsp?N=17743&C=0&"/>
<HEADER NAME="Accept-Language" VALUE="en-us"/>
<HEADER NAME="Content-Type" VALUE="application/x-www-form-urlencoded"/>
<HEADER NAME="Accept-Encoding" VALUE="gzip, deflate"/>
<HEADER NAME="User-Agent" VALUE="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)"/>
<HEADER NAME="Host" VALUE="www31.caramail.com"/>
<HEADER NAME="Content-Length" VALUE="57"/>
<HEADER NAME="Proxy-Connection" VALUE="Keep-Alive"/>
<HEADER NAME="Pragma" VALUE="no-cache"/>
<HEADER NAME="Cookie" VALUE="ORANGE=MMMGMGJJEBEAPBPLMABAGKLAAOMAFJJBNDFGNHNECHPKKNCE"/>
<POST>
<PARAMPOST NAME="LOGIN1" VALUE="toto"/>
<PARAMPOST NAME="PASSWORD1" VALUE="toto"/>
<PARAMPOST NAME="Enter" VALUE="+Entrer+"/>
</POST>
</REQ>

pour une requete en methode get :

<?xml version="1.0" encoding="ISO-8859-1"?>
<REQ>
<ACTION METHOD="POST" NORM="HTTP/1.0" URL="http://www31.caramail.com/scripts/baltop"/>
<HEADER NAME="Accept" VALUE="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint"/>
<PARAMGET NAME="LOGIN1" VALUE="toto"/>
<PARAMGET NAME="PASSWORD1" VALUE="toto"/>
<PARAMGET NAME="Enter" VALUE="+Entrer+"/>
<HEADER NAME="Referer" VALUE="http://www31.caramail.com/general.jsp?N=17743&C=0&"/>
<HEADER NAME="Accept-Language" VALUE="en-us"/>
<HEADER NAME="Content-Type" VALUE="application/x-www-form-urlencoded"/>
<HEADER NAME="Accept-Encoding" VALUE="gzip, deflate"/>
<HEADER NAME="User-Agent" VALUE="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)"/>
<HEADER NAME="Host" VALUE="www31.caramail.com"/>
<HEADER NAME="Content-Length" VALUE="57"/>
<HEADER NAME="Proxy-Connection" VALUE="Keep-Alive"/>
<HEADER NAME="Pragma" VALUE="no-cache"/>
<HEADER NAME="Cookie" VALUE="ORANGE=MMMGMGJJEBEAPBPLMABAGKLAAOMAFJJBNDFGNHNECHPKKNCE"/>
</REQ>

l'avantage de cette technique est de pouvir manipuler de fichiers xml au lieu des ligne sous forme de string. Si les paramètres doivent être modifiés, il est facile de manipuler les noeuds pour pouvoir modifier les attributs header ou les parametres. il est alors possible de modifier les requetes pour obtenir des resultats de navigation differents.

Les scenarios

Un objet scenario represente une navigation enregistrée vers un esemble de serverWeb. L'objet Scenario possede des methodes qui lui permette de s'enregistrer dans un fichier et de s'ouvrir depuis un fichier.Une fois chargé l'objet contient un vecteur contenant des requetes au format XML comme définis ci-dessus. D'autres objets permettent de generer un objet scenario depuis la fin d'un enregistrement et de jouer un scenario depuis l'objet lui-même. Les fichiers scenario sont au format zip et possede une extension ".scn". Quatre types de fichiers sont contenus dans l'archive : des Fichiers request en xml, un fichier de propreties pour les definition des proprités du scenario (Nom, mode,...), un fichier de parametre pour les parametres post ou get de l'ensemeble des fichiers request, un fichier d'historique de lecture.

Description de config.properties :

#Mon Jan 21 11:19:57 CET 2002
play_Just_html_mode=false
name=tomcat2
html_Record_mode=true
author=golus
description=
just_In_Time_mode=false

Ce fichier de properties contient les informations relatives au scenario :

play_Just_html_mode : indique si les requetes doivent toutes être joués ou juste les demande de page html
name : indique le nom du scenario
html_Record_mode : indique si les reponses html doivent être enregistrée sur le disque
author : indique l'auteur du scenario
description : decrit le scenario
just_In_Time_mode : indique si les requetes doivent être jouées dans la même temporisation que pendant l'enregistrement.

Description de param.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<PARAM>
<REQ VALUE="1011608370943">
<PARAMPOST CODE="NONE" ID="0" MODE="STATIC" NAME="firstname" VALUE="test"/>
<PARAMPOST CODE="NONE" ID="1" MODE="STATIC" NAME="lastname" VALUE="testdp"/>
</REQ>
</PARAM>

Ce fichier permet de définir les valeurs des parametres pour les differentes requetes. En modifiant les valeurs des attributs et en appellant la methode transformAll sur l'objet scenario, les parametres seront changés suivant le contenu du fichier param.xml.

L'attribut code permet de définir un appel à une méthode d'une classe externe pour définir une valeur de façon dynamique. La classe externe devra suivre une norme specifique.De cette manière il sera possible de programmer des jeu de scenarios dynamiquement. Par exemple un scenario correspondant à une connexion sur un site distant pourra être rejoué de manière dynamique avec un ensemble de login differents.

Description de history.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<HISTORYLIST>
<HISTORY FILENAME="tomcat2_21012002_111941.zip" HTMLNAME="1011608370943.html" TITLE="Request Parameters Example"/>
<HISTORY FILENAME="tomcat2_21012002_111958.zip" HTMLNAME="1011608370943.html" TITLE="Request Parameters Example"/>
</HISTORYLIST>

Le contenu de ce fichier represente l'historique de jeu d'un scenario, pour chaque page html generé par le jeu d'un scenario, on obtirnt un fichier zip et le nom d'une entré correspondant à une page html.

Organisation des repertoires de travail

L'execution du système XPS se fait dans un repertoire dedié "exec", lors de la premier lancement de l'application, les differents repertoires sont créés s'ils n'existent pas grace à l'objet XPSConfiguration.

Description des repertoires :

Modes de fonctionnement

XPS fournit 3 modes de fonctionnement :

Gestion des cookies et referrer en mode lecture

La navigation vers un site distant peux fournir des cookie de navigation de manière dynamique. XPS gere les cookies de naviagtion de manière dynamique lors d'un jeu de scenario. De manière plus detaillée les header correspondant aux cookie sont ajoutés dynamiquement lors du jeu. De la même manière le header refferer corresponat à l'url precedente est construite dynamiquement.

 


XMLProxySpy V0.1

Generee le 29.01.2002 04:11:23 PM
Ne pas oublier de consulter le sommaire !