Beweringen in SoapUI: Scripts, XQuery, XPath-typen

⚡ Slimme samenvatting

Beweringen in SoapUI Dit zijn de controlepunten die bepalen of een reactie van een webservice correct is, waardoor een verzoek dat slechts wordt uitgevoerd, verandert in een test die daadwerkelijk slaagt of faalt op basis van echte, verifieerbare inhoud.

  • 🔘 Categorieën: Eigendomsinhoud, naleving/status/normen, script, SLA, JMS en beveiliging.
  • ☑️ Bevat: Bevestigt dat een tekenreeks in het antwoord voorkomt, met ondersteuning voor reguliere expressies.
  • ✅ Bevat niet: Bevestigt dat een tekenreeks ontbreekt, handig voor fouttokens en gelekte velden.
  • 🧪 XPath-overeenkomst: Declareer eerst de naamruimte, selecteer vervolgens één knooppunt en vergelijk de waarde ervan.
  • ️ XQuery-match: Valideert herhalende knooppuntensets die anders honderden XPath-controles zouden vereisen.
  • 📊 script: Groovy Asserties verwerken dynamische reacties en de logica voor het opzetten of afbreken van systemen.
  • 🔍 Probleemoplossen: Een onjuiste naamruimte en het gebruik van een punt in plaats van een dubbele punt veroorzaken de meeste fouten.

Beweringen in SoapUI

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 een reactie ontvangen. We moeten controleren of de reactie de verwachte gegevens bevat. Om de reactie te valideren, moeten we beweringen (assertions) gebruiken. Zonder een bewering bewijst een teststap alleen dat de service heeft gereageerd, niet dat de reactie correct was. Daarom is elke API-test Je moet er minstens één bij je hebben.

Soorten beweringen

Er zijn verschillende manieren om een ​​reactie te formuleren; we zullen ons echter richten op de meest gebruikte methoden. SoapUI Assertietypen bij het valideren van een reactie. Hieronder staan ​​de categorieën die beschikbaar zijn in de open source-versie. SoapUI.

  1. Eigenschapinhoud
  2. Nalevingsstatus Standaard
  3. Script
  4. SLA
  5. JMS
  6. Security

Het dialoogvenster groepeert alle beweringen onder die categorieën, zoals de onderstaande schermafbeelding laat zien.

Beweringcategorieën die worden vermeld in de SoapUI Dialoogvenster 'Bewering toevoegen'
Soorten beweringen in SoapUI

Naast de hierboven genoemde functies beschikt de Pro-versie ook over een ingebouwde JDBC-assertie waarmee we kunnen controleren of de webservice de database correct heeft bijgewerkt.

Versie-opmerking: actueel SoapUI De documentatie vermeldt ook een JDBC categorie (JDBC-status en JDBC-time-out) naast de bovenstaande categorieën, en een Berichtinhoud bewering binnen Property Content voor een rijkere XML-vergelijking. De commerciële editie, hier aangeduid als "Pro", wordt nu verkocht als ReadyAPI Door SmartBear, dus menulabels in nieuwere builds kunnen er anders uitzien, terwijl het gedrag van de assertie hetzelfde blijft.

Bevat bewering

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.asmxAls je dat project nog niet hebt gebouwd, ga dan aan de slag. Het creëren van een project, testsuite en testcase. kopen.

Stap 1: Standaard zijn er geen beweringen.

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

SoapUI Het tabblad Asserties toont geen beweringen en de knop 'Nieuwe bewering toevoegen'.

Stap 2: Nu,

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

Voeg een bewering toe in het dialoogvenster met de beweringcategorie en het beweringtype geselecteerd.

Stap 3: Laten we controleren of de tekenreeks '46' in het antwoord voorkomt. Klik op 'OK'.

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

Bevat een configuratiedialoogvenster voor beweringen met de waarde 46 ingevoerd.

Stap 4: Na het toevoegen wordt direct een controle uitgevoerd die aangeeft of het geldig of ongeldig is.

Het tabblad 'Beweringen' meldt dat de bewering 'Bevat' geldig is.

Stap 5: Stel nu dat we de inhoud van 'Contains Assertion in' wijzigen. SoapUI' naar '47' en kijk wat er gebeurt.

De inhoud van Contains Assertion bewerken van 46 naar 47

Stap 6: De bewering wordt uitgevoerd en het resultaat wordt aan de gebruiker getoond. Omdat de tekenreeks '47' niet in het antwoord voorkomt, is de bewering mislukt.

