Accueil > Outillage, Web Services - SOA > soapUI : tester l’enchainement de Web Services

soapUI : tester l’enchainement de Web Services

Dans un précédent article, je vous ai montré comment tester unitairement un Web Service. Cette fois-ci, nous allons aller un peu plus loin en testant l’enchainement de plusieurs Web Services.

Comme nous l’avons vu chacun de nos tests unitaires se trouve dans un arbre. Il est alors possible de lancer l’ensemble des tests de la suite, ou toutes les étapes d’un scénario, simplement en double cliquant sur le nœud correspondant de l’arbre. (Nœuds : TestSuite ou TestCase)

Une fenêtre s’ouvre et permet de voir les résultats

clip_image002[10]

A peine plus compliqué, il est aussi possible de récupérer une valeur dans une réponse et de l’injecter dans le test suivant.

Exemple d’utilisation : Dans nos jeux de tests, on veut réaliser l’enchainement suivant :

  • Créer une commande (createOrder)
  • Annuler la commande qui vient d’être créée (cancelRequestNumber)

sachant que ce dernier service prend en paramètre un « request number » qui est renvoyé dans la réponse du « createOrder ».

Pour récupérer cette valeur et remplir notre requête « cancelRequestNumber », on utilise la fonctionnalité offerte par soapUI : le « Property Transfer ».

La valeur à récupérer (la « Source ») :

image

Le champ à remplacer (la « Target ») :

image

On ajoute un « step » ‘Property Transfer’ à notre Test Case « PropTransfer » :

clip_image006

On donne un nom au remplacement automatique qui sera effectué, à chaque exécution des tests :

clip_image008

On configure les chemins vers les champs qui nous intéressent :

image
Les chemins représentent les nœuds XML, de la requête et de la réponse SOAP, à parcourir pour atteindre les champs voulus

On place maintenant le « step » ‘Property Transfer’ entre les 2 tests (createOrder et cancelRequestNumber), de façon à obtenir un enchainement logique dans notre TestCase ‘PropTransfer’ :

clip_image012

On peut maintenant dérouler l’ensemble du Test Case :-)

  1. Marc N
    04/12/2009 à 11:28 | #1

    Merci pour cet article très utile pour tous ceux qui travaillent avec les web services.
    Le test du web service n’est jamais aisé, cet outil devrait nous simplifier la vie.

  2. Marmotte
    04/12/2009 à 21:41 | #2

    Ça fonctionne aussi pour choper des valeurs dans une requête SOAP qui contient des variables ?

    J’avais trouvé context.expand() pour ça, dans un step Groovy, mais pas un Property Transfer.

  3. Philippe Pascal
    07/12/2009 à 10:59 | #3

    Salut Marmotte,
    Je ne suis pas sûr d’avoir compris ta question :(

    Tu veux récupérer une variable dans la requête SOAP « Source », c’est bien ça ?

    Par exemple, si dans ta requête SOAP Source, tu as mis :
    ${#Project#login}

    tu veux être capable de récupérer la valeur de « Project#login » pour la placer dans une autre requête ?

  4. Kris78
    07/07/2010 à 12:11 | #4

    Bonjour,
    La version 3.5.1 permet les requêtes JDBC (Oracle, Informix), on peut aussi envoyer les entrées comme les sorties dans les variables (global.properties dans Préférences), puis s’en servir dans d’autres requêtes.
    J’utilise cet outil au quotidien, c’est du bonheur ! :o )

  5. Vidocq
    21/10/2010 à 14:26 | #5

    Bonjour,
    Je n’ai pas le wizard dans ma version (pourtant la dernière) ; est-ce une option ? du coup, vu que je ne suis pas un cador du Xpath, je ne m’en sors pas sur mon wsdl.
    Avez-vous une idée ?

  6. madas
    21/04/2011 à 09:45 | #6

    je n’arrive pas a declarer le chemin ???

  7. madas
    21/04/2011 à 09:45 | #7

    comment tu sais ce que tu met dans le declare namespace?

  8. François
    09/05/2011 à 12:26 | #8

    @madas
    Tu peux cliquer sur le bouton « ns: » pour déclarer automatiquement les namespace.

  9. François
    09/05/2011 à 12:31 | #9

    @Vidocq
    Le wizard dont tu parles est une fonctionnalité de la version Pro.

  10. doudou
    18/04/2013 à 10:21 | #10

    tout d’abord merci pour cet article.
    Débutant avec soap ui, je souhaite exécuter 10 fois le même web services. C’est un test fonctionnel que je souhaite réaliser.

    Pourriez-vous m’indiquer la marche à suivre s’il vous plait ?

    Merci infiniment.

  1. 04/12/2009 à 13:34 | #1
  2. 10/12/2009 à 16:00 | #2
  3. 10/03/2010 à 13:55 | #3