Beweringen in SoapUI: zelfstudie over scripts, XQuery, XPath-typen

Wat is een bewering?

Bewering betekent een handeling waarbij iets wordt bevestigd of verklaard. Het kan ook worden geïnterpreteerd als een controlepunt of een validatiepunt.

Zodra een verzoek naar een webserver wordt verzonden, wordt er een antwoord ontvangen. We moeten valideren of het antwoord de gegevens bevat die we verwachten. Om het antwoord te valideren, moeten we beweringen gebruiken.

Soorten beweringen

Er zijn verschillende manieren om een ​​antwoord te formuleren; we zullen ons echter concentreren op de veelgebruikte typen SoapUI-beweringen tijdens het valideren van een antwoord. Hieronder staan ​​​​degene die beschikbaar zijn in de Open Source-versie van SoapUI.

  1. Eigenschapinhoud
  2. Nalevingsstatus Standaard
  3. Script
  4. SLA
  5. JMS
  6. Security
Soorten beweringen in SoapUI
Soorten beweringen in SoapUI

Afgezien van de hierboven genoemde, heeft de PRO-versie ook een ingebouwde JDBC-bevestiging waarmee we kunnen bevestigen of de webservice de database correct heeft bijgewerkt.

BEVAT BEWEGING

Zoekt naar het bestaan ​​van de opgegeven tekenreeks. Het ondersteunt ook reguliere expressie.

We gaan verder met hetzelfde voorbeeld uit de vorige tutorial met WSDL-verzoek als http://www.dneonline.com/calculator.asmx.

Stap 1: Standaard zijn er geen beweringen.

  • Het aantal beweringen wordt weergegeven op het tabblad Beweringen.
  • Om een ​​nieuwe bewering toe te voegen, klikt u op de knop 'Nieuwe bewering toevoegen'.

Bevat bewering

Stap 2: Nu,

  1. Selecteer de beweringcategorie.
  2. Selecteer het Beweringstype.
  3. Klik op 'Toevoegen'

Bevat bewering

Stap 3: Laten we valideren of de string '46' in het antwoord voorkomt. Klik OK'

Opmerking: we kunnen hoofdletters en kleine letters ook negeren en reguliere expressies toevoegen.

Bevat bewering

Stap 4: Na het toevoegen ervan wordt de bewering onmiddellijk uitgevoerd en wordt weergegeven of GELDIG of ONGELDIG is.

Bevat bewering

Stap 5: Laten we nu zeggen dat we de inhoud van 'Bevat bewering in SoapUI' wijzigen in '47' en kijken wat er gebeurt.

Bevat bewering

Stap 6: De Assertion wordt uitgevoerd en het resultaat wordt naar de gebruiker gestuurd. Omdat we de tekenreeks '47' niet in het antwoord hebben, is de bewering mislukt.

Bevat bewering

BEVAT GEEN BEWEGING

Zoekt naar het niet bestaan ​​van de opgegeven tekenreeks. Het ondersteunt ook reguliere expressie.

Stap 1: Nadat u nu op de knop 'nieuwe beweringen toevoegen' heeft geklikt,

  1. Selecteer de beweringcategorie.
  2. Selecteer het beweringstype – in dit geval 'NIET bevat'
  3. Klik op 'Toevoegen'

Bevat geen bewering

Stap 2: Laten we valideren of de string 'intA' in het antwoord voorkomt. Voer de tekenreeks 'FromCurrency' in en klik op 'OK'

Bevat geen bewering

Stap 3: Zodra een bewering wordt toegevoegd, wordt deze uitgevoerd en wordt het resultaat weergegeven. Tot nu toe hebben we twee beweringen toegevoegd, dus beide beweringen worden uitgevoerd en het resultaat wordt weergegeven.

Bevat geen bewering

Stap 4: Laten we nu de inhoud van de 'Niet bevat bewering' wijzigen en kijken wat er gebeurt. We zullen controleren of de string “AddResult” niet bestaat.

