Tvrzení v SoapUISkripty, XQuery, XPath typy – tutoriál
Co je to tvrzení?
Tvrzení znamená akt potvrzení nebo prohlášení něčeho. Může být také interpretován jako kontrolní bod nebo ověřovací bod.
Jakmile je požadavek odeslán na webový server, je přijata odpověď. Musíme ověřit, zda odpověď obsahuje data, která očekáváme. Abychom potvrdili odpověď, musíme použít aserce.
Typy tvrzení
There are various ways of asserting a response; however, we will focus on the commonly used SoapUI Assertions types while validating a response. Below are the ones that are available in Open Source version of SoapUI.
- Obsah nemovitosti
- Standard stavu shody
- Scénář
- SLA
- JMS
- Bezpečnost

Kromě těch, které jsou uvedeny výše, má verze PRO také vestavěný JDBC Assertion, pomocí kterého můžeme potvrdit, zda webová služba aktualizovala databázi správně.
OBSAHUJE UPŘESNĚNÍ
Hledá existenci zadaného řetězce. Podporuje také regulární výraz.
Budeme pokračovat stejným příkladem z předchozího tutoriálu s požadavkem WSDL jako http://www.dneonline.com/calculator.asmx.
Krok 1: Ve výchozím nastavení neexistují žádná tvrzení.
- Počet tvrzení je uveden v záložce tvrzení.
- Chcete-li přidat nové tvrzení, klikněte na tlačítko 'Přidat nové tvrzení'.
Krok 2: Teď,
- Vyberte kategorii tvrzení.
- Vyberte Typ tvrzení.
- Klikněte na 'Přidat'
Krok 3: Ověřte, zda v odpovědi existuje řetězec '46'. Klikněte na 'OK'
Poznámka: Můžeme také ignorovat velká a malá písmena a přidat regulární výraz.
Krok 4: Po jeho přidání se okamžitě provede aserce a zobrazí se, zda je PLATNÁ nebo NEPLATNÁ.
Krok 5: Now Let us say we change the content of ‘Contains Assertion in SoapUI’ to ’47’ and see what happens.
Krok 6: Vyhodnocení je provedeno a výsledek je předán uživateli. Protože v odpovědi nemáme řetězec '47', tvrzení selhalo.
NEOBSAHUJE Tvrzení
Hledá Neexistenci zadaného řetězce. Podporuje také regulární výraz.
Krok 1: Nyní po kliknutí na tlačítko „přidat nová tvrzení“
- Vyberte kategorii tvrzení.
- Vyberte typ tvrzení – v tomto případě „NEOBSAHUJE“
- Klikněte na 'Přidat'
Krok 2: Ověřte, zda v odpovědi existuje řetězec 'intA'. Zadejte řetězec 'FromCurrency' a klikněte na 'OK'
Krok 3: Jakmile je výraz přidán, provede se a zobrazí výsledek. Zatím jsme přidali dvě tvrzení, takže obě tvrzení se provedou a zobrazí výsledek.
Krok 4: Nyní změňme obsah 'Neobsahuje tvrzení' a uvidíme, co se stane. Zkontrolujeme neexistenci řetězce „AddResult“.
Krok 5: Řetězec 'AddResult' je skutečně přítomen v odpovědi, proto tvrzení 'NOT obsahuje' selže, jak je uvedeno níže.
PŘIPOJENÍ XPATH
použití XPath výraz pro výběr cílového uzlu a jeho hodnot. XPath je dotazovací jazyk XML pro výběr uzlů z dokumentu XML.
Krok 1: Nyní po kliknutí na tlačítko „Přidat nová tvrzení“
- Vyberte kategorii tvrzení.
- Vyberte typ tvrzení – v tomto případě „XPath Match“
- Klikněte na 'Přidat'
Krok 2: Otevře se okno Přidat XPath.
Before Adding SoapUI XPath, we need to declare the NameSpace. An XML namespace is a collection of names, identified by a Uniform Resource Identifier (URI) reference, which are used in XML documents as element and attribute names. The same is used in SOAP UI XPath Assertion.
Pro deklaraci jmenného prostoru XML stačí kliknout na tlačítko 'Deklarovat', které udělá práci za nás, jinak můžeme jmenný prostor deklarovat i ručně sami.
Po deklaraci jmenného prostoru potřebujeme odkazovat na cestu XPath pomocí vytvořeného jmenného prostoru.
Po kliknutí na tlačítko 'Declare' se objeví dva jmenné prostory, protože máme dva URI. Jedna z nich je adresa URL schématu a druhá odpovídá skutečné adrese URL webové služby. Při odkazování na XPath musíme použít skutečný jmenný prostor, kde se webová služba nachází, a NE jmenný prostor schématu.
deklarovat jmenný prostor soap='http://schemas.xmlsoap.org/soap/envelope/';
deklarovat jmenný prostor ns1='http://tempuri.org/';
Krok 3: Nyní musíme zadat XPath uzlu XML, který potřebujeme ověřit.
//ns1:AddResult Dává nám hodnotu uzlu uzavřeného mezi & a ns1 odpovídá deklarovanému jmennému prostoru, který ukazuje na 'http://tempuri.org/'
Po zadání XML musíme kliknout na 'Vybrat z aktuální', aby se hodnota z aktuální odpovědi vybrala pro budoucí srovnání.
Krok 4: Tak daleko,
- Po deklaraci jmenných prostorů jsme zadali XPath uzlu XML, který potřebujeme ověřit.
- Musíme kliknout na „Vybrat z aktuálního“, aby se aktuální hodnota stala očekávanou hodnotou.
- Uživateli se zobrazí aktuální hodnota, kterou můžeme v případě potřeby upravit.
- Klikněte na 'Uložit'.
Krok 5: The added Assertion in SoapUI will be displayed as shown below.
Skriptování tvrzení
Tato technika tvrzení je nejpoužívanější, protože je extrémně obtížné spravovat a udržovat stovky tvrzení.
SOAP UI uses either Groovy Skriptování popř JavaScénář pro skriptování asercí. Technika skriptování se používá pro vývojping framework pro testování SOAP. Skriptovací aserce se používají za následujících okolností.
Skriptování umožňuje uživateli provádět některé operace před a po provedení TestCase pomocí metod nastavení a odstranění. Nastavení je procedura, která se provádí před provedením konkrétní metody (příklad – Vytvoření a inicializace objektu), zatímco rozklad je procedura, která se provede po provedení metody (např.: Zničení objektů a vyčištění). Tato funkce není dostupná u jiných typů tvrzení a lze ji provést pouze pomocí kódování.
Umožňuje uživatelům otevřít/zavřít projekt, inicializovat nebo vyčistit nastavení související s projektem a také pracovat s proměnnými prostředí, což je velmi užitečné při skriptování.
Pomáhá nám prosazovat dynamický obsah odezvy.
Scripting assertions are used for creating user defined assertions that are NOT predefined by SOAP UI.
For Demonstrating Script assertion in SoapUI, we will make use of calculator WSDL, the test case ‘Add’ that we had created earlier.
Krok 1: Kroky pro přidání groovy skriptu jsou stejné jako u jiných tvrzení kromě toho, že tvrzení není předem definované. Místo toho je to uživatelsky definované tvrzení, které nabízí větší flexibilitu než vestavěné.
Vyberte krok Test, ke kterému má být výraz přidán.
Klikněte na tlačítko 'Přidat tvrzení', jak je znázorněno níže.
Krok 2: Nyní vyberte kategorii Assertion.
- V tomto případě je to Script.
- vybrat SoapUI Script Assertion and there no sub-types associated with it.
- Klikněte na 'Přidat'.
Krok 3: Otevře se dialogové okno Skriptování, kde bude uživatel moci napsat uživatelsky definovaný skript pro ověření XML odpovědi.
Krok 4: Nyní napíšeme skvělý skript pro ověření konverzního poměru. Skript je připojen níže s vloženými komentáři. Doporučuje se mít znalosti o Java Skript resp Groovy Než se pokusíte napsat svůj vlastní skript, vytvořte skript.
//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"}
- Kliknutím na tlačítko 'Execute' spustíte spuštění.
- Výstup skriptu je zobrazen v podokně Výstup. Vytisklo jak hodnotu konverze, tak i konečný výsledek (vyhovuje nebo nevyhovuje)
- Zobrazí se informace, že 'Script Assertion Passed'. Klepněte na tlačítko OK.
Poznámka: Poslední vyskakovací okno Information se vždy zobrazí se zprávou 'Script Assertion Passed', pokud je skript syntakticky správný. Nemá to žádnou korelaci s vaším tvrzením ve skriptu.
klepněte na tlačítko OK
Krok 5: Nyní karta tvrzení zobrazuje všechna tvrzení, která jsme přidali pro tuto testovací sadu, se stavem proti každému z nich.
Krok 6: Teď
- Vyberte Test Suite ze stromu Navigator
- Klikněte na tlačítko 'Spustit'
- Výsledky by se zobrazily pro celou sadu testů.
Xquery shoda tvrzení
It Uses an Xquery expression to select content from the target property. We need a much bigger response XML in order to better understand XQuery assertion in SoapUI. Let us import one other WSDL as shown below: http://www.webservicex.net/medicareSupplier.asmx?WSDL
Krok 1: Klikněte pravým tlačítkem na existující projekt a vyberte 'Přidat WSDL'.
Krok 2: Klikněte pravým tlačítkem na existující projekt a vyberte 'Přidat WSDL'. Ponechte ostatní možnosti jako výchozí a klikněte na tlačítko 'OK'.
Krok 3: Všechny operace jsou uvedeny níže.
Krok 4: Nyní přidáme a Testovací případ ve stejné testovací sadě, pro kterou jsme vytvořili Testování převodník měn.
Krok 5: Zadejte název testovacího případu a klikněte na tlačítko 'OK'
Krok 6: Testovací případ je vytvořen, jak je znázorněno níže.
Krok 7: přidat
nový testovací krok typu „Žádost o test mýdla“, jak je uvedeno níže.
Krok 8: Zadejte název kroku testu. Řekněme – Supplier_by_City, což by bylo smysluplnější Klikněte na 'OK'.
Krok 9: Vybrat Operakteré bychom chtěli ověřit. V tomto případě je to 'MedicareSupplierSoap -> GetSupplierByCity'. Klikněte na 'OK'.
Krok 10: Zadejte název testovacího případu a klikněte na 'OK'.
Krok 11: Přehled XML požadavku by se zobrazil, jak je uvedeno níže.
Krok 12: Nyní najdeme všechny informace o dodavatelích pro město „New York“.
Chcete-li tak učinit, přidejte do kódu následující řádky.
<GetSupplierByCity xmlns="http://www.webservicex.net/"> <City>New York</City> </GetSupplierByCity>
WSDL na níže uvedené adrese URL – http://www.webservicex.net/medicareSupplier.asmx?op=GetSupplierByCity
Krok 13: Po provedení testu obdržíme níže uvedenou odpověď
Krok 14: Řekněme, že potřebujeme ověřit všechna čísla dodavatele. Nemůžeme použít XPath Assertion, protože potřebujeme stovky XPath Assertion. Použití XQuery je tedy v tomto případě nevyhnutelné.
XQuery Assertion nám pomáhá ověřit skupinu odpovědí XML, které se svou povahou opakují.
Krok 15: Nyní klikněte na 'Přidat tvrzení',
- V tomto případě vyberte „Kategorii tvrzení“ – Obsah nemovitosti.
- Vyberte typ tvrzení jako „XQuery Assertion“
- Klikněte na 'Přidat'.
Krok 16: Podobně jako u XPath Assertion musíme deklarovat jmenný prostor.
-
Click ‘Declare’ Button to automatically allow SOAP UI to declare the namespace. Upon clicking on declare button a ‘POP up’ with the message ‘declare namespace from schema instead’ will be displayed to the user. Click ‘Yes’ to proceed as shown below.
Poznámka: Po stisknutí tlačítka 'Declare' můžete skončit s různými adresami URL jako deklarací jmenného prostoru, avšak skutečný jmenný prostor umístění webové služby je tím, co by bylo považováno za kódování.
- Abychom získali všechna čísla dodavatele, musíme napsat dotaz XPath a vložíme jej do < SupplierNumber> a Tagy.
- Klikněte na 'Vybrat z aktuálního', které se spustí z aktuální odpovědi.
- Po kliknutí na „Vybrat z aktuálního“ se zobrazí všechna čísla dodavatelů.
- Klikněte na 'Uložit'.
// 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)} }
Krok 17: Spustí se XQuery Assertion a zobrazí konečný výsledek v panelu 'Assertion', jak je znázorněno níže. Nyní jsme úspěšně přidali výraz Xquery, pomocí kterého jsme ověřili všechny informace o čísle dodavatele. Totéž by bylo porovnáno se skutečností pokaždé, když je požadavek odeslán na webový server.
Poznámka: Skutečné hodnoty se nezobrazí. Pokud jsou všechny skutečné hodnoty stejné jako očekávané hodnoty, zobrazí se VALID, jinak se zobrazí 'Failed'.
Kdy použít vestavěné tvrzení?
- Když je odpověď krátká, takže ji lze ověřit pomocí jednoho z těchto vestavěných asercí.
- Můžeme také použít Inbuilt Assertion, pokud je odpověď odeslaná z webového serveru vždy statická. Pokud je dynamická, nebudeme ji moci prosadit pomocí vestavěných asercí.
- Když se použití vestavěných asercí, jako jsou asertace s časovým limitem a bezpečnostní deklarace, stane nevyhnutelným.
- Inbuilt Assertions se docela dobře drží pro jednorázové použití, kde se testy nemusí opakovat.
Možnosti tvrzení
Vytvořená tvrzení lze nejlépe ovládat pomocí ovládacího panelu, který je zvýrazněn níže.
Vytvořené aserce umožňují testerům konfigurovat následující věci ze sady nástrojů asercí.
| Volba | Description |
|---|---|
|
|
Vybrané tvrzení se posune v pořadí nahoru. |
|
|
Vybrané tvrzení se posune v pořadí dolů. |
|
|
Odebere vybrané tvrzení |
|
|
Znovu nakonfigurujte/upravte vybrané tvrzení. |
- Below are the features available exclusively in PRO Version of SOAP UI. PRO version also helps us to Group assertions so that we can add one more layer of validation to the created assertions.
- Verze Pro také umožňuje Klonování tvrzení: Tato možnost umožňuje testerům povolit kopírování výrazu do jiného testovacího kroku ve stejném nebo jiném projektu.
- Disable/Enable Assertions: Tato možnost umožňuje deaktivovat nebo povolit všechna seskupená nebo neseskupená tvrzení. Pokud je aserce zakázána, je zašedlá a když je spuštěn testovací případ, zakázaná aserce nebudou provedena.
- Oddělit tvrzení: Pokud se tak testeři rozhodnou, lze oddělit všechna seskupená tvrzení.
A: Všechna tvrzení jsou vyhodnocena jako PLATNÁ, což bude mít za následek skupinovou podmínku PASSED. NEBO: Alespoň jedno z tvrzení ve skupině musí být PLATNÉ, aby bylo možné uplatnit skupinovou podmínku PASSED.
Kompletní seznam metod dostupných v různých typech tvrzení
| Mechanismus prosazování |
Description |
| OBSAH MAJETKU | |
| obsahuje | Hledá existenci zadaného řetězce. Podporuje také regulární výraz. |
| Neobsahuje | Hledá Neexistenci zadaného řetězce. Podporuje také regulární výraz. |
| XPath Match | Používá výraz XPath k výběru cílového uzlu a jeho hodnot. |
| XQuery Match | Používá výraz Xquery k výběru obsahu z cílové vlastnosti. |
| Shoda, stav, standardy | |
| HTTP Stáhnout všechny zdroje | Ověřuje dokument HTML po stažení a platí pro jakoukoli vlastnost obsahující HTML. |
| Neplatný stav HTTP Codes | Ověřuje, zda odpověď HTML obsahuje stavový kód, který není v seznamu definovaných kódů. |
| Není chyba SOAP | Ověřuje, zda poslední přijatá zpráva není chyba SOAP. Je velmi zřejmé, že je použitelný pouze pro testovací kroky SOAP. |
| Schema Compliance | Ověřuje, zda je poslední přijatá zpráva v souladu se standardní definicí schématu WSDL nebo WADL. Hodí se pro testovací kroky SOAP a REST. |
| Chyba SOAP | Ověřuje, zda je poslední přijatá zpráva chyba SOAP. Je to opak chybových tvrzení 'NOT SOAP'. |
| Odezva SOAP | Ověřuje, zda je poslední přijatá odpověď platnou odpovědí SOAP a platí pouze pro kroky testovacího požadavku SOAP. |
| Platný stav HTTP Codes | Ověřuje, zda HTML odpověď obsahuje stavový kód, který je v seznamu definovaných kódů. Jedná se o inverzi k „Neplatný stav HTTP“. CodeTvrzení. |
| WS-Addressing Request | Ověřuje, zda poslední přijatý požadavek obsahuje příslušná záhlaví WS-Addressing. |
| WS-Addressing Response | Ověřuje, zda poslední přijatá odpověď obsahuje příslušná záhlaví WS-Addressing. |
| Stav zabezpečení WS | Ověřuje, zda poslední přijatá zpráva obsahuje platná záhlaví WS-Security a platí pouze pro požadavky SOAP. |
| Scénář | |
| Uplatnění skriptu | Umožňuje uživatelům spouštět vlastní skript k provádění uživatelem definovaných ověření. |
| SLA | |
| Odpověď SLA | Ověřuje, zda byla doba odezvy poslední přijaté odpovědi v rámci definovaného limitu. |
| JMS | |
| Stav JMS | Ověřuje, zda byl požadavek JMS testovacího kroku úspěšně proveden a zda platí pro testovací kroky s koncovým bodem JMS. |
| Časový limit JMS | Ověřuje, zda odpověď JMS na testovací krok netrvala déle než zadané trvání. |
| Bezpečnost | |
| Vystavení citlivým informacím | Ověřuje, zda zpráva odpovědi neodhaluje citlivé informace o cílovém systému. Toto tvrzení můžeme použít pro testovací kroky REST, SOAP a HTTP. |
STÁHNĚTE SI PROJEKT SOAPUI OBSAHUJÍCÍ VÝŠE UVEDENÉ Tvrzení
Běžné chyby a odstraňování problémů
Použijte správný jmenný prostor. Prostor jmen by měl být URL, kde se webová služba nachází.
Pokud se při vývoji vyskytne chybaping skriptovací assessment, použijte 'log.info' k výpisu obsahu proměnných
Pokud nemáte požadovaný výstup, ověřte, zda je v požadavku předán platný vstup.
Pokud například v převodníku měn zadáte „intA“ jako „x“, což není celé číslo, výstup vyhodí chybový kód jako „SOAP-Client“, což znamená, že problém je s parametrem, který je předáván z klientská strana.
Při používání výrazu XPATH a XQuery se ujistěte, že používáte správnou syntaxi. Při použití výše uvedeného tvrzení byste NEMĚLI používat tečku (.) místo dvojtečky (:). Syntaxe je //namespace:Tagname a NOT //namespace.tagname. Pokud tak učiníte, můžete skončit se zprávou, že „žádná shoda v aktuální odpovědi“, i když je název značky správný.














































