Påståenden i SoapUI: Scripts, XQuery, XPath Types Tutorial

Vad är ett påstående?

Påstående betyder handling att bekräfta eller påstå något. Det kan också tolkas som en kontrollpunkt eller en valideringspunkt.

När en förfrågan skickas till en webbserver mottas ett svar. Vi måste validera om svaret innehåller de data som vi förväntar oss. För att validera svaret måste vi använda påståenden.

Typer av påstående

Det finns olika sätt att hävda ett svar; Vi kommer dock att fokusera på de vanligaste typerna av SoapUI Assertions medan vi validerar ett svar. Nedan är de som är tillgängliga i Open Source-versionen av SoapUI.

  1. Fastighetsinnehåll
  2. Överensstämmelsestatusstandard
  3. Script
  4. SLA
  5. Etc
  6. Säkerhet
Typer av påståenden i SoapUI
Typer av påståenden i SoapUI

Förutom de som är listade ovan har PRO-versionen också en inbyggd JDBC Assertion som vi kan använda för att hävda om webbtjänsten har uppdaterat databasen korrekt.

INNEHÅLLER PÅSTÅND

Söker efter förekomsten av den angivna strängen. Det stöder också reguljärt uttryck.

Vi kommer att fortsätta med samma exempel från föregående handledning med WSDL-förfrågan som http://www.dneonline.com/calculator.asmx.

Steg 1: Som standard finns inga påståenden.

  • Antalet påståenden visas på fliken påståenden.
  • För att lägga till ett nytt påstående, klicka på knappen "Lägg till nytt påstående".

Innehåller påstående

Steg 2: Nu,

  1. Välj påståendekategori.
  2. Välj påståendetyp.
  3. Klicka på "Lägg till"

Innehåller påstående

Steg 3: Låt oss validera om strängen '46' finns i svaret. Klicka på 'OK'

Obs: Vi kan också ignorera skiftläge och lägga till reguljärt uttryck.

Innehåller påstående

Steg 4: När det läggs till exekveras påståendet omedelbart och visar om GILTIGT eller OGILTIGt.

Innehåller påstående

Steg 5: Låt oss nu säga att vi ändrar innehållet i 'Contains Assertion in SoapUI' till '47' och se vad som händer.

Innehåller påstående

Steg 6: Påståendet exekveras och resultatet skickas till användaren. Eftersom vi inte har strängen '47' i svaret, har påståendet misslyckats.

Innehåller påstående

INNEHÅLLER INTE PÅSTÅND

Söker efter icke-existens för den angivna strängen. Det stöder också reguljärt uttryck.

Steg 1: Nu efter att ha klickat på knappen "lägg till nya påståenden",

  1. Välj påståendekategori.
  2. Välj påståendetyp – I det här fallet "Intehåller"
  3. Klicka på "Lägg till"

Innehåller inte påstående

Steg 2: Låt oss validera om strängen 'intA' finns i svaret. Ange strängen 'FromCurrency' och klicka på 'OK'

Innehåller inte påstående

Steg 3: Så snart ett påstående läggs till körs det och visar resultatet. Hittills har vi lagt till två påståenden, så båda påståendena exekveras och visar resultatet.

Innehåller inte påstående

Steg 4: Låt oss nu ändra innehållet i "Innehåller inte påståendet" och se vad som händer. Vi kommer att kontrollera om strängen "AddResult" inte finns.

Innehåller inte påstående

Steg 5: Strängen 'AddResult' finns faktiskt i svaret, därför kommer påståendet 'NOT Contains' att misslyckas som visas nedan.

Innehåller inte påstående

XPATH MATCH PÅSTÅND

du använder XPath uttryck för att välja målnoden och dess värden. XPath, är ett XML-frågespråk för att välja noder från ett XML-dokument.

Steg 1: Nu efter att ha klickat på knappen "Lägg till nya påståenden",

  1. Välj påståendekategori.
  2. Välj påståendetyp – i det här fallet 'XPath Match'
  3. Klicka på "Lägg till"

XPath Match Assertion

