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 :
Enregistrer les WSDL dans des fichiers XML pour obtenir les fichiers NewWebService1.xml et NewWebService2.xml.
Créer un nouveau projet dans SoapUI
Nommer le nouveau projet
Ajouter les WSDL à tester
Ajout du premier WSDL
« 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 :
On crée la TestSuite qui va contenir tous nos tests
On ajoute un TestCase qui va contenir un scénario de tests
(Il suffira d’ajouter un nouveau TestCase pour un autre scénario)
On obtient l’arborescence suivante :
Nous allons maintenant ajouter toutes les étapes de notre scénario de test
Premièrement, on va tester la méthode « Hello » du Web Service n°1
Il est possible de préconfigurer certaines assertions dès la création
On configure la valeur « Toto » dans le SAOP qui sera envoyé pour ce test
On ajoute une assertion de type « Contains » car on sait que la réponse devra contenir la chaîne de caractères : « Hello Toto »
On peut dérouler le test qui vient d’être créé
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
On va tester que la méthode renvoie bien une exception quand on passe la valeur « -1 » en paramètre
![]()
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
![]()
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
Simple et efficace
Dans des prochains articles je vous expliquerai comment relancer et automatiser ces tests et comment faire des tests de charges.
simple et pratique
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;
} »
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
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).
@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.
@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.
bonjour,
je souhaiterez savoir si vous connaissez un moyen d’exporter les fichiers en automatique vers un répertoire ?
merci
@vishal
De quel fichier parles-tu ? quel est ton vrai besoin ?