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.
- Eigenschapinhoud
- Nalevingsstatus Standaard
- Script
- SLA
- JMS
- Security

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'.
Stap 2: Nu,
- Selecteer de beweringcategorie.
- Selecteer het Beweringstype.
- Klik op 'Toevoegen'
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.
Stap 4: Na het toevoegen ervan wordt de bewering onmiddellijk uitgevoerd en wordt weergegeven of GELDIG of ONGELDIG is.
Stap 5: Laten we nu zeggen dat we de inhoud van 'Bevat bewering in SoapUI' wijzigen in '47' en kijken wat er gebeurt.
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 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,
- Selecteer de beweringcategorie.
- Selecteer het beweringstype โ in dit geval 'NIET bevat'
- Klik op 'Toevoegen'
Stap 2: Laten we valideren of de string 'intA' in het antwoord voorkomt. Voer de tekenreeks 'FromCurrency' in en klik op 'OK'
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 weergegeven.
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.
Stap 5: De tekenreeks 'AddResult' is feitelijk aanwezig in het antwoord, daarom zal de bewering 'NIET bevat' mislukken, zoals hieronder wordt weergegeven.
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,
- Selecteer de beweringcategorie.
- Selecteer het Assertion Type โ In dit geval 'XPath Match'
- Klik op 'Toevoegen'
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.
declareer naamruimte soap='http://schemas.xmlsoap.org/soap/envelope/';
declareer naamruimte ns1='http://tempuri.org/';
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.
Stap 4: Tot dusver
- Nadat we de naamruimten hebben gedeclareerd, hebben we het XPath van het XML-knooppunt ingevoerd dat we moeten valideren.
- We moeten op 'Selecteren uit huidige' klikken om de huidige waarde als de verwachte waarde te maken.
- De huidige waarde wordt aan de gebruiker getoond en kunnen we indien nodig wijzigen.
- Klik op 'Opslaan'.
Stap 5: De toegevoegde Assertion in SoapUI wordt weergegeven zoals hieronder weergegeven.
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 gebruikt beide Groovy Scripten of JavaScript voor scripting-asserties. De scripting-techniek wordt gebruikt voor het ontwikkelen van een raamwerk voor het testen van SOAP. Scripting-asserties worden onder de volgende omstandigheden gebruikt.
Scripting stelt de gebruiker in staat om een โโaantal handelingen uit te voeren voor en na het uitvoeren van een TestCase met behulp van respectievelijk set up en tear down methoden. Set up is een procedure die wordt uitgevoerd voor het uitvoeren van een bepaalde methode (bijvoorbeeld: Object creation en Initialization), terwijl tear down een procedure is die wordt uitgevoerd na het uitvoeren van de methode (bijvoorbeeld: Objecten vernietigen en opschonen). Deze functie is niet beschikbaar in andere Assertion-typen 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.
Klik op de knop 'Bewering toevoegen', zoals hieronder weergegeven.
Stap 2: Selecteer nu de categorie Assertie.
- In dit geval is dat Script.
- Selecteer SoapUI Script Assertion en er zijn geen subtypen aan gekoppeld.
- Klik op 'Toevoegen'.
Stap 3: Het dialoogvenster Scripting wordt geopend, waar de gebruiker een door de gebruiker gedefinieerd script kan schrijven om de antwoord-XML te valideren.
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 Scriptie 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"}
- Klik op de knop 'Uitvoeren' om de uitvoering te activeren.
- De uitvoer van het script wordt weergegeven in het deelvenster Uitvoer. Het heeft zowel de conversiewaarde als het eindresultaat (geslaagd of mislukt) afgedrukt
- Er wordt informatie weergegeven dat 'Script Assertion Passed' is. Klik op 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.
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.
Stap 6: Nu
- Selecteer de Testsuite in de Navigator-structuur
- Klik op de knop 'Uitvoeren'
- Resultaten worden weergegeven voor de gehele testsuite.
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'.
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'.
Stap 3: Alle bewerkingen worden hieronder weergegeven.
Stap 4: Laten we nu een toevoegen Testgeval binnen dezelfde testsuite waarvoor we hadden gemaakt Testen de valuta-omzetter.
Stap 5: Voer de naam van de testcase in en klik op de knop 'OK'
Stap 6: De testcase wordt gemaakt zoals hieronder weergegeven.
Stap 7: Toevoegen
een nieuwe teststap van het type 'Soap Test Request' zoals hieronder weergegeven.
Stap 8: Voer de naam van de teststap in. Laten we zeggen โ Supplier_by_City, wat zinvoller zou zijn. Klik op 'OK'.
Stap 9: Selecteer het Operadie we willen valideren. In dit geval is het 'MedicareSupplierSoap -> GetSupplierByCity'. Klik op 'OK'.
Stap 10: Voer de naam van de testcase in en klik op 'OK'.
Stap 11: De Request XML Outline ziet er als volgt uit.
Stap 12: Laten we nu alle leveranciersinformatie voor de stad 'New York' vinden.
Voeg hiervoor de volgende regels toe aan 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
Stap 13: Bij het uitvoeren van de test ontvangen wij onderstaande reactie
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.
Stap 15: Klik nu op 'Een bewering toevoegen',
- Selecteer in dit geval de 'Beweringscategorie' โ Eigenschapsinhoud.
- Selecteer het bevestigingstype als 'XQuery-bevestiging'
- Klik op 'Toevoegen'.
Stap 16: Net als bij XPath Assertion moeten we de naamruimte declareren.
-
Klik op de knop 'Declare' om SOAP UI automatisch de naamruimte te laten declareren. Wanneer u op de knop 'Declare' klikt, wordt er een 'POP-up' met het bericht 'Declare namespace from schema instead' aan de gebruiker getoond. Klik op 'Yes' om door te gaan zoals hieronder weergegeven.
Let op: 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.
- Om het volledige leveranciersnummer op te halen, moeten we een XPath-query schrijven en deze plaatsen in <Leveranciernummer> en Labels.
- Klik op 'Selecteer uit de huidige' die wordt uitgevoerd vanuit het huidige antwoord.
- Wanneer u op 'Selecteer uit de huidige' klikt, worden alle leveranciersnummers weergegeven.
- 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)} }
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 gelijk zijn aan de verwachte waarden, wordt GELDIG weergegeven, anders wordt 'Mislukt' weergegeven.
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.
Met de gemaakte asserties kunnen testers de volgende zaken configureren vanuit de assertietoolbox.
| Keuze | Beschrijving |
|---|---|
|
|
De geselecteerde Assertie schuift omhoog in de volgorde. |
|
|
De geselecteerde bewering wordt in de volgorde omlaag verplaatst. |
|
|
Verwijdert de geselecteerde bewering |
|
|
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.
- 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.
- Assertions uitschakelen/inschakelen: Met deze optie kan elke gegroepeerde of niet-gegroepeerde assertie worden uitgeschakeld of ingeschakeld. Als een assertie is uitgeschakeld, is deze grijs en wanneer een testcase wordt uitgevoerd, worden uitgeschakelde asserties niet uitgevoerd.
- Degroepeer beweringen: alle gegroepeerde beweringen kunnen worden gedegroepeerd als testers daartoe besluiten.
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.
Volledige lijst met methoden die beschikbaar zijn in verschillende typen beweringen
| Bevestigingsmechanisme |
Beschrijving |
| 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 niet het gewenste resultaat krijgt, controleer dan of er een geldige invoer in de aanvraag is meegegeven.
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.
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.














