Steg 2: Fönstret Lägg till XPath öppnas.

Innan vi lägger till SoapUI XPath måste vi deklarera NameSpace. Ett XML-namnområde är en samling namn, identifierade med en URI-referens (Uniform Resource Identifier), som används i XML-dokument som element- och attributnamn. Detsamma används i SOAP UI XPath Assertion.

För att deklarera XML-namnutrymme behöver vi bara klicka på knappen "Deklarera" vilket skulle göra jobbet åt oss, annars kan vi deklarera ett namnområde manuellt själva.

Efter att ha deklarerat namnområdet måste vi hänvisa till XPath med det skapade namnutrymmet.

När du klickar på knappen 'Deklarera' kommer två namnområden dyka upp eftersom vi har två URI:er. En av dem är schema-URL och den andra motsvarar den faktiska webbtjänstens URL. Vi måste använda det faktiska namnutrymmet där webbtjänsten finns och INTE schemats namnutrymme när vi refererar till XPath.

XPath Match Assertion

deklarera namnutrymme soap='http://schemas.xmlsoap.org/soap/envelope/';

deklarera namnutrymme ns1='http://tempuri.org/';

XPath Match Assertion

Steg 3: Nu måste vi ange XPath för XML-noden som vi behöver validera.

//ns1:AddResult Ger oss värdet på noden som är innesluten mellan & och ns1 motsvarar det deklarerade namnutrymmet som pekar på 'http://tempuri.org/'

Efter att ha angett XML måste vi klicka på "Välj från aktuell" så att värdet från det aktuella svaret kan plockas upp för jämförelse framöver.

XPath Match Assertion

Steg 4: Hittills,

  1. Efter att ha deklarerat namnområdena har vi angett XPath of XML-noden som vi behöver validera.
  2. Vi måste klicka på "Välj från aktuell" för att göra det aktuella värdet som förväntat värde.
  3. Det aktuella värdet visas för användaren som vi kan ändra vid behov.
  4. Klicka på "Spara".

XPath Match Assertion

Steg 5: Det tillagda påståendet i SoapUI kommer att visas som visas nedan.

XPath Match Assertion

Skriptpåståenden

Denna påståendeteknik är den mest använda eftersom det är extremt svårt att hantera och underhålla hundratals påståenden.

SOAP UI använder antingen Groovy Skript eller JavaScript för skriptpåståenden. Skripttekniken används för att utveckla ett ramverk för att testa SOAP. Skriptpåståenden används under följande omständigheter.

Skript tillåter användaren att utföra vissa operationer före och efter exekvering av ett TestCase med hjälp av inställnings- respektive rivningsmetoder. Installation är en procedur som exekveras innan en viss metod exekveras (exempel - Objektskapande och initiering) medan tear down är en procedur som exekveras efter att metoden körs (t.ex.: Förstöra objekt och städa upp). Den här funktionen är inte tillgänglig i andra Assertion-typer och kan endast göras genom kodning.

Det tillåter användare att öppna/stänga ett projekt, för att initiera eller rensa projektrelaterade inställningar och även att arbeta med miljövariabler, vilket är mycket användbart under skriptning.

Det hjälper oss att hävda ett dynamiskt svarsinnehåll.

Skriptpåståenden används för att skapa användardefinierade påståenden som INTE är fördefinierade av SOAP UI.

För att demonstrera skriptpåstående i SoapUI kommer vi att använda kalkylatorn WSDL, testfallet "Add" som vi hade skapat tidigare.

Steg 1: Stegen för att lägga till groovy script är samma som för andra påståenden förutom att påståendet inte är ett fördefinierat. Istället är det ett användardefinierat påstående som erbjuder större flexibilitet än de inbyggda.

Välj det teststeg mot vilket påståendet ska läggas till.

Skriptpåståenden

Klicka på knappen "Lägg till påstående" som visas nedan.

Skriptpåståenden

Steg 2: Välj nu kategorin Påstående.

  1. I det här fallet är det Script.
  2. Välj SoapUI Script Assertion och det finns inga undertyper associerade med det.
  3. Klicka på "Lägg till".