Bevat geen bewering

Stap 5: De tekenreeks 'AddResult' is feitelijk aanwezig in het antwoord, daarom zal de bewering 'NIET bevat' mislukken, zoals hieronder wordt weergegeven.

Bevat geen bewering

XPATH-WEDSTRIJDBEWEGING

u gebruikt XPath expressie om het doelknooppunt en zijn waarden te selecteren. XPath is een XML-querytaal voor het selecteren van knooppunten uit een XML-document.

Stap 1: Nadat u nu op de knop 'Nieuwe beweringen toevoegen' heeft geklikt,

  1. Selecteer de beweringcategorie.
  2. Selecteer het Assertion Type – In dit geval 'XPath Match'
  3. Klik op 'Toevoegen'

XPath-matchverklaring

Stap 2: XPath toevoegen Het venster wordt geopend.

Voordat we SoapUI XPath toevoegen, moeten we de NameSpace declareren. Een XML-naamruimte is een verzameling namen, geïdentificeerd door een Uniform Resource Identifier (URI)-referentie, die in XML-documenten worden gebruikt als element- en attribuutnamen. Hetzelfde wordt gebruikt in SOAP UI XPath Assertion.

Voor het declareren van XML-naamruimte hoeven we alleen maar op de knop 'Declareren' te klikken, wat voor ons het werk zou doen. Anders kunnen we een naamruimte ook zelf handmatig declareren.

Nadat we de naamruimte hebben gedeclareerd, moeten we naar XPath verwijzen met behulp van de gemaakte naamruimte.

Als u op de knop 'Declareren' klikt, verschijnen er twee naamruimten omdat we twee URI's hebben. Eén daarvan is de schema-URL en de andere komt overeen met de daadwerkelijke webservice-URL. We moeten de daadwerkelijke naamruimte gebruiken waar de webservice zich bevindt en NIET de schemanaamruimte terwijl we naar XPath verwijzen.

XPath-matchverklaring

declareer naamruimte soap='http://schemas.xmlsoap.org/soap/envelope/';

declareer naamruimte ns1='http://tempuri.org/';

XPath-matchverklaring

Stap 3: Nu moeten we het XPath van het XML-knooppunt invoeren dat we moeten valideren.

//ns1:AddResult Geeft ons de waarde van het knooppunt ertussen & en ns1 komt overeen met de gedeclareerde naamruimte die verwijst naar 'http://tempuri.org/'

Na het invoeren van de XML moeten we op 'Selecteren uit huidig' klikken, zodat de waarde van het huidige antwoord wordt opgehaald voor toekomstige vergelijking.

XPath-matchverklaring

Stap 4: Tot dusver

  1. Nadat we de naamruimten hebben gedeclareerd, hebben we het XPath van het XML-knooppunt ingevoerd dat we moeten valideren.
  2. We moeten op 'Selecteren uit huidige' klikken om de huidige waarde als de verwachte waarde te maken.
  3. De huidige waarde wordt aan de gebruiker getoond en kunnen we indien nodig wijzigen.
  4. Klik op 'Opslaan'.

XPath-matchverklaring

Stap 5: De toegevoegde bewering in SoapUI wordt weergegeven zoals hieronder weergegeven.

XPath-matchverklaring

Scriptie van beweringen

Deze Assertie-techniek is de meest gebruikte techniek, omdat het uiterst moeilijk is om honderden beweringen te beheren en te onderhouden.

SOAP UI maakt gebruik van Groovy Scripting of JavaScript voor het scripten van beweringen. De scripttechniek wordt toegepast voor het ontwikkelen van een raamwerk voor het testen van SOAP. Scriptbeweringen worden gebruikt onder following situatie.

