Použití SoapUI s Selenium pro testování webových služeb
⚡ Chytré shrnutí
SoapUI s Selenium umožňuje jedné sadě zkontrolovat webovou službu a prohlížeč, který ji využívá. Groovy je most, protože SoapUI běží Groovy nativně a Groovy dosáhne každého Java knihovna Selenium lodě.
SoapUI je nejoblíbenějším open source funkční testování Nástroj pro API testování. Poskytuje kompletní pokrytí testu a podporuje všechny standardní protokoly a technologie.
Co je SOAP?
MÝDLO je jednoduchý protokol založený na XML. Umožňuje aplikacím vyměňovat si informace přes HTTP. Využívá webové služby Description Language (WSDL) pro komunikaci a další aplikace s ním mohou interagovat webové služby prostřednictvím tohoto rozhraní WSDL.
SOAP vs. REST webové služby v SoapUI
SoapUI Začínal jako SOAP klient a jeho název to stále napovídá, ale testuje i REST endpointy. Vědět, na který styl ukazujete, určuje, jak bude test sestaven.
| Vzhled | MÝDLO | REST |
|---|---|---|
| stract | Soubor WSDL popisuje každou operaci, takže SoapUI může automaticky generovat požadavky. | Obvykle definice OpenAPI nebo Swaggeru, nebo žádný formální souhlastract vůbec. |
| Formát zprávy | Pouze obálka XML. | Obvykle JSON, i když XML a další formáty jsou povoleny. |
| DOPRAVA | Nejčastěji HTTP, ale SOAP je nezávislý na transportu. | HTTP s metodou a URL nesoucí záměr. |
| Tvrzení v SoapUI | XPath a XQuery se porovnávají s obálkou odpovědi. | JSONPath a aserce skriptu se shodují s datovou částí. |
| Typické použití | Bankovnictví, telekomunikace a dalšítracnáročné podnikové integrace. | Veřejné a mobilní služby, kde užitečné zatížení zůstává nízké. |
Následující návod používá meteorologickou službu SOAP, ale stejná třída běžce řídí testovací případ REST bez jakékoli změny v Java kód.
Co je SOAPUI?
SOAPUI je open source multiplatformní nástroj pro testování webových služeb. Edice SOAPUI-Pro nabízí další funkce pro firmy zabývající se kritickými webovými službami. Webové služby hrají významnou roli v internetových aplikacích.
⚠️ Poznámka k názvu produktu: Výroba SmartBear ukončena SoapUI Pro jako samostatný produkt a sloučil jej spolu s LoadUI Pro a ServiceV Pro do ReadyAPIBezplatná edice si zachovává SoapUI název a je stále aktivně vydáván. Níže uvedené kroky fungují v obou případech, a v existujících SoapUI projekty otevřené v ReadyAPI.
Co je to Selenium?
Selenium není jeden program, ale skupina nástrojů pro ovládání prohlížeče tak, jak by to dělal obyčejný člověk. Důležité jsou zde dva členy:
- Selenium — testovací nástroj, který automatizuje prohlížeče na mnoha platformách.
- Selenium webový ovladač — provádí přímá volání do prohlížečů a využívá nativní podporu automatizace každého prohlížeče.
Proč kombinovat SoapUI a Selenium v jednom testu
Kontrola služby a kontrola obrazovky jsou obvykle dva oddělené úkoly, které zvládají dva samostatné programy, a proto vada ve spojení mezi nimi obvykle přežije oba. Jejich společné spuštění tuto mezeru překlene.
- Dokažte zpáteční cestu. Rezervace odeslaná v prohlížeči by se měla zobrazit v odpovědi služby. Pouze kombinovaný test může potvrdit obě poloviny.
- Rychlé nastavení státu. Vytvoření zákazníka prostřednictvím API trvá sekundu; vytvoření jednoho až dvanácti polí formuláře trvá minutu a častěji selhává.
- Lokalizujte poruchu. Když uživatelské rozhraní zobrazí nesprávný součet, asserce API ve stejném spuštění vám okamžitě sdělí, zda je chyba ve službě nebo ve stránce.
- Znovu použijte jednu datovou sadu. Páry PSČ a města v níže uvedeném příkladu by mohly sloužit jako zdroj volání služby a mohly by stejně tak sloužit jako zdroj pro aserce prohlížeče.
- Omezte duplicitní pokrytí. Ověřovací pravidla, která jsou již ověřena na úrovni služeb, nevyžadují pomalý test v prohlížeči.
Kompromis je těžší zkouškou: dva nástroje, dvě sady závislostí a delší běh. Kombinované testy ponechte pro hrstku cest, které skutečně překračují hranici, a zbytek nechte jako čisté. API nebo čisté kontroly prohlížeče.
Selenium s SoapUI
Nejjednodušší a nejjednodušší způsob integrace Selenium s SoapUI je použít Groovy, Který SoapUI hojně podporuje.
Groovy je objektově orientovaný skriptovací jazyk, který zahrnuje všechny Java knihovny, takže každý Java klíčové slovo a funkci lze použít v Groovy skript přímo. Běží na JVM (Java virtuální stroj), což umožňuje Groovy vkročit dovnitř SoapUI a Java Selenium test pro sdílení stejných tříd.
Předpoklady pro použití Selenium s SoapUI
Před psaním jakéhokoli kódu nainstalujte následující:
⚠️ Poznámka k verzi: Groovy 5.0 je aktuální stabilní verze a vyžaduje JDK 11 nebo novější, takže nejprve nainstalujte JDK a nechte Groovy verze, řiďte se jí. Selenium je přidáno k Java projekt jako Maven nebo Gradle závislost, nikoli jako stažená složka, a SoapUI Jar musí být na stejné cestě tříd jako váš test – právě v tomto bodě selže většina prvních pokusů.
Zavolejte SoapUI Běžec testovacího případu v Selenium
Níže uvedený kód volá SoapUI testovací případ. Nastaví vlastnosti pro město a jeho odpovídající PSČ a při spuštění načte hodnotu každého města a PSČ a poté oznámí počet chyb pro každou dvojici, která se neshoduje. Tento kód se spouští v Selenium.
Poznámka: Místo statického souboru vlastností pro uložení PSČ a města se zde používá usePropertyFileFlag=true. PSČ a město jsou dynamicky předávány za běhu metodou setProjectProperties().
Pokyny ke spuštění kódu:
- Začněte SoapUI.
- Začněte nový testovací případ.
- Přidat nový Groovy krok.
- Zkopírujte a vložte ukázkový kód do kroku.
- Klikněte na Přehrát.
- Můžete vidět Firefox spuštění a navigace k GooglePoté můžete vidět SoapUI záznamy v protokolu.
- Kód běží pomocí JUnit.
Code Příklad
@when("<I use the weather service to get the weather information") public void i_use_the_weather_service_to_get_the_information() { Set<Entry<String, string>> set = zipAndCities.entrySet(); while (iterator,hasNext)) { Entry<String, String> entry = iterator.next(); String zipCode = entry.getkey(); String city = entry.getValue(); String[] prop = {"usePropertyFileFlag=true","zipCode=" +zipCode, "city=" +city}; try{ SoapUITestCaseRunner soapUITestCaseRunner = new SoapUITestCaseRunner(); soapUITestCaseRunner.setProjectFile("src/test/resources/WeatherSoapTest-soapui-project.xml"); soapUITestCaseRunner.setProjectProperties(prop); soapUITestCaseRunner.setTestSuite("TestSuite1"); soapUITestCaseRunner.setTestCase("TestCase1"); soapUITestCaseRunner.run(); } catch (Exception e) { System.err.println("checking" + zipCode + " failed!"); failureCount++; zipCodes.append(zipCode + " [" + city +"] "); e.printStackTrace(); }finally{ totalCount++; } } } }
⚠️ Code poznámky: Tento úryvek je reprodukován přesně tak, jak byl publikován, a jedná se spíše o fragment než o kompilovatelnou třídu. Než se sestaví, musíte deklarovat iterátor získaný z set.iterator(), správně zatímco (iterátor, máDalší)) na zatímco (iterátor.hasNext()) a entry.getkey() na entry.getKey(), psát anotaci s velkým písmenem jako @Když, odstraňte nepotřebný znak na začátku textu kroku a použijte Řetězec spíše než šňůra v deklaraci Set. Původní text je zachován, takže publikovaný příklad zůstává nedotčen.
Zobrazení konzole vám umožňuje prohlédnout si všechny modelový případs provedeno. Najdete zde seznam PSČ a měst načtených a předaných do SoapUI Testovací případ 1.
Zobrazit SoapUI Log soubor
Soubory protokolu zaznamenávají každou akci, která proběhne v operačním systému nebo softwarové aplikaci. Chcete-li zobrazit SoapUI soubor protokolu, přejděte do hlavního adresáře, kde uvidíte soubor s názvem soapui.log.
In SoapUI, soubor protokolu se nachází ve složce bin v instalačním adresáři, například C:\Program Files\SmartBear\soapUI-Pro-4.0.1\bin. V aktuální instalaci se složka s verzí liší a ReadyAPI Instalace zapisuje do vlastní složky bin.
Když tento soubor protokolu otevřete kliknutím na něj, bude vypadat podobně jako na obrázku níže.
Kde SoapUI a Selenium Integrace se běžně přerušuje
Téměř každá porucha v tomto bodě je spíše problémem s kabeláží než s testem. Toto jsou ty, které je třeba zkontrolovat jako první.
| Příznak | Pravděpodobná příčina | Co zkontrolovat |
|---|---|---|
| NoClassDefFoundError nebo ClassNotFoundException na SoapUITestCaseRunner | Jedno SoapUI Soubor jar se nenachází na testovací cestě tříd. | Přidat SoapUI závislost na souboru sestavení nebo ukažte cestu ke třídě na soubor JAR v SoapUI složka lib. Chybějící soubor jar se objeví jako běžný Selenium výjimka v konzoli. |
| Soubor projektu nebyl nalezen | Funkce setProjectFile() rozpoznává relativní cestu k pracovnímu adresáři, což se liší mezi IDE a nástrojem pro sestavení. | Spusťte z kořenového adresáře projektu nebo zadejte absolutní cestu. |
| Testovací sada nebo testovací případ nenalezen | Názvy v setTestSuite() a setTestCase() se musí přesně shodovat s projektem. | Zkopírujte jména přímo z SoapUI strom projektu; rozlišují velká a malá písmena. |
| Nemovitost nikdy nedosáhne požadované úrovně | Funkce setProjectProperties() byla spuštěna po funkci run() nebo požadavek na danou vlastnost neodkazuje. | Před funkcí run() nastavte každou vlastnost a uvnitř požadavku použijte syntaxi zástupného symbolu vlastnosti. |
| Prohlížeč se nespustí | Ovladač a nainstalovaný prohlížeč mají různé hlavní verze. | Nechat Selenium Správce vyřeší ovladač nebo jej porovná s verzí prohlížeče. |
| Funkce funguje v IDE, ale ne z běžce. | Tento krok se spoléhá na funkci dostupnou pouze pro verzi Pro, jako je například zdroj dat. | Potvrďte licenci nebo krok znovu sestavte s ekvivalenty s otevřeným zdrojovým kódem. |
Jakmile běžec čistě skončí a soapui.log zobrazí očekávané položky, integrace funguje a lze ji složit do širšího kontextu. testování automatizace apartmá.



