Assertions dans SoapUI : tutoriel sur les scripts, XQuery et les types XPath

Qu'est-ce qu'une assertion ?

L'affirmation signifie l'acte d'affirmer ou de déclarer quelque chose. Il peut également être interprété comme un point de contrôle ou un point de validation.

Une fois qu'une demande est envoyée à un serveur Web, une réponse est reçue. Nous devons valider si la réponse contient les données que nous attendons. Afin de valider la réponse, nous devons utiliser des assertions.

Types d'affirmation

Il existe différentes manières d’affirmer une réponse ; cependant, nous nous concentrerons sur les types d'assertions SoapUI couramment utilisés lors de la validation d'une réponse. Vous trouverez ci-dessous ceux disponibles dans la version Open Source de SoapUI.

  1. Contenu de la propriété
  2. Norme de statut de conformité
  3. scénario
  4. Contrat de niveau de service
  5. JMS
  6. Sécurité
Types d'assertions dans SoapUI
Types d'assertions dans SoapUI

Outre celles répertoriées ci-dessus, la version PRO dispose également d'une assertion JDBC intégrée grâce à laquelle nous pouvons affirmer si le service Web a correctement mis à jour la base de données.

CONTIENT UNE ASSERTION

Recherche l'existence de la chaîne spécifiée. Il prend également en charge les expressions régulières.

Nous continuerons avec le même exemple du tutoriel précédent avec une requête WSDL comme http://www.dneonline.com/calculator.asmx.

Étape 1: Par défaut, il n'y a aucune assertion.

  • Le nombre d'assertions est affiché dans l'onglet Assertions.
  • Pour ajouter une nouvelle assertion, cliquez sur le bouton « Ajouter une nouvelle assertion ».

Contient une assertion

Étape 2: Maintenant,

  1. Sélectionnez la catégorie d'assertion.
  2. Sélectionnez le type d'assertion.
  3. Cliquez sur « Ajouter »

Contient une assertion

Étape 3: Vérifions si la chaîne '46' existe dans la réponse. Cliquez sur OK'

Remarque : Nous pouvons également ignorer la casse et ajouter une expression régulière.

Contient une assertion

Étape 4: Lors de son ajout, l'assertion est immédiatement exécutée et indique si VALIDE ou INVALIDE.

Contient une assertion

Étape 5: Maintenant, disons que nous modifions le contenu de « Contient une assertion dans SoapUI » en « 47 » et voyons ce qui se passe.

Contient une assertion

Étape 6: L'assertion est exécutée et le résultat est envoyé à l'utilisateur. Puisque nous n'avons pas la chaîne « 47 » dans la réponse, l'assertion a échoué.

Contient une assertion

NE CONTIENT PAS D'ASSERTION

Recherche la non-existence de la chaîne spécifiée. Il prend également en charge les expressions régulières.

Étape 1: Maintenant, après avoir cliqué sur le bouton « Ajouter de nouvelles assertions »,

  1. Sélectionnez la catégorie d'assertion.
  2. Sélectionnez le type d'assertion – Dans ce cas, « NE contient PAS »
  3. Cliquez sur « Ajouter »

Ne contient pas d'assertion

Étape 2: Vérifions si la chaîne 'intA' existe dans la réponse. Entrez la chaîne « FromCurrency » et cliquez sur « OK ».

Ne contient pas d'assertion

Étape 3: Dès qu'une assertion est ajoutée, elle s'exécute et affiche le résultat. Jusqu'à présent, nous avons ajouté deux assertions. Les deux assertions sont donc exécutées et affichées le résultat.

Ne contient pas d'assertion

Étape 4: Modifions maintenant le contenu de l'assertion « Ne contient pas » et voyons ce qui se passe. Nous vérifierons la non-existence de la chaîne « AddResult ».

Ne contient pas d'assertion

Étape 5: La chaîne « AddResult » est en fait présente dans la réponse, par conséquent l'assertion « NOT Contains » échouera comme indiqué ci-dessous.