Het tabblad Assertions meldt dat de Contains-assertie is mislukt.

Bevat geen bewering

De tegenhanger werkt precies andersom. Die zoekt naar het niet-bestaan ​​van de opgegeven tekenreeks. Ook reguliere expressies worden ondersteund.

Stap 1: Klik nu op de knop 'nieuwe beweringen toevoegen',

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

Voeg een assertiedialoogvenster toe met de optie 'NIET Bevat' geselecteerd.

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

Het dialoogvenster 'Not Contains Assertion' verschijnt met de tekenreeks 'FromCurrency' ingevoerd.

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

Tabblad 'Beweringen' met een overzicht van zowel de resultaten die wel als niet 'Bevat' bevatten.

Stap 4: Laten we nu de inhoud van de 'Not Contains Assertion' wijzigen en kijken wat er gebeurt. We controleren of de tekenreeks "AddResult" niet bestaat.

Het dialoogvenster 'Not Contains Assertion' controleert of het token AddResult aanwezig is.

Stap 5: De tekenreeks 'AddResult' is daadwerkelijk aanwezig in het antwoord, waardoor de bewering 'NOT Contains' zal mislukken zoals hieronder wordt weergegeven.

De bewering 'Not Contains' mislukt omdat AddResult aanwezig is.

XPath-matchverklaring

Stringmatching is niet erg nauwkeurig, daarom richt de volgende bewering zich in plaats daarvan op één enkel knooppunt. Er wordt gebruikgemaakt van een XPath-expressie om het doelknooppunt en de bijbehorende waarden te selecteren. XPathis een XML-querytaal voor het selecteren van knooppunten uit een XML-document.

Stap 1: Klik nu op de knop 'Nieuwe beweringen toevoegen',

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

Dialoogvenster 'Bewering toevoegen' met 'XPath-overeenkomst' geselecteerd

Stap 2: Het venster 'XPath toevoegen' wordt geopend.

Voordat u een SoapUI Bij XPath moeten we de namespace declareren. Een XML-namespace is een verzameling namen, geïdentificeerd door een Uniform Resource Identifier (URI)-referentie, die in XML-documenten worden gebruikt als element- en attribuutnamen. Hetzelfde geldt voor de SoapUI XPath-assertie.

Om een ​​XML-naamruimte te declareren, hoeven we alleen maar op de knop 'Declareren' te klikken. Dat doet de rest. We kunnen een naamruimte echter ook handmatig declareren.

Nadat we de naamruimte hebben gedeclareerd, moeten we naar het XPath-pad verwijzen met behulp van de aangemaakte naamruimte.

Na het klikken op de knop 'Declareren' verschijnen er twee naamruimten, aangezien we twee URI's hebben. Een daarvan is het schema. URL en de andere komt overeen met de daadwerkelijke webservice. URLWe moeten de daadwerkelijke naamruimte gebruiken waarin de webservice zich bevindt, en NIET de schemanaamruimte, bij het verwijzen naar XPath. De gedeclareerde regels verschijnen bovenaan het XPath-vak, zoals hieronder weergegeven.

De namespaces soap en ns1 zijn gedeclareerd binnen het XPath-assertievenster.

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

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

Het XPath-assertievenster verschijnt direct na het klikken op 'Declare'.

Stap 3: Nu moeten we het XPath-pad invoeren van het XML-knooppunt dat we willen 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-expressie ingevoerd met Selecteren uit huidige gemarkeerd

Stap 4: Tot nu toe,

  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-matchconfiguratie met de verwachte waarde en de knop 'Opslaan'.

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

Tabblad Asserties met de toegevoegde XPath Match-assertie

Scriptie van beweringen

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

SoapUI gebruikt ofwel Groovy Scripten of JavaScript voor het scripten van beweringen. De scripttechniek wordt gebruikt voor de ontwikkeling van...ping Een framework voor het testen van SOAP. Scripting-asserties worden onder de volgende omstandigheden gebruikt.

  • Scripting stelt gebruikers in staat om bepaalde bewerkingen uit te voeren vóór en na de uitvoering van een testcase, respectievelijk met behulp van de `setup` en `teardown` methoden. `setup` is een procedure die wordt uitgevoerd vóór de uitvoering van een specifieke methode (bijvoorbeeld het aanmaken en initialiseren van een object), terwijl `teardown` een procedure is die wordt uitgevoerd na de uitvoering van de methode (bijvoorbeeld het vernietigen van objecten en opruimen). Deze functionaliteit is niet beschikbaar in andere typen Asserties en kan alleen via code worden gerealiseerd.
  • Het stelt gebruikers in staat een project te openen/sluiten, projectgerelateerde instellingen te initialiseren of op te ruimen en ook om met omgevingsvariabelen te werken, wat erg handig is tijdens het scripten.
  • Het helpt ons bij het beweren van een dynamische responsinhoud.
  • Scripting-asserties worden gebruikt voor het maken van door de gebruiker gedefinieerde beweringen die NIET vooraf zijn gedefinieerd. SoapUI.

