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

  • 🔘 Dva nástroje, dvě vrstvy: SoapUI procvičuje koncový bod SOAP nebo REST, zatímco Selenium WebDriver řídí prohlížeč, který jej volá.
  • ☑️ Groovy je lepidlo: SoapUI podporuje Groovy rozsáhle a Groovy nese celý Java knihovní sada, takže Selenium kód běží beze změny.
  • (Tj. Třída běžce: SoapUITestCaseRunner otevře soubor projektu, vybere testovací sadu a testovací případ a spustí je z Java.
  • 🧪 Dynamická data: Funkce setProjectProperties() předává hodnoty, jako je město a PSČ, za běhu, místo aby je předávala ze statického souboru vlastností.
  • 🛠️ Předpoklady: Jedno Groovy SDK, JDK, Selenium a SoapUI musí být všechny nainstalovány před prvním spuštěním.
  • 📊 Důkazní stopa: Každá akce se zapíše do souboru soapui.log ve složce bin v instalačním adresáři.

Použití SoapUI s Selenium pro testování webových služeb prostřednictvím Groovy

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:

  1. Začněte SoapUI.
  2. Začněte nový testovací případ.
  3. Přidat nový Groovy krok.
  4. Zkopírujte a vložte ukázkový kód do kroku.
  5. Klikněte na Přehrát.
  6. Můžete vidět Firefox spuštění a navigace k GooglePoté můžete vidět SoapUI záznamy v protokolu.
  7. 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.

SoapUI výpis instalačního adresáře se souborem soapui.log, který je viditelný

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.

složku bin SoapUI instalační adresář, kde je uložen soubor protokolu

Když tento soubor protokolu otevřete kliknutím na něj, bude vypadat podobně jako na obrázku níže.

Obsah souboru soapui.log zobrazující záznamy o zaznamenaném testovacím běhu

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

Nejčastější dotazy

Open-source edice běží Groovy kroky a zpřístupňuje běžící testovací případ, takže samotná integrace nepotřebuje žádnou licenci. Pro nebo ReadyAPI Funkce jako zdroje dat a průvodce řízený daty jsou části, které bez něj selžou.

Ano, a je to zrcadlový obraz tohoto návodu. Groovy Krok může přímo vytvořit instanci WebDriveru za předpokladu, že Selenium sklenice se umisťují do SoapUI lib složku, aby je skript mohl vyřešit.

SoapUI provede Groovy nativně v kroku skriptu, bez kompilačního cyklu a Groovy dosáhne každého Java třída je již na cestě tříd. Plain Java potřebuje krok sestavení, a proto Groovy vítězství za krátký integrační kód.

Zabalte to jako JUnit or TestNG otestovat a nechat Maven nebo Gradle vyvolejte ho přesně tak, jak je uvedeno v příkladu. Na agentovi musí prohlížeč běžet bez headsetu a SoapUI Soubor projektu musí být commitován spolu s testovacím kódem.

Asistenti jsou užiteční pro rozšíření malé sady párů měst a PSČ do širšího pokrytí a pro vyhledávání polí odpovědí, která se nedotýkají žádného assertačního dojmu. Vygenerované hodnoty stále vyžadují skutečnou kontrolu, protože věrohodné PSČ není platné.

V rámci limitů je to tak. Druhý pilot to zvládá. Groovy syntaxe a běžné Java volá dobře, ale má málo znalostí o SoapUI skriptovací objekty jako testRunner, context a log, takže tyto návrhy je třeba pečlivě zkontrolovat.

Uložte je jako proměnné prostředí nebo do správce tajných kódů a za běhu je načtěte do vlastností projektu, stejným mechanismem, jaký zde používá setProjectProperties(). Potvrzený soubor projektu s heslem v prostém textu je únik, který čeká na to, až se stane.

Uvnitř obálky uchovávejte kontroly na úrovni protokolu – stav, schéma, XPath SoapUI, kde se pro ně vyrábějí nástroje. Prosaďte v Selenium testujte pouze to, co musí zobrazit samotný prohlížeč, takže selhání ukazuje na jednu vrstvu.

Shrňte tento příspěvek takto: