Állítások a SoapUI-ban: Scripts, XQuery, XPath Types Tutorial
Mi az állítás?
Az állítás azt jelenti, hogy valamit megerősítünk vagy állítunk. Ellenőrző pontként vagy érvényesítési pontként is értelmezhető.
Miután elküldték a kérést egy webszervernek, válasz érkezik. Ellenőriznünk kell, hogy a válasz tartalmazza-e a várt adatokat. A válasz érvényesítéséhez állításokat kell használnunk.
Az állítás típusai
A válasz érvényesítésének különféle módjai vannak; azonban a válasz érvényesítése során a gyakran használt SoapUI állítástípusokra fogunk összpontosítani. Az alábbiakban felsoroljuk azokat, amelyek a SoapUI nyílt forráskódú verziójában érhetők el.
- Tulajdontartalom
- Megfelelőségi állapot szabvány
- Forgatókönyv
- SLA
- JMS
- Biztonság

A fent felsoroltakon kívül a PRO verzió egy beépített JDBC Assertion-t is tartalmaz, amellyel meg tudjuk állapítani, hogy a webszolgáltatás megfelelően frissítette-e az adatbázist.
ÁLLÍTÁST TARTALMAZ
Megkeresi a megadott karakterlánc létezését. Támogatja a reguláris kifejezést is.
Folytatjuk ugyanazt a példát az előző oktatóanyagból a WSDL kéréssel mint http://www.dneonline.com/calculator.asmx.
Lépés 1: Alapértelmezés szerint nincsenek állítások.
- Az állítások száma az Állítások lapon látható.
- Új állítás hozzáadásához kattintson az "Új állítás hozzáadása" gombra.
Lépés 2: Most,
- Válassza ki az állítás kategóriát.
- Válassza ki az állítás típusát.
- kattintson a "Hozzáadás" gombra
Lépés 3: Ellenőrizzük, hogy a '46' karakterlánc létezik-e a válaszban. kattintson az "OK" gombra
Megjegyzés: Figyelmen kívül hagyhatjuk a kis- és nagybetűket is, és hozzáadhatunk reguláris kifejezést.
Lépés 4: Hozzáadása után azonnal végrehajtódik az állítás, és megmutatja, hogy ÉRVÉNYES vagy ÉRVÉNYTELEN.
Lépés 5: Tegyük fel, hogy módosítjuk a „Contains Assertion in SoapUI” tartalmát „47”-re, és meglátjuk, mi történik.
Lépés 6: Az állítás végrehajtásra kerül, és az eredmény megjelenik a felhasználónak. Mivel a válaszban nem szerepel a „47” karakterlánc, az állítás meghiúsult.
NEM TARTALMAZ ÁLLÍTÁST
A megadott karakterlánc nem létezését keresi. Támogatja a reguláris kifejezést is.
Lépés 1: Most, miután az „Új állítások hozzáadása” gombra kattintott,
- Válassza ki az állítás kategóriát.
- Válassza ki az állítás típusát – ebben az esetben a „NEM tartalmazza”
- kattintson a "Hozzáadás" gombra
Lépés 2: Ellenőrizzük, hogy az „intA” karakterlánc létezik-e a válaszban. Írja be a "FromCurrency" karakterláncot, és kattintson az "OK" gombra
Lépés 3: Amint hozzáad egy állítást, azonnal végrehajtja és megjeleníti az eredményt. Eddig két állítást adtunk hozzá, így mindkét állítás végrehajtásra kerül, és megjeleníti az eredményt.
Lépés 4: Most változtassuk meg a „Nem tartalmaz állítást” tartalmát, és nézzük meg, mi történik. Ellenőrizzük, hogy nem létezik-e az „AddResult” karakterlánc.
Lépés 5: Az 'AddResult' karakterlánc valójában jelen van a válaszban, ezért a 'NOT Contains' állítás meghiúsul, ahogy az alább látható.
XPATH MATCH ASSERTION
Felhasználás XPath kifejezést a célcsomópont és értékei kiválasztásához. Az XPath egy XML-lekérdezési nyelv csomópontok kiválasztásához egy XML-dokumentumból.
Lépés 1: Most, miután az „Új állítások hozzáadása” gombra kattintott,
- Válassza ki az állítás kategóriát.
- Válassza ki az állítás típusát – ebben az esetben 'XPath Match'
- kattintson a "Hozzáadás" gombra
Lépés 2: Megnyílik az XPath hozzáadása ablak.
A SoapUI XPath hozzáadása előtt deklarálnunk kell a névteret. Az XML névtér olyan nevek gyűjteménye, amelyeket egy egységes erőforrásazonosító (URI) hivatkozás azonosít, és amelyek az XML dokumentumokban elem- és attribútumnévként használatosak. Ugyanezt használja a SOAP UI XPath Assertion.
Az XML névterek deklarálásához csak a 'Deklarálás' gombra kell kattintanunk, amely elvégzi helyettünk a feladatot, különben saját kezűleg is deklarálhatunk egy névteret.
A névtér deklarálása után hivatkoznunk kell az XPath-ra a létrehozott névtér használatával.
A „Deklarálás” gombra kattintva két névtér jelenik meg, mivel két URI-nk van. Az egyik a séma URL-címe, a másik pedig a tényleges webszolgáltatás URL-jének felel meg. Az XPath hivatkozáskor a tényleges névteret kell használnunk, ahol a webszolgáltatás található, és NEM a séma névterét.
deklarál névteret soap='http://schemas.xmlsoap.org/soap/envelope/';
deklarál névteret ns1='http://tempuri.org/';
Lépés 3: Most meg kell adnunk annak az XML-csomópontnak az XPath-ját, amelyet ellenőriznünk kell.
//ns1:AddResult A közé zárt csomópont értékét adja meg & az ns1 pedig a deklarált névtérnek felel meg, amely a „http://tempuri.org/” címre mutat.
Az XML bevitele után rá kell kattintanunk a „Kiválasztás az aktuálisból” lehetőségre, hogy az aktuális válaszból származó értéket a rendszer összehasonlítsa a továbbiakban.
Lépés 4: Eddig
- A névterek deklarálása után megadtuk az XML csomópont XPath-ját, amelyet ellenőriznünk kell.
- A „Kiválasztás a jelenlegiből” gombra kell kattintanunk, hogy az aktuális érték legyen a várható érték.
- Az aktuális érték megjelenik a felhasználó számára, amelyet szükség esetén módosíthatunk.
- Kattintson a „Mentés” gombra.
Lépés 5: A SoapUI-ban hozzáadott állítás az alábbiak szerint jelenik meg.
Szkriptelési állítások
Ez az állítási technika a legszélesebb körben használt módszer, mivel rendkívül nehéz több száz állítást kezelni és fenntartani.
A SOAP UI bármelyiket használja Groovy Scripting ill JavaForgatókönyv scripting állításokhoz. A szkriptelési technikát a SOAP tesztelésére szolgáló keretrendszer fejlesztésére alkalmazzák. A parancsfájl-állításokat a következő körülmények között használjuk.
A szkriptelés lehetővé teszi a felhasználó számára, hogy bizonyos műveleteket hajtson végre a TestCase végrehajtása előtt és után, a beállítási és a letépési módszerekkel. A beállítás egy olyan eljárás, amelyet egy adott metódus végrehajtása előtt hajtanak végre (például - Objektum létrehozása és inicializálása), míg a tear down olyan eljárás, amelyet a metódus végrehajtása után hajtanak végre (pl.: Objektumok megsemmisítése és tisztítása). Ez a funkció más állítástípusoknál nem érhető el, és csak kódolással érhető el.
Lehetővé teszi a felhasználók számára a projekt megnyitását/bezárását, a projekthez kapcsolódó beállítások inicializálását vagy tisztítását, valamint a környezeti változókkal való munkát, ami nagyon hasznos a szkriptelés során.
Segít a dinamikus választartalom érvényesítésében.
A parancsfájl-állítások olyan felhasználó által definiált állítások létrehozására szolgálnak, amelyeket NEM definiál előre a SOAP UI.
A szkript érvényesítésének bemutatásához a SoapUI-ban a WSDL számológépet használjuk, a korábban létrehozott „Hozzáadás” tesztesetet.
Lépés 1: A groovy szkript hozzáadásának lépései megegyeznek a többi állításéval, kivéve, hogy az állítás nem előre meghatározott. Ehelyett ez egy felhasználó által meghatározott állítás, amely nagyobb rugalmasságot kínál, mint a beépítettek.
Válassza ki azt a tesztlépést, amelyhez az állítást hozzá kell adni.
Kattintson az „Állítás hozzáadása” gombra az alábbiak szerint.
Lépés 2: Most válassza ki az Assertion kategóriát.
- Ebben az esetben a Script.
- Válassza a SoapUI Script Assertion lehetőséget, és nincs hozzá társítva altípus.
- Kattintson a "Hozzáadás" gombra.
Lépés 3: Megnyílik a Scripting párbeszédablak, ahol a felhasználó definiált szkriptet írhat a válasz XML ellenőrzéséhez.
Lépés 4: Most írjunk egy remek szkriptet a konverziós ráta érvényesítésére. A forgatókönyvet alább mellékeljük a beágyazott megjegyzésekkel. Javasoljuk, hogy rendelkezzen ismeretekkel Java Script ill Groovy Szkriptet, mielőtt megpróbálná megírni saját szkriptjét.
//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"}
- Kattintson a "Végrehajtás" gombra a végrehajtás elindításához.
- A Script kimenete a Kimenet ablaktáblában látható. Mind a konverziós értéket, mind a végeredményt (megfelelt vagy sikertelen) kinyomtatta.
- Megjelenik az információ, hogy 'Script Assertion Passed'. Kattintson az OK gombra.
Megjegyzés: Az utolsó Információs előugró ablak mindig a "Szkript állítása sikeres" üzenettel jelenik meg mindaddig, amíg a szkript szintaktikailag helyes. Ennek nincs összefüggése a forgatókönyvön belüli állításoddal.
kattintson az OK gombra
Lépés 5: Most az Assertion Tab megjeleníti az összes olyan állítást, amelyet ehhez a tesztkészlethez adtunk hozzá, mindegyiknek az állapota ellenében.
Lépés 6: Most
- Válassza ki a Tesztcsomagot a Navigátorfából
- Kattintson a „Futtatás” gombra
- Az eredmények a teljes tesztkészletre vonatkoznak.
Xquery Match Assertion
Egy Xquery kifejezést használ a tartalom kiválasztásához a céltulajdonságból. Sokkal nagyobb válasz XML-re van szükségünk ahhoz, hogy jobban megértsük az XQuery állítást a SoapUI-ban. Importáljunk egy másik WSDL-t az alábbiak szerint: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Lépés 1: Kattintson a jobb gombbal a meglévő projektre, és válassza a „WSDL hozzáadása” lehetőséget.
Lépés 2: Kattintson a jobb gombbal a meglévő projektre, és válassza a „WSDL hozzáadása” lehetőséget. Hagyja a többi beállítást alapértelmezettként, majd kattintson az „OK” gombra.
Lépés 3: Az összes művelet az alábbiak szerint van felsorolva.
Lépés 4: Most adjunk hozzá a Teszt eset ugyanabban a tesztcsomagban, amelyre létrehoztuk Tesztelés a valutaváltó.
Lépés 5: Adja meg a teszteset nevét, majd kattintson az „OK” gombra
Lépés 6: A teszteset az alábbiak szerint készül.
Lépés 7: hozzáad
a „Szappanvizsgálati kérelem” típusának új tesztlépése az alábbiak szerint.
Lépés 8: Adja meg a tesztlépés nevét. Tegyük fel, hogy – Szállító város szerint, ami értelmesebb lenne Kattintson az „OK” gombra.
Lépés 9: Válassza ki a Operaamelyet ellenőrizni szeretnénk. Ebben az esetben ez a „MedicareSupplierSoap -> GetSupplierByCity”. Kattintson az „OK” gombra.
Lépés 10: Írja be a teszteset nevét, és kattintson az „OK” gombra.
Lépés 11: A Request XML Outline az alábbiak szerint jelenik meg.
Lépés 12: Most keressük meg a „New York” város összes szállítói információját.
Ehhez adja hozzá a következő sorokat a kódhoz.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL az alábbi URL-ben – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Lépés 13: A teszt végrehajtása után az alábbi választ kapjuk
Lépés 14: Tegyük fel, hogy érvényesíteni kell az összes szállítói számot. Nem használhatjuk az XPath Assertiont, mivel több száz XPath állításra van szükségünk. Ezért ebben az esetben az XQuery használata elkerülhetetlen.
Az XQuery Assertion segít nekünk az ismétlődő jellegű XML-válaszok egy csoportjának érvényesítésében.
Lépés 15: Most kattintson az "Állítás hozzáadása" gombra,
- Ebben az esetben válassza a „Kijelentés kategóriát” – Tulajdontartalom.
- Válassza ki az állítás típusát „XQuery Assertion”-ként
- Kattintson a "Hozzáadás" gombra.
Lépés 16: Hasonlóan az XPath Assertionhez, deklarálnunk kell a névteret.
-
Kattintson a „Deklarálás” gombra, hogy a SOAP UI automatikusan deklarálja a névteret. A Deklaráció gombra kattintva egy „POP up” jelenik meg a „névteret deklarál sémából helyett” üzenettel a felhasználó számára. Kattintson az „Igen” gombra az alábbi módon történő folytatáshoz.
Jegyzet: A „Deklaráció” gomb megnyomásakor előfordulhat, hogy más URL-címeket kaphat névtér-deklarációként, azonban a kódolásnál a tényleges webszolgáltatás helyének névterét kell figyelembe venni.
- Az összes szállítói szám lekéréséhez meg kell írnunk egy XPath-lekérdezést, amelyet a < Beszállítószám>-ba helyezünk, és Címkék.
- Kattintson a „Kiválasztás az aktuálisból” gombra, amely az aktuális válaszból fog végrehajtani.
- A „Válasszon a jelenlegiből” gombra kattintva az összes szállítószám megjelenik.
- Kattintson a „Mentés” gombra.
// 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)} }
Lépés 17: Az XQuery Assertion végrehajtásra kerül, és a végeredményt az „Assertion” panelen jeleníti meg az alábbiak szerint. Most sikeresen hozzáadtunk egy Xquery állítást, amellyel ellenőriztük a szállítói szám összes információját. Ugyanezt hasonlítják össze a tényleges adatokkal, minden alkalommal, amikor a kérést elküldik a webszervernek.
Megjegyzés: A tényleges értékek nem jelennek meg. Ha az összes tényleges érték megegyezik a várt értékkel, akkor a VALID felirat jelenik meg, különben a „Failed” felirat jelenik meg.
Mikor kell használni a beépített állítást?
- Ha a válasz olyan rövid, hogy az a beépített állítások valamelyikével ellenőrizhető.
- Használhatjuk az Inbuilt Assertion-t is, ha a webszervertől küldött válasz mindig statikus jellegű. Ha dinamikus, akkor nem tudjuk beépített állításokkal érvényesíteni.
- Amikor a beépített állítások, például az időtúllépési állítások és a biztonsági állítások használata elkerülhetetlenné válik.
- A beépített állítások elég jól megállják a helyüket egyszeri használatra, ahol a teszteket nem kell megismételni.
Állítási lehetőségek
A létrehozott állítások leginkább az alább kiemelt vezérlőpult segítségével vezérelhetők.
A létrehozott állítások lehetővé teszik a tesztelők számára, hogy az alábbi dolgokat konfigurálják az állítások eszköztárából.
| opció | Leírás |
|---|---|
|
|
A kiválasztott állítás feljebb lép a sorrendben. |
|
|
A kiválasztott állítás lefelé mozog a sorrendben. |
|
|
Eltávolítja a kiválasztott állítást |
|
|
A kiválasztott állítás újrakonfigurálása/szerkesztése. |
- Az alábbiakban felsoroljuk a kizárólag a SOAP UI PRO verziójában elérhető funkciókat. A PRO verzió az állítások csoportosításában is segít, hogy a létrehozott állításokhoz még egy érvényesítési réteget adhassunk.
- A Pro verzió is lehetővé teszi Az állítások klónozása: Ez a beállítás lehetővé teszi a tesztelőknek, hogy engedélyezzék egy állítás másolását egy másik tesztlépéshez ugyanabban vagy egy másik projektben.
- Kijelentések letiltása/engedélyezése: Ezzel az opcióval bármely csoportosított vagy csoportosítatlan állítás letiltható vagy engedélyezhető. Ha egy állítás le van tiltva, akkor szürkén jelenik meg, és teszteset végrehajtásakor a letiltott állítások nem hajtódnak végre.
- Az állítások csoportosítása: Bármely csoportosított állítás csoportosítása megszüntethető, ha a tesztelők úgy döntenek.
ÉS: Minden állítás ÉRVÉNYES állításként kerül kiértékelésre, amely ELFOGADVA csoportfeltételt eredményez. VAGY: A csoporton belüli állítások közül legalább egynek ÉRVÉNYESnek kell lennie ahhoz, hogy a csoport ELFOGADTA feltételét érvényesítse.
A különféle állítástípusokban elérhető módszerek teljes listája
| Érvényesítési mechanizmus |
Leírás |
| TULAJDON TARTALMA | |
| tartalmaz | Megkeresi a megadott karakterlánc létezését. Támogatja a reguláris kifejezést is. |
| Nem tartalmaz | A megadott karakterlánc nem létezését keresi. Támogatja a reguláris kifejezést is. |
| XPath Match | XPath kifejezést használ a célcsomópont és értékei kiválasztásához. |
| XQuery Match | Xquery kifejezést használ a tartalom kiválasztásához a céltulajdonságból. |
| Megfelelőség, állapot, szabványok | |
| HTTP Az összes erőforrás letöltése | Letöltés után érvényesíti a HTML-dokumentumot, és minden HTML-t tartalmazó tulajdonságra érvényes. |
| Érvénytelen HTTP állapotkódok | Ellenőrzi, hogy a HTML-válasz tartalmaz-e olyan állapotkódot, amely nem szerepel a definiált kódok listájában. |
| Nem SZAPPAN hiba | Ellenőrzi, hogy az utoljára kapott üzenet nem SOAP hiba. Nagyon nyilvánvaló, hogy csak a SOAP tesztlépéseknél alkalmazható. |
| Séma megfelelősége | Ellenőrzi, hogy az utolsó fogadott üzenet megfelel-e a WSDL vagy WADL szabvány sémadefiníciójának. Jól használható SZAPPAN és REST tesztlépésekhez. |
| SZAPPAN hiba | Ellenőrzi, hogy az utolsó fogadott üzenet SOAP hiba-e. Ez a „NOT SOAP” hibaállítások fordítottja. |
| SZAPPAN Válasz | Ellenőrzi, hogy az utoljára kapott válasz érvényes SOAP-válasz-e, és csak a SOAP tesztkérés lépéseire érvényes. |
| Érvényes HTTP állapotkódok | Ellenőrzi, hogy a HTML-válasz tartalmaz-e olyan állapotkódot, amely a definiált kódok listájában szerepel. Ez az „Érvénytelen HTTP-állapotkódok” állítás fordítottja. |
| WS-címzési kérelem | Ellenőrzi, hogy az utolsó beérkezett kérelem tartalmazza-e a megfelelő WS-címzési fejléceket. |
| WS-címzési válasz | Ellenőrzi, hogy az utoljára kapott válasz tartalmazza-e a megfelelő WS-címzési fejléceket. |
| WS-Biztonsági állapot | Érvényesíti, hogy az utoljára fogadott üzenet érvényes WS-Security fejléceket tartalmaz-e, és csak a SOAP kérésekre érvényes. |
| Forgatókönyv | |
| Script Assertion | Lehetővé teszi a felhasználók számára, hogy egyéni szkriptet hajtsanak végre a felhasználó által meghatározott ellenőrzések végrehajtásához. |
| SLA | |
| Válasz SLA | Érvényesíti, ha az utolsó beérkezett válasz válaszideje a meghatározott határon belül volt. |
| JMS | |
| JMS állapot | Ellenőrzi, hogy a tesztlépés JMS-kérelme sikeresen végrehajtódott-e, és érvényes-e a JMS-végponttal rendelkező tesztlépéseknél. |
| JMS időtúllépés | Ellenőrzi, hogy egy tesztlépés JMS-válasza nem tartott-e tovább a megadott időtartamnál. |
| Biztonság | |
| Érzékeny információk expozíciója | Ellenőrzi, hogy a válaszüzenet nem tesz-e nyilvánosságra érzékeny információkat a célrendszerről. Ezt az állítást használhatjuk a REST, SOAP és HTTP tesztlépésekhez. |
LETÖLTHETŐ A FENTI ÁLLÍTÁSOKAT TARTALMAZÓ SOAPUI PROJEKTET
Gyakori hibák és hibaelhárítás
Használja a megfelelő névteret. A névtérnek az URL-nek kell lennie, ahol a webszolgáltatás található.
Ha hiba lép fel a parancsfájl-állítás fejlesztése során, használja a „log.info” fájlt a változók tartalmának kinyomtatásához.
Ha nem kapta meg a kívánt kimenetet, ellenőrizze, hogy érvényes bemenetet adott-e át a kérés.
Például a valutaátváltóban, ha az „intA” értéket „x”-ként adja meg, ami nem egész szám, a kimenet „SOAP-Client”-ként hibakódot dob, ami azt jelenti, hogy a probléma a programból átadott paraméterrel van. ügyfél oldal.
Győződjön meg arról, hogy a helyes szintaxist használja XPATH és XQuery állítás használata közben. A fenti állítás használata közben NE használjon pontot(.) kettőspont(:) helyett. A szintaxis //namespace:Tagname és NEM //namespace.tagname. Ha így tesz, előfordulhat, hogy a „Nincs egyezés az aktuális válaszban” üzenetet kaphat, bár a címke neve helyes.














