Om een ​​Script-assertie te demonstreren in SoapUIWe zullen gebruikmaken van de rekenmachine-WSDL, de testcase 'Add' die we eerder hebben gemaakt.

Stap 1: Het toevoegen van een Groovy-script verloopt op dezelfde manier als bij andere beweringen, met als enige verschil dat het geen vooraf gedefinieerde bewering is. In plaats daarvan is het een door de gebruiker gedefinieerde bewering, die meer flexibiliteit biedt dan de ingebouwde beweringen.

Selecteer de teststap waaraan de bewering moet worden toegevoegd.

Teststap geselecteerd in de SoapUI navigator voordat een bewering wordt toegevoegd

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

Voeg de knop 'Bewering toevoegen' toe aan de werkbalk voor beweringen in de teststap.

Stap 2: Selecteer nu de categorie 'Bewering'.

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

Dialoogvenster 'Bewering toevoegen' openen met de categorie 'Script' geselecteerd

Stap 3: Het scriptdialoogvenster wordt geopend, waar de gebruiker een zelfgedefinieerd script kan schrijven om de XML-respons te valideren.

Leeg SoapUI dialoogvenster voor het bewerken van scriptasserties

Stap 4: Laten we nu een Groovy-script schrijven om de conversieratio te valideren. Het script is hieronder bijgevoegd, inclusief de ingesloten opmerkingen. Het is aan te raden om kennis te hebben van... 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"}
  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. 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.

Het uitvoervenster van de scriptassertie print de resultaatwaarde en 'Pass'.

klik op OK

Stap 5: Nu toont het tabblad 'Asserties' alle beweringen die we voor deze testsuite hebben toegevoegd, met de status bij elk ervan.

Op het tabblad 'Asserties' worden alle beweringen weergegeven die aan de testsuite zijn toegevoegd.

Stap 6: Nu

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

Testsuite-uitvoeringsresultaten na het uitvoeren van alle beweringen.

XQuery Match Assertie

Het gebruikt een XQuery-expressie om inhoud uit de doelproperty te selecteren. We hebben een veel uitgebreidere XML-respons nodig om de XQuery-assertie beter te begrijpen. SoapUILaten we nog een WSDL importeren, zoals hieronder weergegeven: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Let op: De openbare demo-eindpunten van webservicex.net die in deze handleiding worden gebruikt, zijn niet langer betrouwbaar bereikbaar. Daarom worden de onderstaande schermafbeeldingen van de aanvraag en het antwoord als referentievoorbeeld bewaard. Elke WSDL die een herhalende knooppuntenset retourneert, zal de XQuery-assertie op exact dezelfde manier testen.

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

Klik met de rechtermuisknop op het menu SoapUI project dat laat zien hoe je WSDL kunt toevoegen

Stap 2: Het dialoogvenster 'WSDL toevoegen' wordt geopend. Laat de overige opties op de standaardwaarden staan ​​en klik op de knop 'OK'.

Voeg een WSDL-dialoogvenster toe met de standaard importopties.

Stap 3: Alle bewerkingen staan ​​hieronder vermeld.

Medicare-leveranciers met WSDL-activiteiten worden weergegeven in de navigatiestructuur.

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

Nieuwe testcase-optie toevoegen aan de bestaande testsuite

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

De naam van de testcase invoeren in het dialoogvenster Nieuwe testcase

Stap 6: De testcase wordt gemaakt zoals hieronder weergegeven.

Nieuw aangemaakte testcase in de SoapUI navigatieboom

Stap 7: Voeg een nieuwe teststap van het type 'SOAP-testverzoek' toe, zoals hieronder weergegeven.

Voeg een stapmenu toe met de optie SOAP-testverzoek geselecteerd.

Stap 8: Voer de naam van de teststap in. Laten we zeggen: Supplier_by_City, dat is veel duidelijker. Klik op 'OK'.

