Tvrzení v SoapUI: Výuka skriptů, XQuery, XPath Types
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í
Existují různé způsoby, jak prosadit odpověď; při ověřování odpovědi se však zaměříme na běžně používané typy Assertions SoapUI. Níže jsou uvedeny ty, které jsou k dispozici v Open Source verzi 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: Nyní řekněme, že změníme obsah 'Contains Assertion in SoapUI' na '47' a uvidíme, co se stane.
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.
Před přidáním SoapUI XPath musíme deklarovat NameSpace. Jmenný prostor XML je kolekce názvů identifikovaných odkazem URI (Uniform Resource Identifier), které se používají v dokumentech XML jako názvy prvků a atributů. Totéž se používá v 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: Přidané tvrzení v SoapUI se zobrazí, jak je uvedeno níže.
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 používá buď Groovy Skriptování popř JavaScénář pro skriptovací tvrzení. Technika skriptování je přijata pro vývoj rámce pro testování SOAP. Skriptovací výrazy 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.
Skriptovací výrazy se používají k vytváření uživatelských výrazů, které NEJSOU předdefinované v uživatelském rozhraní SOAP.
Pro demonstraci asertace skriptu v SoapUI použijeme kalkulačku WSDL, testovací případ 'Add', který jsme vytvořili dříve.
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.
- Vyberte SoapUI Script Assertion a nejsou s ním spojeny žádné podtypy.
- 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í
K výběru obsahu z cílové vlastnosti používá výraz Xquery. Potřebujeme mnohem větší XML odezvy, abychom lépe porozuměli tvrzení XQuery v SoapUI. Pojďme importovat jeden další WSDL, jak je znázorněno níže: 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.
-
Kliknutím na tlačítko 'Declare' automaticky umožníte uživatelskému rozhraní SOAP deklarovat jmenný prostor. Po kliknutí na tlačítko deklarovat se uživateli zobrazí 'POP up' se zprávou 'deklarovat jmenný prostor ze schématu'. Klikněte na 'Ano' a pokračujte níže uvedeným způsobem.
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í. |
- Níže jsou uvedeny funkce dostupné výhradně ve verzi PRO SOAP UI. Verze PRO nám také pomáhá seskupit asertace, abychom k vytvořeným asercím mohli přidat další vrstvu ověřování.
- 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é stavové kódy HTTP | 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é stavové kódy HTTP | Ověřuje, zda odpověď HTML obsahuje stavový kód, který je v seznamu definovaných kódů. Je to opak tvrzení 'Neplatné stavové kódy HTTP'. |
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 dojde k chybě při vývoji skriptovacího výrazu, použijte 'log.info' k vytištění 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ý.