SoapUI:n väitteet: komentosarjat, XQuery, XPath-tyyppien opetusohjelma
Mikä on väite?
Väite tarkoittaa tekoa vahvistaa tai väittää jotain. Se voidaan myös tulkita tarkistuspisteeksi tai vahvistuspisteeksi.
Kun pyyntö on lähetetty verkkopalvelimelle, vastaanotetaan vastaus. Meidän on vahvistettava, sisältääkö vastaus odottamamme tiedot. Vahvistaaksemme vastauksen meidän on käytettävä väitteitä.
Väitteiden tyypit
On olemassa useita tapoja esittää vastaus; Keskitymme kuitenkin yleisesti käytettyihin SoapUI-väitteisiin, kun vahvistamme vastausta. Alla on ne, jotka ovat saatavilla SoapUI:n avoimen lähdekoodin versiossa.
- Kiinteistön sisältö
- Compliance Status Standard
- Käsikirjoitus
- SLA
- JMS
- Turvallisuus

Yllä lueteltujen lisäksi PRO-versiossa on myös sisäänrakennettu JDBC Assertion, jonka avulla voimme todeta, onko verkkopalvelu päivittänyt tietokannan oikein.
SISÄLTÄÄ VAATIMUKSEN
Etsii määritetyn merkkijonon olemassaoloa. Se tukee myös säännöllistä lauseketta.
Jatkamme samalla esimerkillä edellisestä opetusohjelmasta WSDL-pyynnöllä as http://www.dneonline.com/calculator.asmx.
Vaihe 1: Oletuksena ei ole väitteitä.
- Väitteiden määrä näkyy Väitteet-välilehdessä.
- Lisää uusi väite napsauttamalla Lisää uusi väite -painiketta.
Vaihe 2: Nyt,
- Valitse väiteluokka.
- Valitse väitteen tyyppi.
- Napsauta "Lisää"
Vaihe 3: Tarkastetaan, onko vastauksessa merkkijono '46'. napsauta 'OK'
Huomautus: Voimme myös jättää kirjainkoon huomioimatta ja lisätä säännöllisen lausekkeen.
Vaihe 4: Kun se lisätään, väite suoritetaan välittömästi ja näyttää, onko VÄÄLLÄ vai VIRHEELLINEN.
Vaihe 5: Sanotaan nyt, että muutamme "Contains Assertion in SoapUI" sisällön arvoksi "47" ja katsotaan mitä tapahtuu.
Vaihe 6: Väite suoritetaan ja tulos heitetään käyttäjälle. Koska meillä ei ole merkkijonoa "47" vastauksessa, väite on epäonnistunut.
EI SISÄLTÄÄ VAATIMUSTA
Etsii määritetyn merkkijonon olemattomuutta. Se tukee myös säännöllistä lauseketta.
Vaihe 1: Nyt kun olet napsauttanut Lisää uusia väitteitä -painiketta,
- Valitse väiteluokka.
- Valitse väitteen tyyppi – tässä tapauksessa "EI sisällä"
- Napsauta "Lisää"
Vaihe 2: Tarkastetaan, onko vastauksessa merkkijono "intA". Kirjoita merkkijono "FromCurrency" ja napsauta "OK"
Vaihe 3: Heti kun väite lisätään, se suorittaa ja näyttää tuloksen. Tähän mennessä olemme lisänneet kaksi väitettä, joten molemmat väitteet suoritetaan ja tulokset näytetään.
Vaihe 4: Muutetaan nyt "Ei sisältää väitteen" sisältöä ja katsotaan mitä tapahtuu. Tarkistamme, ettei merkkijonoa "AddResult" ole olemassa.
Vaihe 5: Merkkijono 'AddResult' on itse asiassa läsnä vastauksessa, joten 'NOT Contains' -väite epäonnistuu alla esitetyllä tavalla.
XPATH MATCH VAATIMUS
käytät XPath lauseke valitaksesi kohdesolmun ja sen arvot. XPath on XML-kyselykieli solmujen valitsemiseen XML-dokumentista.
Vaihe 1: Nyt kun olet napsauttanut Lisää uusia väitteitä -painiketta,
- Valitse väiteluokka.
- Valitse väitteen tyyppi – tässä tapauksessa XPath Match
- Napsauta "Lisää"
Vaihe 2: Lisää XPath -ikkuna avautuu.
Ennen SoapUI XPathin lisäämistä meidän on ilmoitettava nimiavaruus. XML-nimiavaruus on kokoelma nimiä, jotka tunnistetaan Uniform Resource Identifier (URI) -viittauksella ja joita käytetään XML-dokumenteissa elementtien ja määritteiden niminä. Samaa käytetään SOAP UI XPath Assertionissa.
XML-nimiavaruuden ilmoittamiseksi meidän tarvitsee vain napsauttaa 'Ilmoita'-painiketta, joka tekisi työn puolestamme, muuten voimme myös ilmoittaa nimiavaruuden manuaalisesti itse.
Nimiavaruuden ilmoittamisen jälkeen meidän on viitattava XPathiin luotua nimiavaruutta käyttämällä.
Kun napsautat Ilmoita-painiketta, kaksi nimiavaruutta avautuu, koska meillä on kaksi URI:ta. Yksi niistä on skeeman URL-osoite ja toinen vastaa todellista verkkopalvelun URL-osoitetta. Meidän on käytettävä todellista nimiavaruutta, jossa verkkopalvelu sijaitsee, eikä skeeman nimiavaruutta viitattaessa XPathiin.
ilmoittaa nimiavaruudesta soap='http://schemas.xmlsoap.org/soap/envelope/';
julistaa nimiavaruuden ns1='http://tempuri.org/';
Vaihe 3: Nyt meidän on syötettävä sen XML-solmun XPath, joka meidän on vahvistettava.
//ns1:AddResult Antaa meille välissä olevan solmun arvon & ja ns1 vastaa ilmoitettua nimiavaruutta, joka osoittaa osoitteeseen "http://tempuri.org/"
Kun olet syöttänyt XML:n, meidän on napsautettava 'Valitse nykyisestä', jotta nykyisen vastauksen arvo poimitaan vertailua varten.
Vaihe 4: Tähän mennessä
- Kun nimitilat on ilmoitettu, olemme syöttäneet XML-solmun XPath-osoitteen, joka meidän on vahvistettava.
- Meidän on napsautettava 'Valitse nykyisestä', jotta nykyinen arvo asetetaan odotetuksi arvoksi.
- Nykyinen arvo näytetään käyttäjälle, jota voimme tarvittaessa muuttaa.
- Napsauta 'Tallenna'.
Vaihe 5: Lisätty väite SoapUI:ssa näytetään alla olevan kuvan mukaisesti.
Scripting Assertions
Tämä väitetekniikka on laajimmin käytetty, koska se on erittäin vaikeaa hallita ja ylläpitää satoja väitteitä.
SOAP UI käyttää jompaakumpaa Groovy Käsikirjoitus tai JavaKäsikirjoitus skriptiväitteitä varten. Komentosarjatekniikkaa käytetään SOAP-testauksen kehyksen kehittämiseen. Skriptiväitteitä käytetään seuraavissa olosuhteissa.
Komentosarjan avulla käyttäjä voi suorittaa joitain toimintoja ennen TestCasen suorittamista ja sen jälkeen käyttämällä asennus- ja purkumenetelmiä. Asennus on prosessi, joka suoritetaan ennen tietyn menetelmän suorittamista (esimerkki - Objektin luominen ja alustus), kun taas purkaminen on prosessi, joka suoritetaan menetelmän suorittamisen jälkeen (esim. objektien tuhoaminen ja puhdistaminen). Tämä ominaisuus ei ole käytettävissä muissa väittelytyypeissä, ja se voidaan tehdä vain koodaamalla.
Sen avulla käyttäjät voivat avata/sulkea projektin, käynnistää tai puhdistaa projektiin liittyviä asetuksia sekä työskennellä ympäristömuuttujien kanssa, mikä on erittäin hyödyllistä komentosarjan aikana.
Se auttaa meitä vahvistamaan dynaamista vastaussisältöä.
Komentosarjaväitteitä käytetään sellaisten käyttäjän määrittämien väitteiden luomiseen, joita SOAP UI EI ole ennalta määrittänyt.
Script-väitteen osoittamiseen SoapUI:ssa käytämme WSDL-laskinta, aiemmin luomaamme testitapausta "Lisää".
Vaihe 1: Vaiheittaisten skriptien lisääminen on sama kuin muissakin väitteissä, paitsi että väite ei ole ennalta määritetty. Sen sijaan se on käyttäjän määrittelemä väite, joka tarjoaa enemmän joustavuutta kuin sisäänrakennetut väitteet.
Valitse testivaihe, jota vasten väite on lisättävä.
Napsauta "Lisää väite" -painiketta alla olevan kuvan mukaisesti.
Vaihe 2: Valitse nyt Assertion-luokka.
- Tässä tapauksessa se on Script.
- Valitse SoapUI Script Assertion eikä siihen liity alatyyppejä.
- Napsauta Lisää.
Vaihe 3: Komentosarjavalintaikkuna avautuu, jossa käyttäjä voi kirjoittaa käyttäjän määrittämän komentosarjan vahvistaakseen vastauksen XML:n.
Vaihe 4: Kirjoita nyt hieno skripti tulosprosentin vahvistamiseksi. Käsikirjoitus on alla liitettynä kommenttien kanssa. Asiantuntemus on suositeltavaa Java Käsikirjoitus tai Groovy Käsikirjoita ennen kuin yrität kirjoittaa oman käsikirjoituksen.
//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"}
- Napsauta "Suorita"-painiketta käynnistääksesi suoritus.
- Komentosarjan tulos näkyy Output-ruudussa. Se on tulostanut sekä tulosarvon että lopputuloksen (hyväksytty tai epäonnistunut).
- Näytölle tulee tieto, että "Script Assertion Passed". Napsauta OK.
Huomautus: Viimeinen Information-ponnahdusikkuna näkyy aina viestillä "Script Assertion Passed" niin kauan kuin komentosarja on syntaktisesti oikein. Sillä ei ole korrelaatiota käsikirjoituksen sisältämän väitteesi kanssa.
OK
Vaihe 5: Nyt väitteet-välilehti näyttää kaikki väitteet, jotka olimme lisänneet tähän testisarjaan, ja niiden tila on jokaista niistä vastaan.
Vaihe 6: Nyt
- Valitse Test Suite Navigator-puusta
- Napsauta Suorita-painiketta
- Tulokset näytetään koko testipaketin osalta.
Xquery Match Assertion
Se käyttää Xquery-lauseketta sisällön valitsemiseen kohdeomaisuudesta. Tarvitsemme paljon suuremman vastaus-XML:n ymmärtääksemme paremmin XQuery-väitteen SoapUI:ssa. Tuodaan yksi toinen WSDL alla olevan kuvan mukaisesti: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Vaihe 1: Napsauta hiiren kakkospainikkeella olemassa olevaa projektia ja valitse 'Lisää WSDL'.
Vaihe 2: Napsauta hiiren kakkospainikkeella olemassa olevaa projektia ja valitse 'Lisää WSDL'. Jätä muut vaihtoehdot oletusasetuksiksi ja napsauta 'OK'-painiketta.
Vaihe 3: Kaikki toiminnot on lueteltu alla olevan kuvan mukaisesti.
Vaihe 4: Lisätään nyt a Testitapaus samassa testisarjassa, jota varten olimme luoneet Testaus valuuttamuunnin.
Vaihe 5: Anna testitapauksen nimi ja napsauta 'OK'-painiketta
Vaihe 6: Testitapaus luodaan alla olevan kuvan mukaisesti.
Vaihe 7: Lisää
uusi testivaihe Tyyppi 'Soap Test Request' alla olevan kuvan mukaisesti.
Vaihe 8: Anna testivaiheen nimi. Sanotaan – Toimittaja_kaupungin mukaan mikä olisi mielekkäämpää Napsauta 'OK'.
Vaihe 9: Valitse Operajonka haluamme vahvistaa. Tässä tapauksessa se on 'MedicareSupplierSoap -> GetSupplierByCity'. Napsauta 'OK'.
Vaihe 10: Anna testitapauksen nimi ja napsauta 'OK'.
Vaihe 11: Request XML Outline näytetään alla olevan kuvan mukaisesti.
Vaihe 12: Etsitään nyt kaikki New Yorkin toimittajatiedot.
Voit tehdä tämän lisäämällä seuraavat rivit koodiisi.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL alla olevassa URL-osoitteessa - http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Vaihe 13: Testin suorittamisen jälkeen saamme alla olevan vastauksen
Vaihe 14: Oletetaan, että meidän on vahvistettava kaikki toimittajanumerot. Emme voi käyttää XPath-väitteitä, koska tarvitsemme satoja XPath-väitteitä. Siksi XQueryn käyttö on tässä tapauksessa väistämätöntä.
XQuery Assertion auttaa meitä vahvistamaan ryhmän XML-vastauksia, jotka ovat luonteeltaan toistuvia.
Vaihe 15: Napsauta nyt "Lisää väite",
- Valitse "Väitteen luokka" – tässä tapauksessa omaisuuden sisältö.
- Valitse väitteen tyypiksi "XQuery Assertion"
- Napsauta Lisää.
Vaihe 16: XPath Assertionin tapaan meidän on ilmoitettava nimiavaruus.
-
Napsauta Ilmoita-painiketta, jotta SOAP-käyttöliittymä voi automaattisesti ilmoittaa nimitilan. Kun napsautat Ilmoita-painiketta, käyttäjälle tulee näkyviin 'POP-up', jossa on viesti 'declare namespace from schema sijaan'. Napsauta 'Kyllä' jatkaaksesi alla kuvatulla tavalla.
Huomautus: Kun painat 'Ilmoita-painiketta', saatat päätyä eri URL-osoitteisiin nimiavaruuden määrittelynä, mutta varsinainen verkkopalvelun sijainnin nimiavaruus otetaan huomioon koodauksessa.
- Kaikkien toimittajanumeroiden hakemiseksi meidän on kirjoitettava XPath-kysely ja sijoitamme sen kohtaan < Toimittajanumero> ja Tunnisteet.
- Napsauta 'Valitse nykyisestä', joka suoritetaan nykyisestä vastauksesta.
- Kun napsautat 'Valitse nykyisestä', kaikki toimittajanumerot näkyvät luettelossa.
- Napsauta 'Tallenna'.
// 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)} }
Vaihe 17: XQuery Assertion suoritetaan ja näyttää lopullisen tuloksen Assertion-paneelissa alla olevan kuvan mukaisesti. Nyt olemme onnistuneesti lisänneet Xquery-väitteen, jonka avulla olemme vahvistaneet kaikki toimittajan numerotiedot. Samaa verrattaisiin todellisuuteen aina, kun pyyntö lähetetään verkkopalvelimelle.
Huomautus: Todellisia arvoja ei näytetä. Jos kaikki todelliset arvot ovat samat kuin odotetut arvot, se näyttää VALID, muuten se näyttää 'Failed'.
Milloin käyttää sisäänrakennettua väitettä?
- Kun vastaus on lyhyt niin, että se voidaan vahvistaa käyttämällä jotakin näistä sisäänrakennetuista väitteistä.
- Voimme käyttää myös sisäänrakennettua väitettä, jos verkkopalvelimelta lähetetty vastaus on aina staattista. Jos se on dynaaminen, emme voi väittää sitä käyttämällä sisäänrakennettuja väitteitä.
- Kun sisäänrakennettujen väitteiden, kuten aikakatkaisu- ja turvallisuusväitteiden, käytöstä tulee väistämätöntä.
- Sisäänrakennettu Assertions sopii melko hyvin kertakäyttöön, jossa testejä ei tarvitse toistaa.
Väitteet Asetukset
Luotuja väitteitä voidaan parhaiten hallita ohjauspaneelin avulla, joka on korostettu alla.
Luotujen väitteiden avulla testaajat voivat määrittää seuraavat asiat väitteet-työkalulaatikosta.
Vaihtoehto | Tuotetiedot |
---|---|
|
Valittu väite siirtyy järjestyksessä ylöspäin. |
|
Valittu väite siirtyy järjestyksessä alaspäin. |
|
Poistaa valitun väitteen |
|
Määritä/muokkaa valittu väite uudelleen. |
- Alla on ominaisuudet, jotka ovat saatavilla yksinomaan SOAP-käyttöliittymän PRO-versiossa. PRO-versio auttaa meitä myös ryhmittelemään väitteitä, jotta voimme lisätä luotuihin väitteisiin vielä yhden vahvistuskerroksen.
- Pro-versio mahdollistaa myös Väitteiden kloonaus: Tämän vaihtoehdon avulla testaajat voivat kopioida väitteen eri testivaiheeseen samassa tai eri projektissa.
- Disable/Enable Assertions: Tämän vaihtoehdon avulla kaikki ryhmitetyt tai ryhmittämättömät väitteet voidaan poistaa käytöstä tai ottaa käyttöön. Jos väite on poistettu käytöstä, se näkyy harmaana ja kun testitapaus suoritetaan, käytöstä poistettuja väitteitä ei suoriteta.
- Pura väitteiden ryhmittely: Kaikki ryhmitetyt väitteet voidaan purkaa, jos testaajat päättävät tehdä niin.
JA: Kaikki väitteet arvioidaan PÄÄLLÄ väitteiksi, jotka johtavat ryhmän HYVÄKSYTTY ehtoon. TAI: Vähintään yhden ryhmän väitteistä on oltava VOIMASSA, jotta ryhmän ehto HYVÄKSYTTY.
Täydellinen luettelo menetelmistä, jotka ovat saatavilla eri väitetyypeissä
Toteutusmekanismi |
Tuotetiedot |
OMAISUUS SISÄLTÖ | |
Sisältää | Etsii määritetyn merkkijonon olemassaoloa. Se tukee myös säännöllistä lauseketta. |
Ei Sisältää | Etsii määritetyn merkkijonon olemattomuutta. Se tukee myös säännöllistä lauseketta. |
XPath Match | Käyttää XPath-lauseketta kohdesolmun ja sen arvojen valitsemiseen. |
XQuery Match | Käyttää Xquery-lauseketta sisällön valitsemiseen kohdeomaisuudesta. |
Vaatimustenmukaisuus, tila, standardit | |
HTTP Lataa kaikki resurssit | Vahvistaa HTML-dokumentin latauksen jälkeen ja se pätee kaikkiin HTML-koodia sisältäviin ominaisuuksiin. |
Virheelliset HTTP-tilakoodit | Tarkistaa, sisältääkö HTML-vastaus tilakoodin, joka ei ole määritettyjen koodien luettelossa. |
Ei SOAP-vika | Tarkistaa, ettei viimeksi vastaanotettu viesti ole SOAP-virhe. On hyvin ilmeistä, että se soveltuu vain SOAP-testivaiheisiin. |
Kaavioyhteensopivuus | Tarkistaa, onko viimeksi vastaanotettu viesti WSDL- tai WADL-standardin skeeman määritelmän mukainen. Sopii hyvin SOAP- ja REST-testivaiheisiin. |
SOAP-vika | Tarkistaa, onko viimeksi vastaanotettu viesti SOAP-virhe. Se on käänteinen 'NOT SOAP' -virheväitteille. |
SOAP-vastaus | Tarkistaa, onko viimeisin vastaanotettu vastaus kelvollinen SOAP-vastaus ja pätee vain SOAP-testipyyntövaiheisiin. |
Kelvolliset HTTP-tilakoodit | Tarkistaa, sisältääkö HTML-vastaus tilakoodin, joka on määritettyjen koodien luettelossa. Se on "Invalid HTTP Status Codes" -väitteen käänteisversio. |
WS-osoitepyyntö | Tarkistaa, sisältääkö viimeisin vastaanotettu pyyntö asianmukaiset WS-osoiteotsikot. |
WS-osoitevastaus | Tarkistaa, sisältääkö viimeisin vastaanotettu vastaus asianmukaiset WS-osoiteotsikot. |
WS-Security Status | Vahvistaa, sisältääkö viimeisin vastaanotettu viesti kelvollisia WS-Security-otsikoita ja pätee vain SOAP-pyyntöihin. |
Käsikirjoitus | |
Käsikirjoituksen väite | Antaa käyttäjien suorittaa mukautetun komentosarjan käyttäjän määrittämien tarkistusten suorittamiseksi. |
SLA | |
Vastaus SLA | Vahvistaa, jos viimeksi vastaanotetun vastauksen vastausaika oli määritetyn rajan sisällä. |
JMS | |
JMS-tila | Varmistaa, että testivaiheen JMS-pyyntö on suoritettu onnistuneesti ja pätee testivaiheisiin, joissa on JMS-päätepiste. |
JMS-aikakatkaisu | Tarkistaa, eikö testivaiheen JMS-vaste kestänyt määritettyä kestoa pidempään. |
Turvallisuus | |
Altistuminen arkaluonteiselle tiedolle | Tarkistaa, ettei vastausviesti paljasta kohdejärjestelmää koskevia arkaluontoisia tietoja. Voimme käyttää tätä väitettä REST-, SOAP- ja HTTP-testivaiheissa. |
LATAA YDELLISET VAATIMUKSET SISÄLTÄÄ SOAPUI-PROJEKTI
Yleiset virheet ja vianmääritys
Käytä oikeaa nimiavaruutta. Nimitilan tulee olla URL-osoite, jossa verkkopalvelu sijaitsee.
Jos skriptiväitettä kehitettäessä ilmenee virhe, tulosta muuttujien sisältö log.infolla
Jos et ole saanut haluttua tulosta, tarkista, onko pyynnössä välitetty kelvollinen syöte.
Jos esimerkiksi valuuttamuuntimessa syötät 'intA':n muodossa 'x', joka ei ole kokonaisluku, tulos antaa vikakoodin muodossa 'SOAP-Client', mikä tarkoittaa, että ongelma liittyy parametrista, joka välitetään asiakkaan puolella.
Varmista, että käytät oikeaa syntaksia käyttäessäsi XPATH- ja XQuery-väitteitä. ÄLÄ käytä pistettä (.) kaksoispisteen (:) sijaan, kun käytät yllä olevaa väitettä. Syntaksi on //namespace:Tagname ja EI //namespace.tagname. Jos teet niin, saatat saada viestin "EI vastaavuutta nykyisessä vastauksessa", vaikka tunnisteen nimi on oikea.