Met scripting kan de gebruiker een aantal bewerkingen uitvoeren voor en na het uitvoeren van een TestCase met behulp van respectievelijk de opzet- en demontagemethoden. Set-up is een procedure die wordt uitgevoerd voordat een bepaalde methode wordt uitgevoerd (bijvoorbeeld: het maken en initialiseren van objecten), terwijl afbreken een procedure is die wordt uitgevoerd na het uitvoeren van de methode (bijvoorbeeld: objecten vernietigen en opruimen). Deze functie is niet beschikbaar in andere typen beweringen en kan alleen worden uitgevoerd via codering.

Het stelt gebruikers in staat een project te openen/sluiten, om projectgerelateerde instellingen te initialiseren of op te schonen en ook om met omgevingsvariabelen te werken, wat erg handig is tijdens het scripten.

Het helpt ons bij het beweren van een dynamische responsinhoud.

Scriptbeweringen worden gebruikt voor het maken van door de gebruiker gedefinieerde beweringen die NIET vooraf zijn gedefinieerd door de SOAP UI.

Voor het demonstreren van scriptbewering in SoapUI zullen we gebruik maken van rekenmachine WSDL, de testcase 'Add' die we eerder hadden gemaakt.

Stap 1: De stappen voor het toevoegen van groovy script zijn hetzelfde als die voor andere beweringen, behalve dat de bewering niet vooraf gedefinieerd is. In plaats daarvan is het een door de gebruiker gedefinieerde bewering die grotere flexibiliteit biedt dan de ingebouwde.

Selecteer de teststap waaraan de bewering moet worden toegevoegd.

Scriptie van beweringen

Klik op de knop 'Bewering toevoegen', zoals hieronder weergegeven.

Scriptie van beweringen

Stap 2: Selecteer nu de categorie Assertie.

  1. In dit geval is dat Script.
  2. Selecteer SoapUI Script Assertion en er zijn geen subtypen aan gekoppeld.
  3. Klik op 'Toevoegen'.

Scriptie van beweringen

Stap 3: Het dialoogvenster Scripting wordt geopend, waar de gebruiker een door de gebruiker gedefinieerd script kan schrijven om de antwoord-XML te valideren.

Scriptie van beweringen

Stap 4: Laten we nu een hip script schrijven om de conversieratio te valideren. Het script is hieronder bijgevoegd met de opmerkingen ingesloten. Het is aan te raden om kennis hierover te hebben Java Script of Groovy Script voordat u probeert uw eigen script te schrijven.

//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. Klik op de knop 'Uitvoeren' om de uitvoering te activeren.
  2. De uitvoer van het script wordt weergegeven in het deelvenster Uitvoer. Het heeft zowel de conversiewaarde als het eindresultaat (geslaagd of mislukt) afgedrukt
  3. De informatie wordt weergegeven dat 'Script Assertion Passed' is. Klik OK.

Opmerking: De laatste pop-up met informatie wordt altijd weergegeven met het bericht 'Script Assertion Passed', zolang het script syntactisch correct is. Het heeft geen correlatie met uw bewering in het script.

Scriptie van beweringen

klik op OK

Stap 5: Nu geeft het tabblad beweringen alle beweringen weer die we voor deze testsuite hebben toegevoegd, met de status tegen elk daarvan.

Scriptie van beweringen

Stap 6: Nu

  1. Selecteer de Testsuite in de Navigator-structuur
  2. Klik op de knop 'Uitvoeren'
  3. De resultaten zouden voor de gehele testsuite worden weergegeven.

Scriptie van beweringen

XQuery Match-bevestiging

Het gebruikt een Xquery-expressie om inhoud uit de doeleigenschap te selecteren. We hebben een veel grotere antwoord-XML nodig om de XQuery-bewering in SoapUI beter te begrijpen. Laten we nog een andere WSDL importeren, zoals hieronder weergegeven: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Stap 1: Klik met de rechtermuisknop op het bestaande project en selecteer 'WSDL toevoegen'.

XQuery Match-bevestiging

Stap 2: Klik met de rechtermuisknop op het bestaande project en selecteer 'WSDL toevoegen'. Laat andere opties standaard staan ​​en klik op de knop 'OK'.

