Väited SoapUI-s: skriptid, XQuery, XPathi tüüpide õpetus
Mis on väide?
Väitmine tähendab millegi kinnitamist või väljaütlemist. Seda võib tõlgendada ka kontroll- või kinnituspunktina.
Kui päring on veebiserverisse saadetud, saadakse vastus. Peame kinnitama, kas vastus sisaldab andmeid, mida ootame. Vastuse kinnitamiseks peame kasutama väiteid.
Väidete tüübid
Vastuse kinnitamiseks on erinevaid viise; vastuse kinnitamisel keskendume siiski tavaliselt kasutatavatele SoapUI väidete tüüpidele. Allpool on need, mis on saadaval SoapUI avatud lähtekoodiga versioonis.
- Omandi sisu
- Vastavuse oleku standard
- Script
- SLA
- JMS
- TURVALISUS
Peale ülalloetletute on PRO versioonil ka sisseehitatud JDBC Assertion, mille abil saame kinnitada, kas veebiteenus on andmebaasi õigesti värskendanud.
SISALDAB VÄIDET
Otsib määratud stringi olemasolu. Samuti toetab see regulaaravaldist.
Jätkame sama näitega eelmisest õpetusest WSDL-i päringuga nagu http://www.dneonline.com/calculator.asmx.
Samm 1: Vaikimisi väiteid pole.
- Väidete arv kuvatakse vahekaardil Väited.
- Uue väite lisamiseks klõpsake nuppu "Lisa uus väide".
Samm 2: Nüüd,
- Valige väite kategooria.
- Valige väite tüüp.
- Klõpsake "Lisa"
Samm 3: Kontrollime, kas vastuses on string '46'. kliki 'OK'
Märkus. Võime ka eirata suurtähti ja lisada regulaaravaldise.
Samm 4: Selle lisamisel käivitatakse kohe väide ja näidatakse, kas see on VALID või VALITETU.
Samm 5: Oletame nüüd, et muudame jaotise „SoapUI-s sisalduv väide” sisuks „47” ja vaatame, mis juhtub.
Samm 6: Väide täidetakse ja tulemus edastatakse kasutajale. Kuna meil pole vastuses stringi "47", on väide ebaõnnestunud.
EI SISALD VÄIDET
Otsib määratud stringi puudumist. Samuti toetab see regulaaravaldist.
Samm 1: Pärast nupu „Lisa uued väited” klõpsamist,
- Valige väite kategooria.
- Valige väite tüüp – sel juhul "EI sisalda"
- Klõpsake "Lisa"
Samm 2: Kontrollime, kas string 'intA' on vastuses olemas. Sisestage string "FromCurrency" ja klõpsake "OK"
Samm 3: Niipea kui väide on lisatud, käivitatakse see ja kuvatakse tulemus. Siiani oleme lisanud kaks väidet, seega täidetakse mõlemad väited ja kuvatakse tulemus.
Samm 4: Nüüd muutkem "Ei sisalda väidet" sisu ja vaatame, mis juhtub. Kontrollime stringi "AddResult" puudumist.
Samm 5: String "AddResult" on vastuses tegelikult olemas, seega väide "EI Sisaldab" ebaõnnestub, nagu allpool näidatud.
XPATH MATCH KINNITUS
sa kasutad XPath avaldis sihtsõlme ja selle väärtuste valimiseks. XPath on XML-i päringukeel XML-dokumendist sõlmede valimiseks.
Samm 1: Pärast nupu "Lisa uued väited" klõpsamist,
- Valige väite kategooria.
- Valige väite tüüp – antud juhul XPath Match
- Klõpsake "Lisa"
Samm 2: Avaneb XPathi lisamise aken.
Enne SoapUI XPathi lisamist peame deklareerima nimeruumi. XML-nimeruum on nimede kogum, mis on identifitseeritud ühtse ressursiidentifikaatori (URI) viitega ja mida kasutatakse XML-dokumentides elementide ja atribuutide nimedena. Sama kasutatakse SOAP UI XPath Assertionis.
XML-nimeruumi deklareerimiseks peame lihtsalt klõpsama nuppu "Deklareeri", mis teeb selle töö meie eest ära, muidu saame nimeruumi ka ise käsitsi deklareerida.
Pärast nimeruumi deklareerimist peame viitama XPathile, kasutades loodud nimeruumi.
Kui klõpsate nupul "Deklareeri", avaneb kaks nimeruumi, kuna meil on kaks URI-d. Üks neist on skeemi URL ja teine vastab tegelikule veebiteenuse URL-ile. XPathile viidates peame kasutama tegelikku nimeruumi, kus veebiteenus asub, MITTE skeemi nimeruumi.
deklareeri nimeruumi soap='http://schemas.xmlsoap.org/soap/envelope/';
deklareeri nimeruum ns1='http://tempuri.org/';
Samm 3: Nüüd peame sisestama XML-sõlme XPath, mille peame kinnitama.
//ns1:AddResult Annab meile vahele jääva sõlme väärtuse & ja ns1 vastab deklareeritud nimeruumile, mis osutab aadressile 'http://tempuri.org/'
Pärast XML-i sisestamist peame klõpsama valikul „Vali praegusest”, et edaspidi võrreldaks praeguse vastuse väärtust.
Samm 4: Nii kaugel,
- Pärast nimeruumide deklareerimist oleme sisestanud XML-i sõlme XPath, mida peame kinnitama.
- Peame klõpsama 'Vali praegusest', et muuta praegune väärtus eeldatavaks väärtuseks.
- Praegust väärtust näidatakse kasutajale, mida saame vajadusel muuta.
- Klõpsake "Salvesta".
Samm 5: SoapUI-s lisatud väide kuvatakse allpool näidatud viisil.
Skriptimise väited
See väidete tehnika on kõige laialdasemalt kasutatav, kuna sadade väidete haldamine ja säilitamine on äärmiselt keeruline.
SOAP UI kasutab kumbagi Groovy Skriptimine või JavaScript skriptiväidete jaoks. Skriptimistehnikat kasutatakse SOAP-i testimise raamistiku väljatöötamiseks. Skriptimise väiteid kasutatakse järgmistel juhtudel.
Skriptimine võimaldab kasutajal teha mõningaid toiminguid enne ja pärast TestCase'i käivitamist, kasutades vastavalt häälestus- ja mahavõtmismeetodeid. Seadistamine on protseduur, mis käivitatakse enne konkreetse meetodi käivitamist (näide – objektide loomine ja initsialiseerimine), samas kui rebimine on protseduur, mis käivitatakse pärast meetodi käivitamist (nt objektide hävitamine ja puhastamine). See funktsioon pole muude kinnitustüüpide puhul saadaval ja seda saab teha ainult kodeerimisega.
See võimaldab kasutajatel projekti avada/sulgeda, projektiga seotud seadeid lähtestada või puhastada ning samuti töötada keskkonnamuutujatega, mis on skriptimise ajal väga abiks.
See aitab meil kinnitada dünaamilise vastuse sisu.
Skriptimisväiteid kasutatakse kasutaja määratud väidete loomiseks, mis EI ole SOAP UI poolt eelmääratletud.
Skripti kinnitamise demonstreerimiseks SoapUI-s kasutame kalkulaatorit WSDL, testjuhtumit "Lisa", mille olime varem loonud.
Samm 1: Keerulise skripti lisamise toimingud on samad, mis teiste väidete puhul, välja arvatud see, et väide ei ole eelnevalt määratletud. Selle asemel on see kasutaja määratletud väide, mis pakub suuremat paindlikkust kui sisseehitatud väited.
Valige testisamm, mille suhtes väide tuleb lisada.
Klõpsake nuppu "Lisa väide", nagu allpool näidatud.
Samm 2: Nüüd valige väide kategooria.
- Sel juhul on see skript.
- Valige SoapUI Script Assertion ja sellega pole seotud alamtüüpe.
- Klõpsake nuppu "Lisa".
Samm 3: Avaneb skriptimise dialoog, kus kasutaja saab vastuse XML-i kinnitamiseks kirjutada kasutaja määratud skripti.
Samm 4: Nüüd kirjutame konversioonimäära kinnitamiseks keeruka skripti. Skript on lisatud allpool koos manustatud kommentaaridega. Soovitav on omada teadmisi Java Skript või Groovy Skript enne oma skripti kirjutamist.
//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"}
- Käitamise käivitamiseks klõpsake nuppu "Käivita".
- Skripti väljund kuvatakse paanil Väljund. See on printinud nii konversiooniväärtuse kui ka lõpptulemuse (sobib või ebaõnnestus)
- Kuvatakse teave, et "Skripti kinnitus on läbitud". Klõpsake nuppu OK.
Märkus. Kui skript on süntaktiliselt õige, kuvatakse lõpliku teabe hüpikaken alati sõnumiga „Skripti kinnitus läbitud”. Sellel pole korrelatsiooni teie väitega skriptis.
OK
Samm 5: Nüüd kuvatakse kinnituste vahekaardil kõik väited, mille olime selle testikomplekti jaoks lisanud, koos olekuga nende kõigi vastu.
Samm 6: Nüüd
- Valige Navigaatori puust Test Suite
- Klõpsake nuppu "Käivita".
- Tulemused kuvatakse kogu testikomplekti kohta.
Xquery Match Assertion
See kasutab sihtvarast sisu valimiseks Xquery avaldist. Vajame palju suuremat vastuse XML-i, et paremini mõista XQuery väidet SoapUI-s. Impordime veel ühe WSDL-i, nagu allpool näidatud: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Samm 1: Tehke olemasoleval projektil paremklõps ja valige 'Lisa WSDL'.
Samm 2: Tehke olemasoleval projektil paremklõps ja valige 'Lisa WSDL'. Jätke muud valikud vaikevalikuks ja klõpsake nuppu OK.
Samm 3: Kõik toimingud on loetletud allpool näidatud viisil.
Samm 4: Nüüd lisame a Testjuhtum samas testkomplektis, mille jaoks olime loonud Testimine valuuta konverter.
Samm 5: Sisestage testjuhtumi nimi ja klõpsake nuppu "OK".
Samm 6: Testjuhtum luuakse allpool näidatud viisil.
Samm 7: lisama
uus testietapp tüübi 'Seebi testi taotlus', nagu allpool näidatud.
Samm 8: Sisestage testietapi nimi. Ütleme – Tarnija_linna järgi, mis oleks mõttekam Klõpsake nuppu „OK”.
Samm 9: Valige Operamida me kinnitada tahaksime. Sel juhul on see 'MedicareSupplierSoap -> GetSupplierByCity'. Klõpsake 'OK'.
Samm 10: Sisestage testjuhtumi nimi ja klõpsake nuppu "OK".
Samm 11: Request XML Outline kuvatakse nagu allpool näidatud.
Samm 12: Nüüd leiame kogu teabe New Yorgi tarnijate kohta.
Selleks lisage oma koodile järgmised read.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL allolevas URL-is – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Samm 13: Testi sooritamisel saame alloleva vastuse
Samm 14: Oletame, et peame kinnitama kogu tarnija numbri. Me ei saa kasutada XPathi väidet, kuna meil on vaja sadu XPathi väiteid. Seega on XQuery kasutamine antud juhul vältimatu.
XQuery Assertion aitab meil kinnitada XML-vastuste rühma, mis on oma olemuselt korduvad.
Samm 15: Nüüd klõpsake "Lisa väide",
- Valige „Väitekategooria” – antud juhul atribuudi sisu.
- Valige väite tüübiks "XQuery Assertion"
- Klõpsake nuppu "Lisa".
Samm 16: Sarnaselt XPath Assertioniga peame deklareerima nimeruumi.
-
Klõpsake nuppu „Deklareeri”, et lubada SOAP kasutajaliidesel automaatselt nimeruumi deklareerida. Deklareerimise nupul klõpsamisel kuvatakse kasutajale 'POP up' sõnumiga 'deklareeri nimeruum asemel skeemist'. Klõpsake nuppu "Jah", et jätkata nagu allpool näidatud.
Märge: Kui vajutate nuppu "Deklareeri", võite saada nimeruumi deklaratsioonina teistsugused URL-id, kuid kodeerimiseks võetakse arvesse tegelikku veebiteenuse asukoha nimeruumi.
- Kogu tarnijanumbri hankimiseks peame kirjutama XPath päringu ja asetame selle jaotisesse < TarnijaNumber> ja Sildid.
- Klõpsake "Vali praegusest", mis käivitatakse praegusest vastusest.
- Kui klõpsate nupul „Vali praegusest”, kuvatakse kõik tarnija numbrid.
- Klõpsake "Salvesta".
// 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)} }
Samm 17: XQuery Assertion käivitatakse ja kuvab lõpptulemuse paneelil "Assertion", nagu allpool näidatud. Nüüd oleme edukalt lisanud Xquery väite, mille abil oleme kinnitanud kogu tarnija numbri teabe. Sama võrreldaks tegelike andmetega iga kord, kui päring saadetakse veebiserverisse.
Märkus. Tegelikke väärtusi ei kuvata. Kui kõik tegelikud väärtused on samad, mis eeldatavad väärtused, siis kuvatakse VALID, muidu kuvatakse teade 'Ebaõnnestus'.
Millal kasutada sisseehitatud väidet?
- Kui vastus on nii lühike, et seda saab kinnitada ühe neist sisseehitatud väidetest.
- Saame kasutada ka sisseehitatud väidet, kui veebiserverist saadetud vastus on oma olemuselt alati staatiline. Kui see on dünaamiline, ei saa me seda sisseehitatud väidete abil kinnitada.
- Kui sisseehitatud väidete, nagu Time Out väited ja turvaväited, kasutamine muutub vältimatuks.
- Sisseehitatud väited sobivad üsna hästi ühekordseks kasutamiseks, kus teste pole vaja korrata.
Väidete valikud
Loodud väiteid saab kõige paremini juhtida juhtpaneeli abil, mis on allpool esile tõstetud.
Loodud väited võimaldavad testijatel konfigureerida järgmisi asju väidete tööriistakastist.
valik | Kirjeldus |
---|---|
Valitud väide liigub järjekorras üles. | |
Valitud väide liigub järjestuses allapoole. | |
Eemaldab valitud väite | |
Konfigureerige/redigeerige valitud väide uuesti. |
- Allpool on funktsioonid, mis on saadaval ainult SOAP UI PRO versioonis. PRO versioon aitab meil ka väiteid rühmitada, et saaksime loodud väidetele lisada veel ühe valideerimiskihi.
- Pro versioon võimaldab ka Väidete kloonimine: see suvand võimaldab testijatel lubada väite kopeerimist sama või teise projekti teise testietappi.
- Keela/luba väited: see suvand võimaldab mis tahes rühmitatud või rühmitamata väiteid keelata või lubada. Kui väide on keelatud, kuvatakse see hallina ja testjuhtumi täitmisel keelatud väiteid ei täideta.
- Väited rühmitamata: kui testijad otsustavad seda teha, saab kõik rühmitatud väited rühmitada.
JA: Kõiki väiteid hinnatakse KEHTIVATE väidetena, mille tulemuseks on grupi tingimus LÕIDUD. VÕI: vähemalt üks grupis olev väide peab olema KEHTIV, et kinnitada grupi tingimus LÕIDUD.
Erinevat tüüpi väidete jaoks saadaolevate meetodite täielik loetelu
Kehtestamise mehhanism |
Kirjeldus |
VARA SISU | |
Sisaldab | Otsib määratud stringi olemasolu. Samuti toetab see regulaaravaldist. |
Ei Sisalda | Otsib määratud stringi puudumist. Samuti toetab see regulaaravaldist. |
XPath Match | Kasutab XPathi avaldist sihtsõlme ja selle väärtuste valimiseks. |
XQuery Match | Kasutab sihtatribuudi sisu valimiseks Xquery avaldist. |
Vastavus, staatus, standardid | |
HTTP Laadige alla kogu ressurss | Valideerib HTML-dokumendi pärast allalaadimist ja see kehtib kõigi HTML-i sisaldavate atribuutide kohta. |
Kehtetud HTTP olekukoodid | Kontrollib, kas HTML-vastus sisaldab olekukoodi, mis ei ole määratletud koodide loendis. |
Pole SEEBI viga | Kontrollib, kas viimane vastuvõetud teade ei ole SOAP-tõrge. On väga ilmne, et see on rakendatav ainult SOAP-testi etappide jaoks. |
Skeemi järgimine | Kontrollib, kas viimati vastuvõetud sõnum on kooskõlas WSDL-i või WADL-i standardskeemi definitsiooniga. Sobib hästi SOAP- ja REST-testi etappide jaoks. |
SEEBI viga | Kontrollib, kas viimane vastuvõetud teade on SOAP-tõrge. See on 'NOT SOAP' veaväidete pöördväärtus. |
SEEBI vastus | Kontrollib, kas viimati saadud vastus on kehtiv SOAP-vastus, ja kehtib ainult SOAP-testipäringu sammude puhul. |
Kehtivad HTTP olekukoodid | Kontrollib, kas HTML-vastus sisaldab olekukoodi, mis on määratletud koodide loendis. See on valede HTTP olekukoodide väite pöördväärtus. |
WS-aadressi taotlus | Kontrollib, kas viimane vastuvõetud päring sisaldab sobivaid WS-aadressi päiseid. |
WS-aadressi vastus | Kontrollib, kas viimane vastus sisaldab sobivaid WS-aadressi päiseid. |
WS-turvalisuse olek | Kinnitab, kas viimane vastuvõetud sõnum sisaldab kehtivaid WS-Security päiseid ja kehtib ainult SOAP-i taotluste puhul. |
Script | |
Skripti väide | Võimaldab kasutajatel käivitada kohandatud skripti, et teostada kasutaja määratud valideerimist. |
SLA | |
Vastus SLA | Kinnitab, kui viimase vastuvõetud vastuse reageerimisaeg oli määratletud piirides. |
JMS | |
JMS-i olek | Kontrollib, kas testietapi JMS-i päring on edukalt täitnud ja kehtib JMS-i lõpp-punktiga testimisetappide puhul. |
JMS ajalõpp | Kontrollib, kas testietapi JMS-vastus ei kestnud kauem kui määratud kestus. |
TURVALISUS | |
Tundliku teabe kokkupuude | Kontrollib, kas vastusesõnum ei avalda sihtsüsteemi kohta tundlikku teavet. Seda väidet saame kasutada REST-, SOAP- ja HTTP-testi etappide jaoks. |
Laadige alla SOAPUI PROJEKT, MIS SISALDAB ülaltoodud väiteid
Levinud vead ja tõrkeotsing
Kasutage õiget nimeruumi. Nimeruum peaks olema URL, kus veebiteenus asub.
Kui skriptimise väite väljatöötamisel ilmneb viga, kasutage muutujate sisu printimiseks 'log.info'
Kui teil pole soovitud väljundit, kontrollige, kas päringus on edastatud kehtiv sisend.
Näiteks kui sisestate valuutamuunduris "intA" kui "x", mis ei ole täisarv, viskab väljund veakoodi "SOAP-klient", mis tähendab, et probleem on parameetris, mida edastatakse kliendi pool.
Veenduge, et kasutate XPATHi ja XQuery kinnituse kasutamisel õiget süntaksit. Ülaltoodud väite kasutamisel EI TOHI kasutada kooloni (:) asemel punkti(.). Süntaks on //namespace:Tagname ja EI //namespace.tagname. Seda tehes võite saada teate „Praeguses vastuses EI ole vastet”, kuigi sildi nimi on õige.