Accueil > Outillage, Web Services - SOA > soapUI et les tests de Web Services

soapUI et les tests de Web Services

SoapUI est un outil de test de Web Services développé par Eviware. Il existe en 2 versions dont une entièrement gratuite. Je le trouve très utile pour le debug et les tests unitaires de web services, mais aussi pour les tests automatisés et les tests de charge.

Je vous propose de découvrir dans cet article comment utiliser SoapUI pour réaliser des tests unitaires.


Pour étayer la suite de mon propos, je vais utiliser les 2 web services (basiques ;-) ) suivants :

clip_image002clip_image004

Enregistrer les WSDL dans des fichiers XML pour obtenir les fichiers NewWebService1.xml et NewWebService2.xml.

clip_image002[5]

Créer un nouveau projet dans SoapUI

clip_image002[7]

Nommer le nouveau projet

clip_image004[10]

Ajouter les WSDL à tester

clip_image006

Ajout du premier WSDL

clip_image008

« Create TestSuite » : génère les tests de chaque API du Web Service
« Create MockService » : génère des bouchons pour chaque méthode du Web Service

On obtient l’arborescence suivante :

clip_image010

On crée la TestSuite qui va contenir tous nos tests

clip_image012

On ajoute un TestCase qui va contenir un scénario de tests
(Il suffira d’ajouter un nouveau TestCase pour un autre scénario)

clip_image014

On obtient l’arborescence suivante :

clip_image016

Nous allons maintenant ajouter toutes les étapes de notre scénario de test

clip_image018

Premièrement, on va tester la méthode « Hello » du Web Service n°1

clip_image020

Il est possible de préconfigurer certaines assertions dès la création

clip_image022

On configure la valeur « Toto » dans le SAOP qui sera envoyé pour ce test

clip_image024

On ajoute une assertion de type « Contains » car on sait que la réponse devra contenir la chaîne de caractères : « Hello Toto »

clip_image026 clip_image028

clip_image030

On peut dérouler le test qui vient d’être créé

clip_image032

Tout s’est correctement déroulé, on va maintenant ajouter une autre étape à notre scénario : le test de la méthode « Format » du Web Service n°2

clip_image034

On va tester que la méthode renvoie bien une exception quand on passe la valeur « -1 » en paramètre

clip_image002[9] clip_image004[12]

clip_image006[4]
La case « Not SOAP Fault » doit être décochée puisque dans notre test on veut s’assurer de recevoir une SOAP Fault

On ajoute l’assertion de « SOAP Fault », après avoir passé la valeur « -1 » dans le SOAP de la requête

clip_image008[4]
On sait aussi que l’exception contient le message : « erreur de valeur ». On peut donc ajouter une assertion « Contains » sur cette chaine de caractères

On déroule le test pour s’assurer que nos assertions fonctionnent

clip_image010[4]

Simple et efficace :-)

Dans des prochains articles je vous expliquerai comment relancer et automatiser ces tests et comment faire des tests de charges.

  1. lab
    22/02/2010 à 10:23 | #1

    simple et pratique

  2. Testor2
    14/04/2011 à 15:26 | #2

    Ces deux fichier exemple ne sont pas accéptés par soapUI. j’ai le message « Com.eviware.sopaui.support.SoapUIExeption:Error importing wsdl ». D’ailleurs j’ai trouver d’autre fichier (par exemple : http://msdn.microsoft.com/fr-fr/library/bb469924.aspx) qui sont accepté mais ne suivent pas la même syntaxe :
    « »
    au lieu de
    « @WebService() »

    ou

     »

     »

    au lieu de

    « public String hello(String name) {
    return « Hello « +name;
    } »

  3. Testor2
    14/04/2011 à 15:29 | #3

    Les balises xml du fichier qui fonctionne ne sont pas tracé dans mon message (malgrè une second tentative). Pouvez-vous m’expliquer d’où vient la difficulté qui empèche soapUI d’exploiter vos exemples ? (si besoins envoyez moi vos fichiers)
    Merci
    Testor2

  4. Jean-Francois SUBLET
    15/04/2011 à 08:33 | #4

    Quels sont les fichiers que tu essaies d’importer ?

    Dans ta remarque, tu décris des méthodes de classe Java, ce qui n’est pas du tout un WSDL. Un WSDL est un fichier XML décrivant tes services Web, quelque soit la technologie.
    Les classes Java, déployées dans un conteneur de services SOAP vont te permettre de publier un WSDL. C’est lui qu’il faut importer.

    Si tu travailles en .NET, tu utiliseras probablement WCF (Windows Communication Foundation).

  5. Testor2
    15/04/2011 à 11:19 | #5

    @Jean-Francois SUBLET
    Je n’ai pas chercher à utiliser du java ou du .Net
    J’ai utilisé les 2 web services « basiques » qui commencent l’article. J’ai saisie les lignes de codes indiqués, je les ai nommé « NewWebService1.xml » et « NewWebService2.xml ».
    Hélas soapUI les refuse.

  6. Jean-Francois SUBLET
    15/04/2011 à 14:14 | #6

    @Testor2
    Les 2 web services « basiques » qui commencent l’article ne sont pas des web services en l’état. Ce sont des classes Java qui une fois déployées dans un conteneur (par exemple JEE) seront publiées comme web service.

    Seulement à ce moment, tu pourras récupérer un WSDL (un fichier XML) et tu pourras alors l’utiliser comme il est décrit dans la suite de l’article.

  7. vishal
    20/05/2011 à 16:47 | #7

    bonjour,
    je souhaiterez savoir si vous connaissez un moyen d’exporter les fichiers en automatique vers un répertoire ?

    merci

  8. Philippe Arnod-Prin
    01/06/2011 à 13:32 | #8

    @vishal
    De quel fichier parles-tu ? quel est ton vrai besoin ?

  1. 04/12/2009 à 10:04 | #1