XQuery Match-bevestiging

Stap 3: Alle bewerkingen worden weergegeven zoals hieronder weergegeven.

XQuery Match-bevestiging

Stap 4: Laten we nu een toevoegen Testgeval binnen dezelfde testsuite waarvoor we hadden gemaakt Testen de valuta-omzetter.

XQuery Match-bevestiging

Stap 5: Voer de naam van de testcase in en klik op de knop 'OK'

XQuery Match-bevestiging

Stap 6: De testcase wordt gemaakt zoals hieronder weergegeven.

XQuery Match-bevestiging

Stap 7: Toevoegen
een nieuwe teststap van het type 'Soap Test Request' zoals hieronder weergegeven.

XQuery Match-bevestiging

Stap 8: Voer de naam van de teststap in. Laten we zeggen – Supplier_by_City, wat zinvoller zou zijn. Klik op 'OK'.

XQuery Match-bevestiging

Stap 9: Selecteer de bewerking die we willen valideren. In dit geval is het ‘MedicareSupplierSoap -> GetSupplierByCity'. Klik OK'.

XQuery Match-bevestiging

Stap 10: Voer de naam van de testcase in en klik op 'OK'.

XQuery Match-bevestiging

Stap 11: Het XML-overzicht van het verzoek wordt weergegeven zoals hieronder weergegeven.

XQuery Match-bevestiging

Stap 12: Laten we nu alle leveranciersinformatie voor de stad 'New York' vinden.

Voeg hiervoor het volgende toewing regels naar uw code.

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

<City>New York</City>

</GetSupplierByCity>

WSDL in de onderstaande URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

XQuery Match-bevestiging

Stap 13: Bij het uitvoeren van de test ontvangen wij onderstaande reactie

XQuery Match-bevestiging

Stap 14: Laten we zeggen dat we het hele leveranciersnummer moeten valideren. We kunnen XPath Assertion niet gebruiken omdat we honderden XPath Assertion nodig hebben. Daarom is het gebruik van XQuery in dit geval onvermijdelijk.

XQuery Assertion helpt ons een groep XML-antwoorden te valideren die repetitief van aard zijn.

XQuery Match-bevestiging

Stap 15: Klik nu op 'Een bewering toevoegen',

  1. Selecteer in dit geval de 'Beweringscategorie' – Eigenschapsinhoud.
  2. Selecteer het bevestigingstype als 'XQuery-bevestiging'
  3. Klik op 'Toevoegen'.

XQuery Match-bevestiging

Stap 16: Net als bij XPath Assertion moeten we de naamruimte declareren.

  1. Klik op de knop 'Declareren' om SOAP UI automatisch toe te staan ​​de naamruimte te declareren. Wanneer u op de knop declareren klikt, wordt een 'POP-up' met het bericht 'in plaats daarvan naamruimte declareren vanuit schema' aan de gebruiker weergegeven. Klik op 'Ja' om verder te gaan zoals hieronder weergegeven.

    Opmerking: Als u op de knop 'Declareren' klikt, kunt u verschillende URL's als naamruimtedeclaratie krijgen, maar de daadwerkelijke naamruimte van de webservicelocatie komt in aanmerking voor codering.

    XQuery Match-bevestiging

  2. Om het volledige leveranciersnummer op te halen, moeten we een XPath-query schrijven en deze plaatsen in <Leveranciernummer> en Labels.
  3. Klik op 'Selecteer uit de huidige' die wordt uitgevoerd vanuit het huidige antwoord.
  4. Wanneer u op 'Selecteer uit de huidige' klikt, worden alle leveranciersnummers weergegeven.
  5. Klik op 'Opslaan'.
// 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)}
}

XQuery Match-bevestiging