De nieuwe teststap de naam Supplier_by_City geven

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

De GetSupplierByCity-bewerking selecteren voor de teststap

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

Bevestiging van de naam van het SOAP-testverzoek

Stap 11: De XML-structuur van het verzoek wordt als volgt weergegeven.

XML-structuur gegenereerd voor het GetSupplierByCity-verzoek.

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

Voeg hiervoor de volgende regels toe aan uw code.

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

<City>New York</City>

</GetSupplierByCity>

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

Verzoek-XML bewerkt met New York als plaatsnaam.

Stap 13: Na het uitvoeren van de test ontvangen we het onderstaande antwoord.

GetSupplierByCity-antwoord met herhaalde leveranciersgegevens

Stap 14: Stel dat we alle leveranciersnummers moeten valideren. We kunnen geen XPath-asserties gebruiken, omdat we er honderden nodig zouden 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.

Herhalende SupplierData-nodes waar XQuery overheen zal itereren.

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-assertie geselecteerd in de categorie Eigenschapsinhoud

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

  1. Klik op de knop 'Verklaren' om dit automatisch toe te staan. SoapUI Om de naamruimte te declareren. Na het klikken op de knop 'Declareren' verschijnt een pop-upvenster met de melding 'Declareer in plaats daarvan de naamruimte vanuit het schema'. Klik op 'Ja' om verder te gaan, zoals hieronder weergegeven.
  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. Na het klikken op 'Selecteer uit de huidige' worden alle leveranciersnummers weergegeven.
  5. Klik op 'Opslaan'.

Declareer naamruimte vanuit schema-bevestigingspop-up

Let op: na het klikken op de knop 'Verklaren' kunt u mogelijk andere resultaten krijgen. URL's als naamruimtedeclaratie, maar de daadwerkelijke naamruimte van de webservicelocatie is wat voor de programmering in aanmerking zou worden genomen.

De voltooide XQuery-expressie, inclusief de naamruimtedeclaraties, ziet er als volgt uit.

// 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-expressievenster met een lijst van alle leveranciersnummers

Stap 17: De XQuery-assertie wordt uitgevoerd en het eindresultaat wordt weergegeven in het paneel 'Assertie', zoals hieronder te zien is. We hebben nu met succes een XQuery-assertie toegevoegd waarmee we alle leveranciersnummerinformatie hebben gevalideerd. Deze informatie wordt vergeleken met de werkelijke gegevens telkens wanneer een 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.

Assertiespaneel met het resultaat van de XQuery-assertie.

Wanneer gebruik je ingebouwde assertiviteit?

Nu zowel de muisklik- als de scriptgestuurde opties aan bod zijn gekomen, is de praktische vraag welke je moet kiezen.

  • 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.

Configuratiescherm van de Assertions-toolbox in SoapUI

Met de gemaakte asserties kunnen testers de volgende zaken configureren vanuit de assertietoolbox.

Keuze Beschrijving
Verplaats bewering omhoog pictogram De geselecteerde Assertie schuift omhoog in de volgorde.
Verplaats bewering naar beneden pictogram De geselecteerde bewering wordt in de volgorde omlaag verplaatst.
Verwijder het assertie-icoon Verwijdert de geselecteerde bewering
Configureer of bewerk het assertie-pictogram Configureer/bewerk de geselecteerde bewering opnieuw.

Hieronder staan ​​de functies die exclusief beschikbaar zijn in de Pro-versie. SoapUInu verzonden als ReadyAPIDe Pro-versie helpt ons ook bij het groeperen van beweringen, zodat we een extra validatielaag aan de gemaakte beweringen kunnen toevoegen.

  • EN: Alle beweringen worden als geldig beoordeeld, wat resulteert in de groepsconditie 'geslaagd'.
  • OF: Ten minste één van de beweringen binnen de groep moet GELDIG zijn om de groepsconditie PASSED te kunnen claimen.
  • Pro-versie maakt het ook mogelijk Klonen van beweringenMet deze optie kunnen testers toestaan ​​dat een bewering wordt gekopieerd naar een andere teststap in hetzelfde of een ander project.
  • Asserties uitschakelen/inschakelen: Met deze optie kunt u elke gegroepeerde of niet-gegroepeerde assertie uitschakelen of inschakelen. Als een assertie is uitgeschakeld, wordt deze grijs weergegeven en worden uitgeschakelde asserties niet uitgevoerd wanneer een testcase wordt uitgevoerd.
  • Asserties kunnen worden gedegroepeerd: Gegroepeerde asserties kunnen worden gedegroepeerd als testers dat wensen.