Ne contient pas d'assertion

ASSERTION DE CORRESPONDANCE XPATH

Utilisations XPath expression pour sélectionner le nœud cible et ses valeurs. XPath, est un langage de requête XML permettant de sélectionner des nœuds à partir d'un document XML.

Étape 1: Maintenant, après avoir cliqué sur le bouton « Ajouter de nouvelles assertions »,

  1. Sélectionnez la catégorie d'assertion.
  2. Sélectionnez le type d'assertion – Dans ce cas, « XPath Match »
  3. Cliquez sur « Ajouter »

Assertion de correspondance XPath

Étape 2: La fenêtre Ajouter XPath s'ouvre.

Avant d'ajouter SoapUI XPath, nous devons déclarer le NameSpace. Un espace de noms XML est une collection de noms, identifiés par une référence URI (Uniform Resource Identifier), qui sont utilisés dans les documents XML comme noms d'éléments et d'attributs. La même chose est utilisée dans l’assertion XPath SOAP UI.

Pour déclarer un espace de noms XML, il nous suffit de cliquer sur le bouton « Déclarer » qui ferait le travail à notre place, sinon nous pouvons également déclarer manuellement un espace de noms nous-mêmes.

Après avoir déclaré l'espace de noms, nous devons faire référence au XPath en utilisant l'espace de noms créé.

En cliquant sur le bouton « Déclarer », deux espaces de noms apparaîtront car nous avons deux URI. L’un d’eux est l’URL du schéma et l’autre correspond à l’URL réelle du service Web. Nous devons utiliser l'espace de noms réel où se trouve le service Web et NON l'espace de noms du schéma lors du référencement de XPath.

Assertion de correspondance XPath

déclarer l'espace de noms soap='http://schemas.xmlsoap.org/soap/envelope/';

déclarer l'espace de noms ns1='http://tempuri.org/';

Assertion de correspondance XPath

Étape 3: Nous devons maintenant saisir le XPath du nœud XML que nous devons valider.

//ns1:AddResult Nous donne la valeur du nœud compris entre & et ns1 correspond à l'espace de noms déclaré qui pointe vers 'http://tempuri.org/'

Après avoir entré le XML, nous devons cliquer sur « Sélectionner à partir du courant » afin que la valeur de la réponse actuelle soit récupérée pour une comparaison ultérieure.

Assertion de correspondance XPath

Étape 4: Jusqu'à présent,

  1. Après avoir déclaré les espaces de noms, nous sommes entrés dans le nœud XPath du XML que nous devons valider.
  2. Nous devons cliquer sur « Sélectionner à partir du courant » pour faire de la valeur actuelle la valeur attendue.
  3. La valeur actuelle est affichée à l'utilisateur et nous pouvons la modifier si nécessaire.
  4. Cliquez sur « Enregistrer ».

Assertion de correspondance XPath

Étape 5: L'assertion ajoutée dans SoapUI sera affichée comme indiqué ci-dessous.

Assertion de correspondance XPath

Assertions de script

Cette technique d'assertion est la plus utilisée car elle est extrêmement difficile à gérer et à maintenir des centaines d'assertions.

SOAP UI utilise soit Groovy Script ou Javascénario pour les assertions de script. La technique de script est adoptée pour développer un cadre de test SOAP. Les assertions de script sont utilisées dans les circonstances suivantes.