Stap 17: XQuery Assertion wordt uitgevoerd en geeft het eindresultaat weer in het 'Assertion'-paneel, zoals hieronder weergegeven. Nu hebben we met succes een Xquery-verklaring toegevoegd waarmee we alle leveranciersnummerinformatie hebben gevalideerd. Hetzelfde zou worden vergeleken met de werkelijke waarden, elke keer dat het verzoek naar de webserver wordt verzonden.

Let op: De werkelijke waarden worden niet weergegeven. Als alle werkelijke waarden hetzelfde zijn als die van de verwachte waarden, wordt GELDIG weergegeven, anders wordt 'Mislukt' weergegeven.

XQuery Match-bevestiging

Wanneer gebruik je ingebouwde assertiviteit?

  • Wanneer een antwoord zo kort is dat het kan worden gevalideerd met behulp van een van die ingebouwde beweringen.
  • We kunnen Inbuilt Assertion ook gebruiken als het antwoord dat vanaf de webserver wordt verzonden altijd statisch van aard is. Als het dynamisch is, kunnen we het niet beweren met behulp van ingebouwde beweringen.
  • Wanneer het gebruik van ingebouwde beweringen, zoals time-outbeweringen en beveiligingsbeweringen, onvermijdelijk wordt.
  • Ingebouwde beweringen zijn redelijk goed geschikt voor eenmalig gebruik waarbij tests niet herhaald hoeven te worden.

Beweringen Opties

De gemaakte beweringen kunnen het beste worden beheerd met behulp van het configuratiescherm dat hieronder wordt gemarkeerd.

Beweringen Opties

Met de gemaakte beweringen kunnen testers following dingen uit de beweringentoolbox.

Keuze Omschrijving

Beweringen Opties

De geselecteerde Assertie schuift omhoog in de volgorde.

Beweringen Opties

De geselecteerde bewering wordt in de volgorde omlaag verplaatst.

Beweringen Opties

Verwijdert de geselecteerde bewering

Beweringen Opties

Configureer/bewerk de geselecteerde bewering opnieuw.
  • Hieronder staan ​​de functies die exclusief beschikbaar zijn in de PRO-versie van SOAP UI. De PRO-versie helpt ons ook om beweringen te groeperen, zodat we nog een validatielaag kunnen toevoegen aan de gemaakte beweringen.
  • AND: Alle beweringen worden geëvalueerd als GELDIGE bewering, wat zal resulteren in de groepsvoorwaarde GESLAAGD. OF: Ten minste één van de beweringen binnen de groep moet GELDIG zijn om een ​​GESLAAGDE groepsvoorwaarde te kunnen doen gelden.

  • Pro-versie maakt het ook mogelijk Klonen van beweringen: Met deze optie kunnen testers het kopiëren van een bewering naar een andere teststap in hetzelfde of een ander project toestaan.
  • Beweringen in-/uitschakelen: Met deze optie kan elke gegroepeerde of niet-gegroepeerde bewering worden in- of uitgeschakeld. Als een bewering is uitgeschakeld, wordt deze grijs weergegeven en wanneer een testcase wordt uitgevoerd, worden uitgeschakelde beweringen niet uitgevoerd.
  • Degroepeer beweringen: alle gegroepeerde beweringen kunnen worden gedegroepeerd als testers daartoe besluiten.

Volledige lijst met methoden die beschikbaar zijn in verschillende typen beweringen

Bevestigingsmechanisme

Omschrijving

