|
XMLProxySpy V0.1 | ||||||||
PREV NEXT | FRAMES NO FRAMES |
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 ???. |
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.
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.
Liens utiles :
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.
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.
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.
#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.
<?xml version="1.0" encoding="ISO-8859-1"?> |
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.
<?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.
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.
XPS fournit 3 modes de fonctionnement :
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 | ||||||||
PREV NEXT | FRAMES NO FRAMES |