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.

  1. Obsah nemovitosti
  2. Standard stavu shody
  3. Scénář
  4. SLA
  5. JMS
  6. Bezpečnost
Typy tvrzení v SoapUI
Typy tvrzení v SoapUI

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í'.

Obsahuje tvrzení

Krok 2: Teď,

  1. Vyberte kategorii tvrzení.
  2. Vyberte Typ tvrzení.
  3. Klikněte na 'Přidat'

Obsahuje tvrzení

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.

Obsahuje tvrzení

Krok 4: Po jeho přidání se okamžitě provede aserce a zobrazí se, zda je PLATNÁ nebo NEPLATNÁ.

Obsahuje tvrzení

Krok 5: Nyní řekněme, že změníme obsah 'Contains Assertion in SoapUI' na '47' a uvidíme, co se stane.

Obsahuje tvrzení

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.

Obsahuje tvrzení

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í“

  1. Vyberte kategorii tvrzení.
  2. Vyberte typ tvrzení – v tomto případě „NEOBSAHUJE“
  3. Klikněte na 'Přidat'

Neobsahuje tvrzení

Krok 2: Ověřte, zda v odpovědi existuje řetězec 'intA'. Zadejte řetězec 'FromCurrency' a klikněte na 'OK'

Neobsahuje tvrzení

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.

Neobsahuje tvrzení

Krok 4: Nyní změňme obsah 'Neobsahuje tvrzení' a uvidíme, co se stane. Zkontrolujeme neexistenci řetězce „AddResult“.

Neobsahuje tvrzení

Krok 5: Řetězec 'AddResult' je skutečně přítomen v odpovědi, proto tvrzení 'NOT obsahuje' selže, jak je uvedeno níže.

Neobsahuje tvrzení

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í“

  1. Vyberte kategorii tvrzení.
  2. Vyberte typ tvrzení – v tomto případě „XPath Match“
  3. Klikněte na 'Přidat'

Shoda XPath

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.

Shoda XPath

deklarovat jmenný prostor soap='http://schemas.xmlsoap.org/soap/envelope/';

deklarovat jmenný prostor ns1='http://tempuri.org/';

Shoda XPath

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í.

Shoda XPath

Krok 4: Tak daleko,

  1. Po deklaraci jmenných prostorů jsme zadali XPath uzlu XML, který potřebujeme ověřit.
  2. Musíme kliknout na „Vybrat z aktuálního“, aby se aktuální hodnota stala očekávanou hodnotou.
  3. Uživateli se zobrazí aktuální hodnota, kterou můžeme v případě potřeby upravit.
  4. Klikněte na 'Uložit'.

Shoda XPath

Krok 5: Přidané tvrzení v SoapUI se zobrazí, jak je uvedeno níže.

Shoda XPath

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.

Skriptování tvrzení

Klikněte na tlačítko 'Přidat tvrzení', jak je znázorněno níže.

Skriptování tvrzení

Krok 2: Nyní vyberte kategorii Assertion.

  1. V tomto případě je to Script.
  2. Vyberte SoapUI Script Assertion a nejsou s ním spojeny žádné podtypy.
  3. Klikněte na 'Přidat'.

Skriptování tvrzení

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.

Skriptování tvrzení

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"}
  1. Kliknutím na tlačítko 'Execute' spustíte spuštění.
  2. Výstup skriptu je zobrazen v podokně Výstup. Vytisklo jak hodnotu konverze, tak i konečný výsledek (vyhovuje nebo nevyhovuje)
  3. 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.

Skriptování tvrzení

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.

Skriptování tvrzení

Krok 6: Teď

  1. Vyberte Test Suite ze stromu Navigator
  2. Klikněte na tlačítko 'Spustit'
  3. Výsledky by se zobrazily pro celou sadu testů.

Skriptování tvrzení

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'.

Xquery shoda tvrzení

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'.

Xquery shoda tvrzení

Krok 3: Všechny operace jsou uvedeny níže.

Xquery shoda tvrzení

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.

Xquery shoda tvrzení

Krok 5: Zadejte název testovacího případu a klikněte na tlačítko 'OK'

Xquery shoda tvrzení

Krok 6: Testovací případ je vytvořen, jak je znázorněno níže.

Xquery shoda tvrzení

Krok 7: přidat
nový testovací krok typu „Žádost o test mýdla“, jak je uvedeno níže.

Xquery shoda tvrzení

Krok 8: Zadejte název kroku testu. Řekněme – Supplier_by_City, což by bylo smysluplnější Klikněte na 'OK'.

Xquery shoda tvrzení

Krok 9: Vybrat Operakteré bychom chtěli ověřit. V tomto případě je to 'MedicareSupplierSoap -> GetSupplierByCity'. Klikněte na 'OK'.

Xquery shoda tvrzení

Krok 10: Zadejte název testovacího případu a klikněte na 'OK'.

Xquery shoda tvrzení

Krok 11: Přehled XML požadavku by se zobrazil, jak je uvedeno níže.

Xquery shoda tvrzení

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

Xquery shoda tvrzení

Krok 13: Po provedení testu obdržíme níže uvedenou odpověď

Xquery shoda tvrzení

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í.

Xquery shoda tvrzení

Krok 15: Nyní klikněte na 'Přidat tvrzení',

  1. V tomto případě vyberte „Kategorii tvrzení“ – Obsah nemovitosti.
  2. Vyberte typ tvrzení jako „XQuery Assertion“
  3. Klikněte na 'Přidat'.

Xquery shoda tvrzení

Krok 16: Podobně jako u XPath Assertion musíme deklarovat jmenný prostor.

  1. 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í.

    Xquery shoda tvrzení

  2. Abychom získali všechna čísla dodavatele, musíme napsat dotaz XPath a vložíme jej do < SupplierNumber> a Tagy.
  3. Klikněte na 'Vybrat z aktuálního', které se spustí z aktuální odpovědi.
  4. Po kliknutí na „Vybrat z aktuálního“ se zobrazí všechna čísla dodavatelů.
  5. 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)}
}

Xquery shoda tvrzení

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'.

Xquery shoda tvrzení

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.

Možnosti tvrzení

Vytvořené aserce umožňují testerům konfigurovat následující věci ze sady nástrojů asercí.

Volba Description

Možnosti tvrzení

Vybrané tvrzení se posune v pořadí nahoru.

Možnosti tvrzení

Vybrané tvrzení se posune v pořadí dolů.

Možnosti tvrzení

Odebere vybrané tvrzení

Možnosti 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í.
  • 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.

  • 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í.

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.

Běžné chyby a odstraňování problémů

Běžné chyby a odstraňování problémů

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ý.

Běžné chyby a odstraňování problémů