EIGENDOM INHOUD
Bevat Zoekt naar het bestaan ​​van de opgegeven tekenreeks. Het ondersteunt ook reguliere expressie.
Bevat niet Zoekt naar het niet bestaan ​​van de opgegeven tekenreeks. Het ondersteunt ook reguliere expressie.
XPath-wedstrijd Gebruikt de XPath-expressie om het doelknooppunt en de bijbehorende waarden te selecteren.
XQuery-overeenkomst Gebruikt een Xquery-expressie om inhoud uit de doeleigenschap te selecteren.
Naleving, status, normen
HTTP Download alle bronnen Valideert het HTML-document na het downloaden en geldt voor elke eigenschap die HTML bevat.
Ongeldige HTTP-statuscodes Controleert of het HTML-antwoord een statuscode bevat die niet in de lijst met gedefinieerde codes staat.
Geen SOAP-fout Controleert of het laatst ontvangen bericht geen SOAP-fout is. Het is heel duidelijk dat dit alleen van toepassing is op SOAP-teststappen.
Naleving van schema's Controleert of het laatst ontvangen bericht voldoet aan de standaardschemadefinitie van WSDL of WADL. Geldt voor SOAP- en REST-teststappen.
SOAP-fout Controleert of het laatst ontvangen bericht een SOAP-fout is. Het is het omgekeerde van 'NIET SOAP'-foutbeweringen.
SOAP-reactie Controleert of het laatst ontvangen antwoord een geldig SOAP-antwoord is en geldt alleen voor SOAP-testverzoekstappen.
Geldige HTTP-statuscodes Controleert of het HTML-antwoord een statuscode bevat die voorkomt in de lijst met gedefinieerde codes. Het is het omgekeerde van de bewering 'Ongeldige HTTP-statuscodes'.
WS-adresseringsverzoek Controleert of het laatst ontvangen verzoek de juiste WS-Addressing Headers bevat.
WS-adresseringsreactie Controleert of het laatst ontvangen antwoord de juiste WS-Addressing Headers bevat.
WS-beveiligingsstatus Valideert of het laatst ontvangen bericht geldige WS-Security-headers bevat en geldt alleen voor SOAP-verzoeken.
Script
Scriptbevestiging Hiermee kunnen gebruikers een aangepast script uitvoeren om door de gebruiker gedefinieerde validaties uit te voeren.
SLA
Reactie SLA Valideert of de responstijd van het laatst ontvangen antwoord binnen de gedefinieerde limiet lag.
JMS
JMS-status Controleert of het JMS-verzoek van de teststap met succes is uitgevoerd en geldt voor teststappen met een JMS-eindpunt.
JMS-time-out Controleert of de JMS-reactie van een teststap niet langer heeft geduurd dan de opgegeven duur.
Security
Blootstelling aan gevoelige informatie Controleert of het antwoordbericht geen gevoelige informatie over het doelsysteem openbaar maakt. We kunnen deze bewering gebruiken voor REST-, SOAP- en HTTP-teststappen.

DOWNLOAD HET SOAPUI-PROJECT DAT BOVENSTAANDE BEWEGINGEN BEVAT

Veelvoorkomende fouten en probleemoplossing

Gebruik de juiste naamruimte. De naamruimte moet de URL zijn waar de webservice zich bevindt.

Als er een fout optreedt tijdens het ontwikkelen van een scriptbevestiging, gebruik dan 'log.info' om de inhoud van de variabelen af ​​te drukken

als u havenAls u niet de gewenste uitvoer heeft, controleer dan of er een geldige invoer is doorgegeven in het verzoek.

Als u in de valutaconverter bijvoorbeeld de 'intA' invoert als 'x', wat geen geheel getal is, genereert de uitvoer een foutcode als 'SOAP-Client', wat betekent dat het probleem te maken heeft met de parameter die wordt doorgegeven vanuit de valutaconversie. kant van de cliënt.

Veelvoorkomende fouten en probleemoplossing

Veelvoorkomende fouten en probleemoplossing

Zorg ervoor dat u de juiste syntaxis gebruikt wanneer u XPATH- en XQuery-definitie gebruikt. U moet NIET punt(.) gebruiken in plaats van dubbele punt(:) wanneer u de bovenstaande bewering gebruikt. De syntaxis is //naamruimte:Tagnaam en NIET //naamruimte.tagnaam. Als u dit doet, krijgt u mogelijk de melding 'GEEN match in huidig ​​antwoord', ook al is de tagnaam correct.

Veelvoorkomende fouten en probleemoplossing