Skriptpåståenden

Steg 3: Skriptdialogen öppnas där användaren kommer att kunna skriva användardefinierat skript för att validera svaret XML.

Skriptpåståenden

Steg 4: Låt oss nu skriva ett groovy skript för att validera omvandlingsfrekvensen. Skriptet bifogas nedan med kommentarerna inbäddade. Det rekommenderas att ha kunskap om Java Manus eller Groovy Skripta innan du försöker skriva ditt eget manus.

//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. Klicka på "Execute"-knappen för att utlösa exekveringen.
  2. Utdata från skriptet visas i rutan Utdata. Den har skrivit ut både konverteringsvärde och slutresultatet (Godkänd eller Underkänd)
  3. Informationen visas att "Script Assertion Passed". Klicka på OK.

Obs: Den slutliga informations-popupen kommer alltid att visas med meddelandet "Script Assertion Passed" så länge som skriptet är syntaktisk korrekt. Det har inget samband med ditt påstående i manuset.

Skriptpåståenden

klicka på OK

Steg 5: Nu visar påståendefliken alla påståenden som vi hade lagt till för denna testsvit med Status mot var och en av dessa.

Skriptpåståenden

Steg 6: Nu

  1. Välj Test Suite från Navigator-trädet
  2. Klicka på knappen "Kör".
  3. Resultaten skulle visas för hela testsviten.

Skriptpåståenden

Xquery Match Assertion

Den använder ett Xquery-uttryck för att välja innehåll från målegenskapen. Vi behöver en mycket större XML-respons för att bättre förstå XQuery-påståendet i SoapUI. Låt oss importera en annan WSDL som visas nedan: http://www.webservicex.net/medicareSupplier.asmx?WSDL

Steg 1: Utför ett högerklick på det befintliga projektet och välj "Lägg till WSDL".

Xquery Match Assertion

Steg 2: Utför ett högerklick på det befintliga projektet och välj "Lägg till WSDL". Lämna andra alternativ som standard och klicka på "OK"-knappen.

Xquery Match Assertion

Steg 3: Alla operationer listas enligt nedan.

Xquery Match Assertion

Steg 4: Låt oss nu lägga till en Testfall inom samma testsvit som vi hade skapat för Testning valutaomvandlaren.

Xquery Match Assertion

Steg 5: Ange namnet på testfallet och klicka på "OK"-knappen

Xquery Match Assertion

Steg 6: Testfallet skapas enligt nedan.

Xquery Match Assertion

Steg 7: Lägg till
ett nytt teststeg av Typ 'Tvåltestbegäran' som visas nedan.

Xquery Match Assertion

Steg 8: Ange namnet på teststeget. Låt oss säga – Supplier_by_City vilket skulle vara mer meningsfullt Klicka på "OK".

Xquery Match Assertion

Steg 9: Välj Operasom vi skulle vilja validera. I det här fallet är det 'MedicareSupplierSoap -> GetSupplierByCity'. Klicka på 'OK'.

Xquery Match Assertion

Steg 10: Ange namnet på testfallet och klicka på "OK".

Xquery Match Assertion

Steg 11: Request XML Outline skulle visas som visas nedan.

Xquery Match Assertion

Steg 12: Låt oss nu hitta all leverantörsinformation för 'New York' City.

För att göra det, lägg till följande rader i din kod.

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

<City>New York</City>

</GetSupplierByCity>

WSDL i webbadressen nedan – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity

Xquery Match Assertion

Steg 13: När vi har utfört testet får vi svaret nedan

Xquery Match Assertion

Steg 14: Låt oss säga att vi måste validera alla leverantörsnummer. Vi kan inte använda XPath Assertion eftersom vi måste ha hundratals XPath Assertion. Därför är användningen av XQuery oundviklig i det här fallet.

XQuery Assertion hjälper oss att validera en grupp av XML-svar som är repetitiva till sin natur.

Xquery Match Assertion

