2010-09-06 20 views
0

J'essaie de résoudre le problème suivant:
J'ai un système avec lequel la communication est faite via SOAP (XML over http).
Dans Jmeter j'utilise SOA/XML-RPC (pas webservice basé sur wsdl).
J'envoie une requête SOAP et recevoir une réponse dans la balise vollowing
Comment traiter et insérer une variable définie par l'utilisateur à partir de/dans SOAP Response/Request i dans Jmeter? Paramètre de demande SOAP dans jmeter

<Prodrevision>5</Prodrevision> 

Ce nombre passe de temps en temps et le but est d'obtenir ce numéro dans cette balise mettre comme la variable définie par l'utilisateur et de le transmettre à un autre SOAP/plan de test XML-RPC

JMeter mine

ressemble que


-User variabla défini - ici je varaibla vide nommé « var »

-Savons/XM L RPC (cette requête SOAP fait que la réponse est reçue)
- XPath extracteur avec

  reference name: var 
      XPath Query: //*[local-name()='Prodrevision']/text() 

(ce qui devrait selon le processus de FAQ/analyser la réponse et asssign à variable var)

-Savons/XML-RPC - et cette demande XML champ de données SOAP/XML-RPC a

..xml data 
<Prodrevision>${var}</Prodrevision> 
...xml data 

Mais je n'envoie rien dans la deuxième demande ??? les demandes de mine frappent le serveur mais il n'y a aucune valeur. Où j'ai fait une erreur?

Répondre

1

Chaque fois que vous voyez $ {variableName} dans la requête, cela signifie que la variable n'a pas été définie. Très probablement, c'est un problème avec la configuration de XPath. Je n'ai jamais utilisé ce composant, donc malheureusement je ne peux pas vous aider là-bas.

Cependant, j'ai trouvé que l'extracteur d'expressions régulières de post-processeur est très facile et précis.

La structure aimerait ceci:

1st Soap Request 
    -- regular expression stored to "var" 
2nd Soap Request, using ${var} 
0

Le problème a été partiellement résolu. Il y avait un problème dans une mauvaise ou mal, pour JMeter, défini requête XPath

 reference name: var 
     XPath Query://name[contains(text(),'Prodrevision')]/parent::multiRef/value 

Une fois la requête XPath j'ai ajouté beanshell postprocessor avec le code suivant

 print("Beanshell processing SOAP response"); 
     print("var" +${var}); 

Je vois donc enfin quelle est la valeur être saisi par l'extracteur XPath. J'ai également installé xpather 1.4.5 en tant que module complémentaire Firefox. Et ouvert la réponse XML et réglé une requête XPath peu pour avoir une bonne réponse. Ensuite, cela a été copié à JMeter et a fonctionné.

Ensuite, requête SOAP qui devait être envoyé par JMeter, je mets ma XPath valeur d'extraction de la manière suivante:

<name xsi:type="soapenc:string">Prodrevision</name> 
<value xsi:type="soapenc:string">${var}</value> 

et cela a fonctionné à nouveau bien pour un fil.

Problème en ce moment est avec les threads. S'il y a plus d'un (un) thread, il génère de mauvaises requêtes :-(