Testování SOA systémů v Oracle SOA Suite Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Přednáška pro IOA 3. prosince 2014 Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 1 / 23
Obsah 1 Testování služeb a komponent SOA a SCA aplikací Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy 2 Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui 3 Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 2 / 23
Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Vývoj, nasazení a testování SOA/SCA aplikace (opakování ze 3. přednášky) 1 Vývoj jednotlivých komponent. (konfigurace předpřipravených, adaptace převzatých a vývoj nových komponent) 2 Testování jednotlivých komponent. (testy jednotek samostatně a integrované v běžných kontextech) 3 Vývoj komponentové aplikace. (kompozice komponent, konfigurace jejich rozhraní a vlastností, spojení, atp.) 4 Sestavení a release verze komponentové aplikace. (SCA aplikace je sestavována a nasazována jako celek) 5 Nasazení a testování komponentové aplikace. (potřeba SCA kontejner s napojením na požadované služby a zdroje) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 4 / 23
Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Vývoj, nasazení a testování SOA/SCA aplikace (opakování ze 3. přednášky) 1 Vývoj SCA aplikace jdeveloper, BP Composer 2 Sestavení balíčku jdeveloper, ant, WLST 3 Nasazení na server... + Enterprise Manager 4 Testování a sledování Enterprise Manager (diagram převzat z Life Cycle of a SOA Composite Application ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 5 / 23
Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Principy testování komponentových aplikací obecně Testování funkčnosti vs. testování provedení black-box testování testy funkčnosti (test adekvátnosti výstupů pro vstupy, případně na viditelnou změnu stavu) white-box testování testy provedení (test průběhu zpracování vstupů na výstupy a vlivu na vnitřní stav) Testování samostatných jednotek vs. testování jejich spolupráce testy jednotek každá část samostatně, bez vlivu okolí (ověření funkčnosti dané komponenty, izolace pro odstranění vlivu okolí) integrační testy jednotky v kompozici, bez vlivu okolí (ověření funkčnosti dané kompozice, izolace pro odstranění vlivu okolí) Mock objekty/služby/komponenty pro izolaci (nahrazují závislosti; omezeně, většinou staticky, emulují jejich funkčnost) Test-driven Development (testy jako specifikace, tzn. nejdřív testy kompletní funkčnosti, pak implementace) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 6 / 23
Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Problémy testování SOA/SCA aplikací Obvykle řešení pro celý podnikový IS, nutná funkčnost. (služby a jejich kompozice nelze hned testovat v produkčním prostředí, hrozí ztráty) Silné závislosti na spolupráci s okolím a na sdílených zdrojích. (nelze kompletně otestovat v izolaci, při testování lze těžko ovlivnit chvální okolí) Heterogenní a distribuované prostředí. (různé implementační technologie a platformy nasazení, vliv komunikace) Souběžnost a časté asynchronní volání. (nelze otestovat věchny serializace, více práce se sessions v rámci testů) Specifickace a přinos dán businessem. (testy, zejmena v rámci TDD, vyžadují kvalitní specifikaci, tzn. kvalitní BP model) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 7 / 23
Automatizované testování Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Testy často opakovaně verifikují SW vůči jeho specifikaci. (testy během vývoje, po změnách při údržbě, změnách ve způsobu integrace, atp.) Auto-testování ověřuje výstupy/stav SW nad danými vstupy/daty. (porovnává skutečné výsledky z testovacích dat s dle testů očekávanými výsledky) Rámce pro automatizované testování, např. (rámce poskytují podporu pro vytváření a spouštění testů a pro kontrolu výsledků) junit (testy jednotek pro třídy/objekty v jazyce Java) soapui (testy jednotek a integrační testy pro web-services, vč. Mock služeb) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 8 / 23
Funkční části automatizovaných testů Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy generování generuje vstupní data pro testované komponenty, spouští testované komponenty nad vstupními daty. verifikace 1 ověřuje data vystupující z testovaných komponent, porovnává s očekávanými a rozhoduje shodu/neshodu. mock poskytuje komponentu simulující funkčnost, na které závisí testovaná komponenta. (diagram převzat z Best Practices for testing SOA Suite 11g based systems ) 1 angl. assertion, tj. vynucení platnosti něčeho v rámci testu, jinak chyba Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 9 / 23
Testování jako součást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integrační testy Izolace při automatizovaném testování Komponenty se testují samostatně, jako jednotky. (závislosti na okolí nahrazeny napojením na Mock komponenty) Jednotkové testy neodhalí problémy při integraci, ale poskytnou základ pro pozdější integrační testy. Integrační testy se postupně napojují další a další komponenty. (odspodu, tj. od komponent k celkům; testy jednotek zaručují funkčnost integrovaných komponent nejnižší vrstvy i integrujících komponent vyšších vrstev) (diagramy převzaty z Best Practices for testing SOA Suite 11g based systems ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 10 / 23
Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui (opakování ze 3. přednášky) 1 Oracle SOA Suite 11g (sputěný WebLogic AdminServer a managed server soa_server1) 2 Načtení stránky Oracle Enterprise Manager 3 Přihlášení, výběr SOA / soa-infra / default, služby a tlačítko Test. 4 Výběr operace, sestavení XML požadavku a tlačítko Test Web Service. Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 12 / 23
Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Sledování služeb v Enterprise Manager, FMW Control (opakování ze 3. přednášky) Logy a statistiky celé SOA infrastruktury. (výběr SOA / soa-infra a menu SOA Infrastructure vpravo) Výpis stavu instancí, chyb a odmítnutých zpráv zůčastněných komponent. (výběr SOA / soa-infra / default a položky s názvem služby) Výběr Launch Flow Trace po provedení Test Web Service. Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 13 / 23
Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Automatické testování komponent v Oracle SOA Pro komponentovou aplikaci lze zadefinovat auotmatické testy. (nad composite v prostředí jdeveloper, tzv. Composite Test v dané TestSuite ) Resty lze vystavět pomocí funkčních částí initiation spuštění webové služby nad danými daty (volání dané operace dané webové služby s danými vstupními XML daty) assertion kontrola dat přenášených na spojeních komponent (kontroly XML vstupů i výstupů volání, callbacks a výskyt chybových zpráv) emulation emulace dat na spojích na závislosti testované komp. (emulace výstupního XML volané Mock komponenty, chyby či callback) Lze spustit pouze testy webových služeb, ne přímo komponent. (pro test komponenty bez rozhraní webové služby, musí se toto vytvořit) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 14 / 23
Popis komponentových testů Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Komponentové testy se definují nad speciálním zobrazením composite. Na rozhraní web-service její iniciace, na spojeních pak aserce a emulace. Testy v XML souborech v rámci SCA, jsou součástí nasazované aplikace. (diagramy převzaty z Best Practices for testing SOA Suite 11g based systems ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 15 / 23
Provádění komponentových testů Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Testy součástí SCA aplikace a s ní i nasazovány na server. (klasický deploy to SAR zabalí do archivu i XML soubory testů) Po nasazení lze testy spustit v Enterprise Manager. (lze také pomocí WLST/ant, začlenit do nástrojů pro deploy na testovací servery) Spuštění na záložce Unit Tests v zobrazení služby. (zadává se počet instancí, čas pro timeout a jméno běhu testu) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 16 / 23
Příklady komponentových testů Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui (diagramy převzaty z Best Practices for testing SOA Suite 11g based systems ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 17 / 23
Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Ukázka testů komponent v prostředí jdeveloper 1 V jdeveloper otevřeme SOA projekt a v něm testovaný compoiste.xml. 2 Vlevo dole v podokně Structure zvolíme složku TestSuites. 3 V kontextovém menu složky TestSuites vytvoříme Test Suite. 4 V TestSuites vytvoříme podobně Test, který pak otevřeme. 5 V otevřené testu máme před sebou reprezentace složené SCA aplikace. 6 Dvojkikem na rozhraní WS či na spojení komponent můžeme přídávat fce. (inicializace volání služby, aserce a emulace zasílaných zpráv) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 18 / 23
soapui & loadui Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui soapui je nástroj pro testování funkčnosti webových služeb. (open-source a v základní verzi zdarma dostupný program) Podporuje různé druhy black-box testů služeb funkční testy od jednotek pro komplikované scénáře s návaznostmi, nastavitelné Mock s programovatelnými generátory, různé bezpečnostních testy typu SQL injection, XML bomb, atp. loadui pro zátěžové testy, tj. kontrolu poskytování služeb. Podpora různých technologií (nejen) webových služeb. (SOAP/REST, HTTP/HTTPs, JDBC, JMS, WS-* standardů, atd.) Integrace s různými nástroji pro sestavení i prostředími pro vývoj. (Maven, Ant, junit,... ; Netbeand, Eclipse, InteliJ,... ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 19 / 23
Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapui Kdy použít soapui namísto Oracle SOA Suite? Pokud potřebujeme složitější Mock služby. (např. dynamické generování, ne vracení stále stejného výstupu) Pro integrační testy, např. testy služeb v choreografii. (snažíme se testovat spolupráci služeb dle daného scénaře) Potřebujeme testovat službu stojící mimo Oracle SOA Suite. (tj. cizí službu, ke které nemáme zdrojový kód/implementaci) Potřebujeme testovat službu pod zátěží, tzv. stress testing. (zejména cizí službu, abychom ověřili její kvalitu) Chceme větší automatizaci a lepší integraci s běžnými nástroji. (např. spuštění testů při commitu do repozitáře, integrace s junit pro jednotnost) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 20 / 23
Testování black-box white-box, jednotek integrační. Testování samotných komponent, snazší lokalizace chyby, nutno izolovat. Generátor/iniciace, validátor/aserce a Mock služby/komponenty. Testování tvorbou Test Suites a jejich Composite Tests v Oracle SOA. Automatické testování webových služeb pomocí soapui a loadui rámců. Příště? Bezpečnost webových služeb (bezpečnostní politiky a jejich přiřazení službám, sledování systémů s architekturou SOA a ohledem na bezpečnost,... ) Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 22 / 23
Poděkování Tento předmět byl podpořen projektem MŠMT CZ.1.07/2.2.00/15.0163 Vzdělávání v IT pro praxi. Marek Rychlý Testování SOA systémů v Oracle SOA Suite Přednáška pro IOA, 3. prosince 2014 23 / 23