Les scripts permettent à l'utilisateur d'effectuer certaines opérations avant et après l'exécution d'un TestCase en utilisant respectivement les méthodes de configuration et de démontage. La configuration est une procédure qui est exécutée avant l'exécution d'une méthode particulière (exemple – Création d'objet et initialisation), tandis que le démontage est une procédure qui est exécutée après l'exécution de la méthode (par exemple : destruction d'objets et nettoyage). Cette fonctionnalité n'est pas disponible dans les autres types d'assertions et ne peut être réalisée que via le codage.

Il permet aux utilisateurs d'ouvrir/fermer un projet, afin d'initialiser ou de nettoyer les paramètres liés au projet et également de travailler avec des variables environnementales, ce qui est très utile lors de la création de scripts.

Cela nous aide à affirmer un contenu de réponse dynamique.

Les assertions de script sont utilisées pour créer des assertions définies par l'utilisateur qui ne sont PAS prédéfinies par l'interface utilisateur SOAP.

Pour démontrer l'assertion de script dans SoapUI, nous utiliserons la calculatrice WSDL, le cas de test « Ajouter » que nous avions créé précédemment.

Étape 1: Les étapes pour ajouter un script groovy sont les mêmes que celles des autres assertions, sauf que l'assertion n'est pas prédéfinie. Il s'agit plutôt d'une assertion définie par l'utilisateur qui offre de plus grandes flexibilités que celles intégrées.

Sélectionnez l'étape de test à laquelle l'assertion doit être ajoutée.

Assertions de script

Cliquez sur le bouton « Ajouter une assertion » comme indiqué ci-dessous.

Assertions de script

Étape 2: Sélectionnez maintenant la catégorie Assertion.

  1. Dans ce cas, il s'agit de Script.
  2. Sélectionnez SoapUI Script Assertion et aucun sous-type ne lui est associé.
  3. Cliquez sur « Ajouter ».

Assertions de script

Étape 3: La boîte de dialogue de script s'ouvre et l'utilisateur pourra écrire un script défini par l'utilisateur pour valider la réponse XML.

Assertions de script

Étape 4: Écrivons maintenant un script groovy pour valider le taux de conversion. Le script est joint ci-dessous avec les commentaires intégrés. Il est recommandé d'avoir des connaissances sur Java Scénario ou Groovy Script avant d’essayer d’écrire votre propre script.

//Define Groovy Utils and holder for validating the XML reponse content
def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder(messageExchange.responseContent)

//Define the NameSpace
holder.namespaces["ns1"] = "http://tempuri.org/"

//Get the Value of the Node 'AddResult' and assign to a variable
def addResult = holder.getNodeValue("//ns1:AddResult")

//print the value of the result in the Output panel
log.info "The result value for integers is " + addResult

//Comparing the value to print 'Pass' or 'Fail'
if(addResult=="46")
{ log.info "Pass" }
else
{ log.info "fail"}
  1. Cliquez sur le bouton « Exécuter » pour déclencher l'exécution.
  2. La sortie du script est affichée dans le volet Sortie. Il a imprimé à la fois la valeur de conversion ainsi que le résultat final (réussite ou échec).
  3. Les informations affichées indiquent « Assertion de script réussie ». Cliquez sur OK.

Remarque : La fenêtre contextuelle d'information finale s'affichera toujours avec le message « Assertion de script réussie » tant que le script est syntaxiquement correct. Cela n'a aucune corrélation avec votre affirmation dans le script.

Assertions de script

cliquez sur OK

Étape 5: Désormais, l'onglet Assertion affiche toutes les assertions que nous avions ajoutées pour cette suite de tests avec le statut de chacune d'entre elles.

Assertions de script

Étape 6: Maintenant

  1. Sélectionnez la suite de tests dans l'arborescence du navigateur
  2. Cliquez sur le bouton « Exécuter »
  3. Les résultats seraient affichés pour l’ensemble de la suite de tests.

Assertions de script

Assertion de correspondance Xquery

Il utilise une expression Xquery pour sélectionner le contenu de la propriété cible. Nous avons besoin d'un XML de réponse beaucoup plus volumineux afin de mieux comprendre l'assertion XQuery dans SoapUI. Importons un autre WSDL comme indiqué ci-dessous : http://www.webservicex.net/medicareSupplier.asmx?WSDL

Étape 1: Effectuez un clic droit sur le projet existant et sélectionnez 'Ajouter WSDL'.

Assertion de correspondance Xquery

Étape 2: Effectuez un clic droit sur le projet existant et sélectionnez 'Ajouter WSDL'. Laissez les autres options par défaut et cliquez sur le bouton « OK ».

Assertion de correspondance Xquery

Étape 3: Toutes les opérations sont répertoriées comme indiqué ci-dessous.

Assertion de correspondance Xquery

Étape 4: Ajoutons maintenant un Cas de test au sein de la même suite de tests que nous avions créée pour Contrôle de qualité le convertisseur de devises.

Assertion de correspondance Xquery

Étape 5: Entrez le nom du scénario de test et cliquez sur le bouton « OK »

Assertion de correspondance Xquery

Étape 6: Le scénario de test est créé comme indiqué ci-dessous.

Assertion de correspondance Xquery

Étape 7: Ajouter
une nouvelle étape de test de type 'Soap Test Request' comme indiqué ci-dessous.

Assertion de correspondance Xquery

Étape 8: Saisissez le nom de l'étape de test. Disons – Supplier_by_City, ce qui serait plus significatif. Cliquez sur « OK ».

Assertion de correspondance Xquery

Étape 9: Sélectionnez le Operation que nous souhaitons valider. Dans ce cas, il s'agit de « MedicareSupplierSoap -> GetSupplierByCity ». Cliquez sur « OK ».

Assertion de correspondance Xquery

Étape 10: Entrez le nom du scénario de test et cliquez sur « OK ».

Assertion de correspondance Xquery

Étape 11: Le plan XML de la demande s'affichera comme indiqué ci-dessous.

Assertion de correspondance Xquery

Étape 12: Trouvons maintenant toutes les informations sur les fournisseurs de la ville de « New York ».

Pour ce faire, ajoutez les lignes suivantes à votre code.

<GetSupplierByCity xmlns="http://www.webservicex.net/">

<City>New York</City>

</GetSupplierByCity>

WSDL dans l'URL ci-dessous – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Assertion de correspondance Xquery

Étape 13: Lors de l'exécution du test, nous recevons la réponse ci-dessous

Assertion de correspondance Xquery

Étape 14: Disons que nous devons valider tous les numéros de fournisseur. Nous ne pouvons pas utiliser XPath Assertion car nous avons besoin de centaines d’assertions XPath. L’utilisation de XQuery est donc inévitable dans ce cas.

XQuery Assertion nous aide à valider un groupe de réponses XML de nature répétitive.

Assertion de correspondance Xquery

Étape 15: Cliquez maintenant sur 'Ajouter une assertion',

  1. Sélectionnez la « Catégorie d'assertion » – Contenu de la propriété dans ce cas.
  2. Sélectionnez le type d'assertion comme « Assertion XQuery »
  3. Cliquez sur « Ajouter ».

Assertion de correspondance Xquery

Étape 16: Semblable à l'assertion XPath, nous devons déclarer l'espace de noms.

  1. Cliquez sur le bouton « Déclarer » pour autoriser automatiquement SOAP UI à déclarer l'espace de noms. En cliquant sur le bouton de déclaration, une « POP up » avec le message « déclarez plutôt l'espace de noms à partir du schéma » sera affichée à l'utilisateur. Cliquez sur « Oui » pour procéder comme indiqué ci-dessous.

    Remarque : En cliquant sur « Bouton Déclarer », vous pourriez vous retrouver avec des URL différentes comme déclaration d'espace de noms. Cependant, l'espace de noms d'emplacement du service Web réel est ce qui serait pris en compte pour le codage.

    Assertion de correspondance Xquery

  2. Pour récupérer tous les numéros de fournisseur, nous devons écrire une requête XPath et nous la placerons dans < SupplierNumber> et Mots clés.
  3. Cliquez sur « Sélectionner à partir du courant » qui s'exécutera à partir de la réponse actuelle.
  4. En cliquant sur « Sélectionner parmi les éléments actuels », tous les numéros de fournisseur sont répertoriés.
  5. Cliquez sur « Enregistrer ».
// Namespace declaration
declare namespace soap='http://schemas.xmlsoap.org/soap/envelope/';
declare namespace ns1='http://www.webservicex.net/';
declare namespace x = '';

// Placing the result in Myresult Tags

{
// Iterating through all the supplier number 
for $x in //ns1:GetSupplierByCityResponse/ns1:SupplierDataLists/ns1:SupplierDatas/ns1:SupplierData

//Return all the Supplier number within ‘SupplierNumber’ Tags.
return {data($x/ns1:SupplierNumber)}
}

Assertion de correspondance Xquery

Étape 17: L'assertion XQuery est exécutée et affiche le résultat final dans le panneau « Assertion » comme indiqué ci-dessous. Nous avons maintenant ajouté avec succès une assertion Xquery à l'aide de laquelle nous avons validé toutes les informations sur le numéro du fournisseur. La même chose serait comparée aux valeurs réelles, chaque fois que la demande est envoyée au serveur Web.

Remarque : Les valeurs réelles ne seront pas affichées. Si toutes les valeurs réelles sont identiques à celles des valeurs attendues, alors il affiche VALIDE, sinon il affichera « Échec ».

Assertion de correspondance Xquery

Quand utiliser l’assertion intégrée ?

  • Lorsqu'une réponse est courte, elle peut être validée à l'aide de l'une de ces assertions intégrées.
  • Nous pouvons également utiliser l'assertion intégrée si la réponse envoyée depuis le serveur Web est toujours de nature statique. S'il est dynamique, nous ne pourrons pas l'affirmer à l'aide d'assertions intégrées.
  • Lorsque l'utilisation d'assertions intégrées telles que les assertions Time out et les assertions de sécurité devient inévitable.
  • Les assertions intégrées conviennent assez bien pour une utilisation unique où les tests n'ont pas besoin d'être répétés.

Options d'assertions

Les assertions créées peuvent être mieux contrôlées à l'aide du panneau de contrôle mis en évidence ci-dessous.

Options d'assertions

Les assertions créées permettent aux testeurs de configurer les éléments suivants à partir de la boîte à outils d'assertions.

Option Description

Options d'assertions

L'assertion sélectionnée monte dans l'ordre.

Options d'assertions

L'assertion sélectionnée descend dans l'ordre.

Options d'assertions

Supprime l'assertion sélectionnée

Options d'assertions

Reconfigurez/modifiez l'assertion sélectionnée.
  • Vous trouverez ci-dessous les fonctionnalités disponibles exclusivement dans la version PRO de SOAP UI. La version PRO nous aide également à regrouper les assertions afin que nous puissions ajouter une couche de validation supplémentaire aux assertions créées.
  • ET : Toutes les assertions sont évaluées comme assertion VALIDE, ce qui entraînera une condition de groupe RÉUSSI. OU : Au moins une des assertions du groupe doit être VALIDE afin d'affirmer une condition de groupe RÉUSSI.

  • La version Pro permet également Clonage d'assertions: Cette option permet aux testeurs d'autoriser la copie d'une assertion vers une étape de test différente dans le même projet ou dans un projet différent.
  • Désactiver/Activer les assertions : cette option permet de désactiver ou d'activer toute assertion groupée ou non groupée. Si une assertion est désactivée, elle est grisée et lorsqu'un scénario de test est exécuté, les assertions désactivées ne seront pas exécutées.
  • Dissocier les assertions : toutes les assertions groupées peuvent être dissociées si les testeurs décident de le faire.

Liste complète des méthodes disponibles dans différents types d'assertions

Mécanisme d'affirmation

Description

CONTENU DE LA PROPRIÉTÉ
Inclus Recherche l'existence de la chaîne spécifiée. Il prend également en charge les expressions régulières.
Ne contient pas Recherche la non-existence de la chaîne spécifiée. Il prend également en charge les expressions régulières.
Correspondance XPath Utilise l'expression XPath pour sélectionner le nœud cible et ses valeurs.
Correspondance XQuery Utilise une expression Xquery pour sélectionner le contenu de la propriété cible.
Conformité, statut, normes
HTTP Télécharger toutes les ressources Valide le document HTML après le téléchargement et il est valable pour toute propriété contenant du HTML.
Codes d'état HTTP invalides Vérifie si la réponse HTML contient un code d'état qui ne figure pas dans la liste des codes définis.
Pas de défaut SOAP Vérifie si le dernier message reçu n'est pas une erreur SOAP. Il est très évident que cela ne s'applique qu'aux étapes de test SOAP.
Conformité au schéma Vérifie si le dernier message reçu est conforme à la définition de schéma standard WSDL ou WADL. Convient aux étapes de test SOAP et REST.
Défaut SAVON Vérifie si le dernier message reçu est une erreur SOAP. C'est l'inverse des assertions de faute « PAS SOAP ».
Réponse SOAP Vérifie si la dernière réponse reçue est une réponse SOAP valide et est valable uniquement pour les étapes de demande de test SOAP.
Codes d'état HTTP valides Vérifie si la réponse HTML contient un code d'état qui figure dans la liste des codes définis. C'est l'inverse de l'assertion « Codes d'état HTTP invalides ».
Demande d'adressage WS Vérifie si la dernière demande reçue contient les en-têtes WS-Addressing appropriés.
Réponse d'adressage WS Vérifie si la dernière réponse reçue contient les en-têtes WS-Addressing appropriés.
Statut de sécurité WS Valide si le dernier message reçu contient des en-têtes WS-Security valides et est valable uniquement pour les requêtes SOAP.
scénario
Assertion de script Permet aux utilisateurs d'exécuter un script personnalisé pour effectuer des validations définies par l'utilisateur.
Contrat de niveau de service
Réponse SLA Valide si le temps de réponse de la dernière réponse reçue était dans la limite définie.
JMS
Statut JMS Vérifie si la requête JMS de l'étape de test s'est exécutée avec succès et est valable pour les étapes de test avec un point de terminaison JMS.
Expiration du délai JMS Vérifie si la réponse JMS d'une étape de test n'a pas pris plus de temps que la durée spécifiée.
Sécurité
Exposition à des informations sensibles Vérifie si le message de réponse n'expose pas d'informations sensibles sur le système cible. Nous pouvons utiliser cette assertion pour les étapes de test REST, SOAP et HTTP.

TÉLÉCHARGEZ LE PROJET SOAPUI CONTENANT LES ASSERTIONS CI-DESSUS

Erreurs courantes et dépannage

Utilisez le bon espace de noms. L'espace Nom doit être l'URL où se trouve le service Web.

Si une erreur est générée lors du développement d'une assertion de script, utilisez 'log.info' pour imprimer le contenu des variables

Si vous n'obtenez pas le résultat souhaité, vérifiez si une entrée valide est transmise dans la requête.

Par exemple, dans le convertisseur de devises, si vous saisissez « intA » sous la forme « x » qui n'est pas un nombre entier, la sortie renvoie un code d'erreur sous la forme « SOAP-Client », ce qui signifie que le problème vient du paramètre transmis par le côté client.

Erreurs courantes et dépannage

Erreurs courantes et dépannage

Assurez-vous d'utiliser la syntaxe correcte lors de l'utilisation des assertions XPATH et XQuery. Vous ne devez PAS utiliser de point(.) au lieu de deux points(:) lorsque vous utilisez l'assertion ci-dessus. La syntaxe est //namespace:Tagname et NON //namespace.tagname. Ce faisant, vous pourriez finir par avoir un message indiquant « AUCUNE correspondance dans la réponse actuelle » même si le nom de la balise est correct.

Erreurs courantes et dépannage