Steg 15: Klicka nu på "Lägg till ett påstående",

  1. Välj "Assertion Category" – Egendomsinnehåll i det här fallet.
  2. Välj påståendetyp som "XQuery Assertion"
  3. Klicka på "Lägg till".

Xquery Match Assertion

Steg 16: I likhet med XPath Assertion måste vi deklarera namnområdet.

  1. Klicka på knappen "Declare" för att automatiskt tillåta SOAP UI att deklarera namnområdet. När du klickar på deklarera-knappen kommer en 'POP-up' med meddelandet 'deklarera namnutrymme från schema istället' att visas för användaren. Klicka på "Ja" för att fortsätta som visas nedan.

    Obs: När du trycker på "Deklarera-knappen" kan du få andra URL:er som namnområdesdeklaration, men den faktiska webbtjänstplatsens namnområde är vad som skulle övervägas för kodning.

    Xquery Match Assertion

  2. För att hämta alla leverantörsnummer måste vi skriva en XPath-fråga och vi placerar den inom < SupplierNumber> och Taggar.
  3. Klicka på "Välj från den aktuella" som kommer att köras från det aktuella svaret.
  4. När du klickar på "Välj från strömmen", listas alla leverantörsnummer.
  5. Klicka på "Spara".
// 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 Assertion

Steg 17: XQuery Assertion exekveras och visar det slutliga resultatet i 'Assertion'-panelen som visas nedan. Nu har vi framgångsrikt lagt till ett Xquery-påstående med vilket vi har validerat all leverantörsnummerinformation. Detsamma skulle jämföras med verkligheten, varje gång förfrågan skickas till webbservern.

Obs: De faktiska värdena kommer inte att visas. Om alla faktiska värden är desamma som de förväntade värdena, visar den GILTIGT annars visas "Failed".

Xquery Match Assertion

När ska man använda inbyggd påstående?

  • När ett svar är kort så att det kan valideras med en av dessa inbyggda påståenden.
  • Vi kan också använda Inbuilt Assertion om svaret som skickas från webbservern alltid är statiskt till sin natur. Om det är dynamiskt kommer vi inte att kunna hävda det med inbyggda påståenden.
  • När användning av inbyggda påståenden som Time-out-påståenden och säkerhetspåståenden blir oundviklig.
  • Inbyggda påståenden håller ganska bra för engångsanvändning där tester inte behöver upprepas.

Påstående alternativ

De skapade påståendena kan bäst kontrolleras med hjälp av kontrollpanelen som är markerad nedan.

Påstående alternativ

De skapade påståendena tillåter testare att konfigurera följande saker från påståendens verktygslådan.

Alternativet BESKRIVNING

Påstående alternativ

Det valda påståendet flyttar uppåt i ordningen.

Påstående alternativ

Det valda påståendet flyttas ner i ordningen.

Påstående alternativ

Tar bort det valda påståendet

Påstående alternativ

Konfigurera om/redigera det valda påståendet.
  • Nedan är funktionerna som är tillgängliga exklusivt i PRO-versionen av SOAP UI. PRO-versionen hjälper oss också att gruppera påståenden så att vi kan lägga till ytterligare ett lager av validering till de skapade påståendena.
  • OCH: Alla påståenden utvärderas som GILTIGT påstående, vilket kommer att resultera i GÄLLANDE gruppvillkor. ELLER: Minst ett av påståendena inom gruppen måste vara GILTIGT för att hävda ett villkor GÄLLANDE för gruppen.

  • Pro-versionen tillåter också Kloning av påståenden: Detta alternativ låter testare tillåta kopiering av ett påstående till ett annat teststeg i samma eller ett annat projekt.
  • Inaktivera/aktivera påståenden: Detta alternativ gör att alla grupperade eller ogrupperade påståenden kan inaktiveras eller aktiveras. Om ett påstående är inaktiverat är det nedtonat och när ett testfall körs kommer inaktiverade påståenden inte att köras.
  • Dela upp påståenden: Alla grupperade påståenden kan delas upp om testare bestämmer sig för att göra det.