Volledige lijst met methoden die beschikbaar zijn in verschillende typen beweringen

De onderstaande tabel bevat alle hierboven besproken beweringen, gegroepeerd per categorie waaronder ze voorkomen in het dialoogvenster 'Bewering toevoegen'.

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-status Codes 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-status Codes Controleert of het HTML-antwoord een statuscode bevat die in de lijst met gedefinieerde codes staat. Het is het tegenovergestelde van 'Ongeldige HTTP-statuscode'. Codes' bewering.
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

De meeste beweringen mislukken tracWe komen terug op een klein aantal fouten, dus controleer deze voordat je een uitdrukking herschrijft.

  • Gebruik de juiste naamruimte. De naamruimte moet de URL waar de webservice zich bevindt.
  • Als er een fout optreedt tijdens de ontwikkelingping Gebruik in een script een bewering en vervolgens '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.

Bijvoorbeeld, in de valutaomrekenaar, als je 'intA' invoert als 'x', wat geen geheel getal is, geeft de uitvoer de foutcode 'SOAP-Client'. Dit betekent dat het probleem ligt bij de parameter die vanaf de clientzijde wordt doorgegeven. Het verzoek met de ongeldige waarde wordt eerst weergegeven.

SoapUI verzoek waarbij een ongeldige niet-gehele waarde voor intA wordt doorgegeven.

Het antwoord geeft de foutcode terug in plaats van een resultaat, zoals hieronder weergegeven.

De foutcode van de SOAP-client die is geretourneerd in de SoapUI antwoordredacteur

Zorg ervoor dat u de juiste syntaxis gebruikt bij het gebruik van XPath en XQuery-asserties. Gebruik GEEN punt (.) in plaats van een dubbele punt (:) bij het gebruik van de bovenstaande assertie. De syntaxis is //namespace:Tagname en NIET //namespace.tagname. Als u dit wel doet, kunt u een foutmelding krijgen zoals 'NO match in current response', zelfs als de tagnaam correct is.

Foutmelding 'Geen overeenkomst gevonden' in het huidige antwoord, veroorzaakt door onjuiste XPath-syntaxis.

Veelgestelde vragen

Een willekeurig aantal. SoapUI Het testproces past elke bewering die aan een sampler-teststap is gekoppeld toe nadat deze is uitgevoerd, en de stap wordt in de testcase-weergave als mislukt gemarkeerd als zelfs maar één van die beweringen niet wordt voldaan.

Het vergelijkt een XML-bericht knooppunt voor knooppunt met een verwacht document, waardoor geselecteerde velden kunnen worden genegeerd of losjes kunnen worden vergeleken in plaats van de hele inhoud als één platte tekenreeks te behandelen.

Open-source SoapUI Dit omvat Property Content, Compliance, Script, SLA, JMS en Security. ReadyAPI voegt groep toeping, klonen, JDBC-controles en het in- of uitschakelen van de besturing.

AI-modellen lezen een voorbeeldantwoord en stellen XPath- of XQuery-expressies voor, suggereren grenswaarden en markeren velden die bij elke uitvoering veranderen. Dit vermindert de hoeveelheid handgeschreven naamruimte en expressies aanzienlijk.

Ja. Copilot automatisch aanvullen GroovyStandaardcode voor Utils en XmlHolder. Voer het script altijd eerst uit, want een syntactisch geldig script meldt 'Script Assertion Passed' ongeacht uw vergelijking.

Ja. De inhoudsvelden van beweringen ondersteunen eigenschapsuitbreiding, waardoor de verwachte waarde kan worden overgenomen uit een project- of testcase-eigenschap in plaats van een letterlijke waarde. Hierdoor blijft één bewering herbruikbaar in verschillende omgevingen.

Een mislukte bewering markeert de bijbehorende teststap als mislukt in de testcaseweergave en schrijft een overeenkomstige FAILED-vermelding, inclusief de details van de fout, naar het testuitvoeringslogboek onderaan het venster.

Bevat, Bevat niet, XPath-overeenkomst, XQuery-overeenkomst, respons-SLA, script, geldige en ongeldige HTTP-statuscodes, blootstelling van gevoelige informatie en schemaconformiteit ten opzichte van een WADL of afgeleid schema.

Vat dit bericht samen met: