Tvrdnje u SoapUI: Vodič za skripte, XQuery, XPath vrste
Što je tvrdnja?
Tvrdnja znači čin potvrđivanja ili tvrdnje nečega. Također se može tumačiti kao kontrolna točka ili točka provjere valjanosti.
Nakon što je zahtjev poslan na web poslužitelj, primljen je odgovor. Moramo provjeriti sadrži li odgovor podatke koje očekujemo. Kako bismo potvrdili odgovor, moramo koristiti tvrdnje.
Vrste tvrdnji
Postoje različiti načini potvrđivanja odgovora; međutim, usredotočit ćemo se na najčešće korištene tipove tvrdnji SoapUI dok provjeravamo odgovor. Ispod su oni koji su dostupni u Open Source verziji SoapUI.
- Sadržaj imovine
- Standard statusa sukladnosti
- Script
- SLA
- JMS
- Sigurnost

Osim gore navedenih, PRO verzija također ima ugrađen JDBC Assertion pomoću kojeg možemo potvrditi je li web servis ispravno ažurirao bazu podataka.
SADRŽI TVRDNJU
Traži postojanje navedenog niza. Također podržava regularni izraz.
Nastavit ćemo s istim primjerom iz prethodnog vodiča s WSDL zahtjevom kao http://www.dneonline.com/calculator.asmx.
Korak 1: Prema zadanim postavkama nema tvrdnji.
- Broj tvrdnji prikazan je na kartici Tvrdnje.
- Da biste dodali novu tvrdnju, kliknite gumb "Dodaj novu tvrdnju".
Korak 2: Sada,
- Odaberite kategoriju tvrdnje.
- Odaberite vrstu tvrdnje.
- Kliknite "Dodaj"
Korak 3: Provjerimo postoji li niz '46' u odgovoru. Kliknite "OK"
Napomena: Također možemo zanemariti velika i mala slova i dodati regularni izraz.
Korak 4: Nakon dodavanja, tvrdnja se odmah izvršava i pokazuje je li VALJANO ili NEVALJANO.
Korak 5: Recimo sada da promijenimo sadržaj 'Contains Assertion in SoapUI' u '47' i vidimo što će se dogoditi.
Korak 6: Tvrdnja se izvršava i rezultat se šalje korisniku. Budući da nemamo niz '47' unutar odgovora, tvrdnja nije uspjela.
NE SADRŽI TVRDNJE
Traži Nepostojanje navedenog niza. Također podržava regularni izraz.
Korak 1: Nakon klika na gumb "dodaj nove tvrdnje",
- Odaberite kategoriju tvrdnje.
- Odaberite vrstu tvrdnje – u ovom slučaju 'NE sadrži'
- Kliknite "Dodaj"
Korak 2: Provjerimo postoji li niz 'intA' u odgovoru. Unesite niz 'FromCurrency' i kliknite 'OK'
Korak 3: Čim se doda tvrdnja, ona se izvršava i prikazuje rezultat. Do sada smo dodali dvije tvrdnje stoga se obje tvrdnje izvršavaju i prikazuju rezultat.
Korak 4: Sada promijenimo sadržaj 'Not Contains Assertion' i vidimo što će se dogoditi. Provjerit ćemo nepostojanje niza “AddResult”.
Korak 5: Niz 'AddResult' zapravo je prisutan u odgovoru, stoga tvrdnja 'NE sadrži' neće uspjeti kao što je prikazano u nastavku.
XPATH MATCH ASERTION
Koristi XPath izraz za odabir ciljnog čvora i njegovih vrijednosti. XPath je XML upitni jezik za odabir čvorova iz XML dokumenta.
Korak 1: Nakon klika na gumb "Dodaj nove tvrdnje",
- Odaberite kategoriju tvrdnje.
- Odaberite vrstu tvrdnje – u ovom slučaju 'XPath Match'
- Kliknite "Dodaj"
Korak 2: Otvara se prozor Add XPath.
Prije dodavanja SoapUI XPath, moramo deklarirati NameSpace. XML imenski prostor je zbirka imena, identificirana referencom Uniform Resource Identifier (URI), koja se koriste u XML dokumentima kao imena elemenata i atributa. Isto se koristi u SOAP UI XPath Assertion.
Za deklariranje prostora imena XML-a, samo trebamo kliknuti na gumb 'Proglasi' koji bi obavio posao umjesto nas, inače možemo i sami ručno deklarirati prostor imena.
Nakon deklariranja imenskog prostora moramo uputiti XPath koristeći stvoreni imenski prostor.
Nakon klika na gumb 'Proglasi', pojavit će se dva prostora imena jer imamo dva URI-ja. Jedan od njih je URL sheme, a drugi odgovara stvarnom URL-u web usluge. Moramo koristiti stvarni prostor imena u kojem se web usluga nalazi, a NE prostor imena sheme dok referiramo na XPath.
deklariraj prostor imena soap='http://schemas.xmlsoap.org/soap/envelope/';
deklariraj imenski prostor ns1='http://tempuri.org/';
Korak 3: Sada moramo unijeti XPath XML čvora koji trebamo potvrditi.
//ns1:AddResult Daje nam vrijednost čvora zatvorenog između i a ns1 odgovara deklariranom prostoru imena koji pokazuje na 'http://tempuri.org/'
Nakon unosa XML-a, moramo kliknuti na 'Select from current' kako bi vrijednost iz trenutnog odgovora bila odabrana za usporedbu u budućnosti.
Korak 4: Do sada,
- Nakon deklariranja prostora imena, unijeli smo XPath XML čvora koji trebamo potvrditi.
- Moramo kliknuti 'Select from Current' kako bi trenutna vrijednost bila očekivana vrijednost.
- Trenutna vrijednost se prikazuje korisniku koju možemo promijeniti ako je potrebno.
- Kliknite 'Spremi'.
Korak 5: Dodana tvrdnja u SoapUI bit će prikazana kao što je prikazano u nastavku.
Skriptne tvrdnje
Ova tehnika tvrdnji je najčešće korištena jer je izuzetno teško upravljati i održavati stotine tvrdnji.
SOAP UI koristi bilo koji Groovy Skriptiranje ili JavaScript za skriptne tvrdnje. Tehnika skriptiranja usvojena je za razvoj okvira za testiranje SOAP-a. Tvrdnje skriptiranja koriste se u sljedećim okolnostima.
Skriptiranje omogućuje korisniku izvođenje nekih operacija prije i nakon izvođenja TestCase-a koristeći metode postavljanja i uništavanja. Postavljanje je procedura koja se izvršava prije izvršavanja određene metode (primjer – Stvaranje i inicijalizacija objekta), dok je rušenje procedura koja se izvršava nakon izvršavanja metode (npr.: uništavanje objekata i čišćenje). Ova značajka nije dostupna u drugim vrstama tvrdnji i može se izvršiti samo putem kodiranja.
Omogućuje korisnicima otvaranje/zatvaranje projekta, kako bi inicijalizirali ili očistili postavke povezane s projektom te rad s varijablama okruženja što je od velike pomoći tijekom skriptiranja.
Pomaže nam u postavljanju dinamičkog sadržaja odgovora.
Tvrdnje skriptiranja koriste se za stvaranje korisnički definiranih tvrdnji koje NISU unaprijed definirane u SOAP UI.
Za demonstraciju tvrdnje skripte u SoapUI, koristit ćemo se kalkulatorom WSDL, testnim slučajem 'Add' koji smo ranije izradili.
Korak 1: Koraci za dodavanje groovy skripte isti su kao i za druge tvrdnje osim što tvrdnja nije unaprijed definirana. Umjesto toga, to je korisnički definirana tvrdnja koja nudi veću fleksibilnost od onih ugrađenih.
Odaberite testni korak prema kojem se tvrdnja mora dodati.
Pritisnite gumb "Dodaj tvrdnju" kao što je prikazano u nastavku.
Korak 2: Sada odaberite kategoriju tvrdnje.
- U ovom slučaju to je Skripta.
- Odaberite SoapUI Script Assertion i nema povezanih podvrsta.
- Pritisnite 'Dodaj'.
Korak 3: Otvara se dijaloški okvir za skriptiranje u kojem će korisnik moći napisati korisnički definiranu skriptu za provjeru valjanosti XML-a odgovora.
Korak 4: Sada napišimo groovy skriptu za provjeru stope konverzije. Skripta je priložena u nastavku s ugrađenim komentarima. Preporučljivo je imati znanje o Java Skripta ili Groovy Skriptu prije pokušaja pisanja vlastite skripte.
//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"}
- Pritisnite gumb 'Izvrši' za pokretanje izvršenja.
- Izlaz skripte prikazan je u oknu Izlaz. Ispisao je oboje, vrijednost konverzije kao i krajnji rezultat (prošao ili nije prošao)
- Prikazuje se informacija da je 'Script Assertion Passed'. Pritisnite OK.
Napomena: Konačni skočni prozor s informacijama uvijek će se prikazati s porukom 'Tvrdnja o skripti prošla' sve dok je skripta sintaktički ispravna. Nema nikakve veze s vašom tvrdnjom unutar scenarija.
Kliknite U redu
Korak 5: Sada kartica s tvrdnjama prikazuje sve tvrdnje koje smo dodali za ovaj skup testova sa statusom za svaku od njih.
Korak 6: Sada
- Odaberite Test Suite iz stabla Navigatora
- Pritisnite gumb "Pokreni".
- Rezultati bi se prikazali za cijeli skup testova.
Xquery Match Assertion
Koristi Xquery izraz za odabir sadržaja iz ciljnog svojstva. Potreban nam je puno veći XML odgovor kako bismo bolje razumjeli XQuery tvrdnju u SoapUI. Uvezimo još jedan WSDL kao što je prikazano u nastavku: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Korak 1: Izvedite desni klik na postojeći projekt i odaberite 'Add WSDL'.
Korak 2: Izvedite desni klik na postojeći projekt i odaberite 'Add WSDL'. Ostale opcije ostavite kao zadane i kliknite gumb 'OK'.
Korak 3: Sve operacije navedene su kao što je prikazano u nastavku.
Korak 4: Sada dodajmo a Testni slučaj unutar istog testnog paketa za koji smo kreirali Ispitivanje pretvarač valuta.
Korak 5: Unesite naziv testnog slučaja i kliknite gumb 'OK'
Korak 6: Testni slučaj je kreiran kao što je prikazano u nastavku.
Korak 7: dodati
novi testni korak tipa 'Zahtjev za testiranje sapuna' kao što je prikazano u nastavku.
Korak 8: Unesite naziv testnog koraka. Recimo – Supplier_by_City što bi bilo smislenije Kliknite 'OK'.
Korak 9: Odaberite Operacija koju želimo potvrditi. U ovom slučaju to je 'MedicareSupplierSoap -> GetSupplierByCity'. Pritisnite 'OK'.
Korak 10: Unesite naziv testnog slučaja i kliknite 'U redu'.
Korak 11: XML pregled zahtjeva bit će prikazan kao što je prikazano u nastavku.
Korak 12: Sada ćemo pronaći sve informacije o dobavljačima za grad 'New York'.
Da biste to učinili, dodajte sljedeće retke svom kodu.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL u donjem URL-u – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Korak 13: Nakon izvršenja testa dobivamo odgovor u nastavku
Korak 14: Recimo da trebamo potvrditi sve brojeve dobavljača. Ne možemo koristiti XPath Assertion jer trebamo imati stotine XPath Assertion. Stoga je korištenje XQueryja u ovom slučaju neizbježno.
XQuery Assertion pomaže nam potvrditi grupu XML odgovora koji se po prirodi ponavljaju.
Korak 15: Sada kliknite na "Dodaj tvrdnju",
- Odaberite 'Kategoriju tvrdnji' – u ovom slučaju sadržaj svojstva.
- Odaberite vrstu tvrdnje kao 'XQuery tvrdnju'
- Pritisnite 'Dodaj'.
Korak 16: Slično XPath tvrdnji, trebamo deklarirati imenski prostor.
-
Pritisnite gumb 'Deklaraj' kako biste automatski dopustili SOAP UI-u da deklarira imenski prostor. Nakon klika na gumb za deklariranje, korisniku će se prikazati 'POP up' s porukom 'deklariraj imenski prostor iz sheme umjesto toga'. Pritisnite 'Da' za nastavak kako je prikazano u nastavku.
Bilješka: Nakon što pritisnete 'Deklaraj gumb' mogli biste završiti s različitim URL-ovima kao deklaracijom prostora imena, međutim, stvarni prostor imena web usluge je ono što bi se razmatralo za kodiranje.
- Za dohvaćanje svih brojeva dobavljača, moramo napisati XPath upit i smjestit ćemo ga unutar < SupplierNumber> i Oznake.
- Kliknite 'Odaberi iz trenutnog' koji će se izvršiti iz trenutnog odgovora.
- Nakon klika na 'Odaberi iz trenutnog', navedeni su svi brojevi dobavljača.
- Kliknite 'Spremi'.
// 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)} }
Korak 17: Izvršava se XQuery Assertion i prikazuje konačni rezultat na ploči 'Assertion' kao što je prikazano u nastavku. Sada smo uspješno dodali Xquery tvrdnju pomoću koje smo potvrdili sve podatke o broju dobavljača. Isto bi se uspoređivalo sa stvarnim podacima, svaki put kada bi se zahtjev poslao web poslužitelju.
Napomena: Stvarne vrijednosti neće biti prikazane. Ako su sve stvarne vrijednosti iste kao očekivane vrijednosti, tada se prikazuje VALID inače će se prikazati 'Failed'.
Kada koristiti ugrađenu tvrdnju?
- Kada je odgovor kratak tako da se može potvrditi pomoću jedne od tih ugrađenih tvrdnji.
- Također možemo koristiti Inbuilt Assertion ako je odgovor poslan s web poslužitelja uvijek statične prirode. Ako je dinamičan, nećemo ga moći potvrditi pomoću ugrađenih tvrdnji.
- Kada upotreba ugrađenih tvrdnji kao što su tvrdnje o isteku vremena i sigurnosne tvrdnje postane neizbježna.
- Ugrađene tvrdnje prilično su dobre za jednokratnu upotrebu gdje se testovi ne moraju ponavljati.
Opcije tvrdnji
Stvorene tvrdnje najbolje se mogu kontrolirati uz pomoć upravljačke ploče koja je istaknuta u nastavku.
Stvorene tvrdnje omogućuju testerima da konfiguriraju sljedeće stvari iz okvira s alatima za tvrdnje.
opcija | Description |
---|---|
|
Odabrana tvrdnja pomiče se prema gore. |
|
Odabrana tvrdnja pomiče se nizom. |
|
Uklanja odabranu tvrdnju |
|
Ponovno konfigurirajte/uredite odabranu tvrdnju. |
- Ispod su značajke dostupne isključivo u PRO verziji SOAP UI. PRO verzija također nam pomaže da grupiramo tvrdnje tako da možemo dodati još jedan sloj provjere valjanosti kreiranim tvrdnjama.
- Pro verzija također dopušta Kloniranje tvrdnji: Ova opcija omogućuje testerima da dopuste kopiranje tvrdnje u drugi testni korak u istom ili drugom projektu.
- Onemogući/omogući tvrdnje: Ova opcija omogućuje da se bilo koja grupirana ili negrupirana tvrdnja onemogući ili omogući. Ako je tvrdnja onemogućena, zasivljena je i kada se izvrši testni slučaj, onemogućene tvrdnje se neće izvršiti.
- Razgrupiraj tvrdnje: Sve grupirane tvrdnje mogu se razgrupirati ako ispitivači tako odluče.
I: Sve tvrdnje se procjenjuju kao VALJANE tvrdnje što će rezultirati PROĐENIM grupnim uvjetom. ILI: Barem jedna od tvrdnji unutar grupe mora biti VALJANA kako bi se potvrdio PROĐENI grupni uvjet.
Potpuni popis metoda dostupnih u različitim vrstama tvrdnji
Mehanizam potvrđivanja |
Description |
SADRŽAJ NEKRETNINE | |
sadrži | Traži postojanje navedenog niza. Također podržava regularni izraz. |
Ne sadrži | Traži Nepostojanje navedenog niza. Također podržava regularni izraz. |
XPath podudaranje | Koristi XPath izraz za odabir ciljnog čvora i njegovih vrijednosti. |
XQuery podudaranje | Koristi Xquery izraz za odabir sadržaja iz ciljnog svojstva. |
Sukladnost, status, standardi | |
HTTP Preuzmi sve resurse | Provjerava valjanost HTML dokumenta nakon preuzimanja i vrijedi za sva svojstva koja sadrže HTML. |
Nevažeći HTTP statusni kodovi | Provjerava sadrži li HTML odgovor statusni kod koji nije na popisu definiranih kodova. |
Nije SOAP greška | Provjerava nije li zadnja primljena poruka SOAP greška. Vrlo je očito da je primjenjiv samo za SOAP Test Steps. |
Usklađenost sheme | Provjerava je li posljednja primljena poruka u skladu s definicijom standardne sheme WSDL ili WADL. Odgovara za SOAP i REST testne korake. |
Kvar SOAP-a | Provjerava je li zadnja primljena poruka SOAP greška. To je obrnuto od 'NIJE SOAP' tvrdnji o grešci. |
SOAP odgovor | Provjerava je li zadnji primljeni odgovor važeći SOAP odgovor i vrijedi samo za korake zahtjeva za testiranje SOAP-a. |
Važeći HTTP statusni kodovi | Provjerava sadrži li HTML odgovor statusni kod koji se nalazi na popisu definiranih kodova. To je obratno od tvrdnje 'Nevažeći HTTP statusni kodovi'. |
WS-Zahtjev za adresiranje | Provjerava sadrži li posljednji primljeni zahtjev odgovarajuća zaglavlja WS-adresiranja. |
WS-Addressing Response | Provjerava sadrži li zadnji primljeni odgovor odgovarajuća zaglavlja WS-adresiranja. |
WS-Sigurnosni status | Provjerava sadrži li zadnja primljena poruka važeća WS-Security zaglavlja i vrijedi samo za SOAP zahtjeve. |
Script | |
Skriptna tvrdnja | Korisnicima omogućuje izvršavanje prilagođene skripte za izvođenje korisnički definiranih provjera valjanosti. |
SLA | |
Odgovor SLA | Provjerava je li vrijeme odgovora zadnjeg primljenog odgovora unutar definiranog ograničenja. |
JMS | |
JMS status | Provjerava je li JMS zahtjev testnog koraka uspješno izvršen i vrijedi li za testne korake s JMS krajnjom točkom. |
Istek vremena JMS-a | Provjerava je li odgovor JMS-a testnog koraka trajao dulje od navedenog trajanja. |
Sigurnost | |
Izlaganje osjetljivim informacijama | Provjerava da li poruka odgovora ne otkriva osjetljive informacije o ciljnom sustavu. Ovu tvrdnju možemo koristiti za REST, SOAP i HTTP testne korake. |
PREUZMITE SOAPUI PROJEKT KOJI SADRŽI GORNJE TVRDNJE
Uobičajene pogreške i rješavanje problema
Koristite ispravan prostor imena. Prostor naziva trebao bi biti URL na kojem se nalazi web usluga.
Ako dođe do pogreške tijekom razvijanja skriptne tvrdnje, upotrijebite 'log.info' za ispis sadržaja varijabli
Ako nemate željeni izlaz, provjerite je li u zahtjevu proslijeđen važeći unos.
Na primjer, u pretvaraču valuta, ako unesete 'intA' kao 'x' koji nije cijeli broj, izlaz će izbaciti kod pogreške kao 'SOAP-klijent' što znači da je problem u parametru koji se prosljeđuje iz strana klijenta.
Provjerite koristite li ispravnu sintaksu dok koristite XPATH i XQuery tvrdnju. NE biste trebali koristiti točku(.) umjesto dvotočke(:) dok koristite gornju tvrdnju. Sintaksa je //namespace:Tagname, a NE //namespace.tagname. Ako to učinite, mogli biste završiti s porukom "NE odgovara u trenutnom odgovoru", iako je naziv oznake točan.