Komplett lista över metoder tillgängliga i olika påståendetyper

Att hävda mekanism

BESKRIVNING

EGENDOMENS INNEHÅLL
innehåller Söker efter förekomsten av den angivna strängen. Det stöder också reguljärt uttryck.
Innehåller inte Söker efter icke-existens för den angivna strängen. Det stöder också reguljärt uttryck.
XPath Match Använder XPath-uttryck för att välja målnoden och dess värden.
XQuery Match Använder ett Xquery-uttryck för att välja innehåll från målegenskapen.
Efterlevnad, status, standarder
HTTP Ladda ner alla resurser Validerar HTML-dokumentet efter nedladdning och det gäller för alla egenskaper som innehåller HTML.
Ogiltiga HTTP-statuskoder Verifierar om HTML-svaret innehåller en statuskod som inte finns i listan över definierade koder.
Inte SOAP-fel Verifierar om det senast mottagna meddelandet inte är ett SOAP-fel. Det är mycket uppenbart att det endast är tillämpligt för SOAP-teststeg.
Schemaöverensstämmelse Verifierar om det senast mottagna meddelandet är kompatibelt med WSDL- eller WADL-standardschemadefinitionen. Håller bra för tvål- och viloteststeg.
SOAP Fel Verifierar om det senast mottagna meddelandet är ett SOAP-fel. Det är det omvända till "NOT SOAP"-felpåståenden.
SOAP Response Verifierar om det senast mottagna svaret är ett giltigt SOAP-svar och gäller endast för SOAP-testbegäran.
Giltiga HTTP-statuskoder Verifierar om HTML-svaret innehåller en statuskod som finns i listan över definierade koder. Det är det omvända till påståendet "Ogiltiga HTTP-statuskoder".
WS-Adresseringsförfrågan Verifierar om den senast mottagna begäran innehåller lämpliga WS-adresseringsrubriker.
WS-adresseringssvar Verifierar om det senast mottagna svaret innehåller lämpliga WS-adresseringsrubriker.
WS-Säkerhetsstatus Validerar om det senast mottagna meddelandet innehåller giltiga WS-Security-rubriker och gäller endast för SOAP-förfrågningar.
Script
Manuspåstående Tillåter användare att köra ett anpassat skript för att utföra användardefinierade valideringar.
SLA
Respons SLA Validerar om svarstiden för det senast mottagna svaret var inom den definierade gränsen.
Etc
JMS Status Verifierar om JMS-begäran för teststeget har utförts framgångsrikt och gäller för teststeg med en JMS-slutpunkt.
JMS Timeout Verifierar om att JMS-svaret för ett teststeg inte tog längre tid än den angivna varaktigheten.
Säkerhet
Känslig information Exponering Verifierar om svarsmeddelandet inte exponerar känslig information om målsystemet. Vi kan använda detta påstående för REST-, SOAP- och HTTP-teststeg.

LADDA NED SOAPUI-PROJEKTET SOM INNEHÅLLER Ovanstående påståenden

Vanliga fel och felsökning

Använd rätt namnutrymme. Namnutrymmet ska vara URL:en där webbtjänsten finns.

Om ett fel uppstår när ett skriptpåstående utvecklades, använd 'log.info' för att skriva ut innehållet i variablerna

Om du inte har den önskade utgången, kontrollera om en giltig inmatning har skickats i begäran.

Till exempel, i valutaomvandlare, om du matar in 'intA' som 'x' som inte är heltal, skickar utdata en felkod som 'SOAP-Client' vilket betyder att problemet är med parametern som skickas från klientsidan.

Vanliga fel och felsökning

Vanliga fel och felsökning

Se till att du använder rätt syntax när du använder XPATH och XQuery påstående. Du bör INTE använda punkt(.) istället för kolon(:) när du använder ovanstående påstående. Syntaxen är //namespace:Tagname och INTE //namespace.tagname. Genom att göra det kan du få ett meddelande som "INGEN matchar i aktuellt svar" även om taggnamnet är korrekt.

Vanliga fel och felsökning