Testování SOA systému˚ v Oracle SOA Suite Marek Rychlý Vysoké uˇcení technické v Brneˇ Fakulta informaˇcních technologií Ústav informaˇcních systému˚
Pˇrednáška pro IOA 3. prosince 2014
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
1 / 23
Obsah
1
Testování služeb a komponent SOA a SCA aplikací Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
2
Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
3
ˇ Shrnutí a záver
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
2 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Vývoj, nasazení a testování SOA/SCA aplikace (opakování ze 3. pˇrednášky)
1
Vývoj jednotlivých komponent. (konfigurace pˇredpˇripravených, adaptace pˇrevzatých a vývoj nových komponent)
2
Testování jednotlivých komponent. ˇ (testy jednotek samostatneˇ a integrované v bež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ˇreba SCA kontejner s napojením na požadované služby a zdroje)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
4 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Vývoj, nasazení a testování SOA/SCA aplikace (opakování ze 3. pˇrednášky) 1 2 3 4
Vývoj SCA aplikace Sestavení balíˇcku Nasazení na server Testování a sledování
→ → → →
jDeveloper, BP Composer jDeveloper, ant, WLST . . . + Enterprise Manager Enterprise Manager
(diagram pˇrevzat z „Life Cycle of a SOA Composite Application“)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
5 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Principy testování komponentových aplikací obecneˇ Testování funkˇcnosti vs. testování provedení „black-box“ testování – testy funkˇcnosti ˇ stavu) (test adekvátnosti výstupu˚ pro vstupy, pˇrípadneˇ na viditelnou zmenu
„white-box“ testování – testy provedení ˇ (test prub ˚ ehu zpracování vstupu˚ na výstupy a vlivu na vnitˇrní stav)
Testování samostatných jednotek vs. testování jejich spolupráce ˇ bez vlivu okolí testy jednotek – každá cˇ ást samostatne, ˇ rení funkˇcnosti dané komponenty, izolace pro odstranení ˇ vlivu okolí) (oveˇ
integraˇcní testy – jednotky v kompozici, bez vlivu okolí ˇ rení funkˇcnosti dané kompozice, izolace pro odstranení ˇ vlivu okolí) (oveˇ
„Mock“ objekty/služby/komponenty pro izolaci ˇ vetšinou ˇ (nahrazují závislosti; omezene, staticky, emulují jejich funkˇcnost)
„Test-driven Development“ (testy jako specifikace, tzn. nejdˇrív testy kompletní funkˇcnosti, pak implementace)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
6 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Problémy testování SOA/SCA aplikací
Obvykle ˇrešení pro celý podnikový IS, nutná funkˇcnost. (služby a jejich kompozice nelze hned testovat v produkˇcním prostˇredí, hrozí ztráty)
Silné závislosti na spolupráci s okolím a na sdílených zdrojích. ˇ (nelze kompletneˇ otestovat v izolaci, pˇri testování lze težko ovlivnit chvální okolí)
Heterogenní a distribuované prostˇredí. (ruzné ˚ implementaˇcní technologie a platformy nasazení, vliv komunikace)
ˇ Soubežnost a cˇ asté asynchronní volání. ˇ (nelze otestovat vechny serializace, více práce se „sessions“ v rámci testu) ˚
Specifickace a pˇrinos dán businessem. (testy, zejmena v rámci TDD, vyžadují kvalitní specifikaci, tzn. kvalitní BP model)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
7 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Automatizované testování
Testy cˇ asto opakovaneˇ verifikují SW vuˇ ˚ ci jeho specifikaci. ˇ ˇ ˇ zmenách ˇ (testy behem vývoje, po zmenách pˇri údržbe, ve zpusobu ˚ integrace, atp.)
ˇ ruje výstupy/stav SW nad danými vstupy/daty. Auto-testování oveˇ (porovnává skuteˇcné výsledky z testovacích dat s dle testu˚ oˇcekávanými výsledky)
Rámce pro automatizované testování, napˇr. ˇ testu˚ a pro kontrolu výsledku) (rámce poskytují podporu pro vytváˇrení a spouštení ˚
jUnit (testy jednotek pro tˇrídy/objekty v jazyce Java)
soapUI (testy jednotek a integraˇcní testy pro web-services, vˇc. „Mock“ služeb)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
8 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Funkˇcní cˇ ásti automatizovaných testu˚ generování – generuje vstupní data pro testované komponenty, spouští testované komponenty nad vstupními daty. ˇ ruje data vystupující z testovaných komponent, verifikace1 – oveˇ porovnává s oˇcekávanými a rozhoduje shodu/neshodu. „mock“ – poskytuje komponentu simulující funkˇcnost, na které závisí testovaná komponenta.
(diagram pˇrevzat z „Best Practices for testing SOA Suite 11g based systems“)
1 angl.
ˇ ceho v rámci testu, jinak chyba „assertion“, tj. vynucení platnosti neˇ
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
9 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Testování jako souˇcást životního cyklu služby/komponenty Principy a problémy testování komponentových aplikací Automatizované jednotkové i integraˇcní testy
Izolace pˇri automatizovaném testování ˇ jako jednotky. Komponenty se testují samostatne, (závislosti na okolí nahrazeny napojením na „Mock“ komponenty)
Jednotkové testy neodhalí problémy pˇri integraci, ˇ integraˇcní testy. ale poskytnou základ pro pozdejší Integraˇcní testy se postupneˇ napojují další a další komponenty. (odspodu, tj. od komponent k celkum; ˚ testy jednotek zaruˇcují funkˇcnost integrovaných komponent nejnižší vrstvy i integrujících komponent vyšších vrstev)
(diagramy pˇrevzaty z „Best Practices for testing SOA Suite 11g based systems“)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
10 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
Ruˇcní testování služby v Enterprise Manager (opakování ze 3. pˇrednášky) 1
Oracle SOA Suite 11g ˇ WebLogic AdminServer a „managed server“ soa_server1) (sputený
2 3 4
Naˇctení stránky Oracle Enterprise Manager ˇ „SOA“/„soa-infra“/„default“, služby a tlaˇcítko „Test“. Pˇrihlášení, výber ˇ operace, sestavení XML požadavku a tlaˇcítko „Test Web Service“. Výber
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
12 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager 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ˇrednášky)
Logy a statistiky celé SOA infrastruktury. ˇ „SOA“/ „soa-infra“ a menu „SOA Infrastructure“ vpravo) (výber
ˇ Výpis stavu instancí, chyb a odmítnutých zpráv zuˇ ˚ castnených komponent. ˇ „SOA“/ „soa-infra“/ „default“ a položky s názvem služby) (výber
ˇ „Launch Flow Trace“ po provedení „Test Web Service“. Výber
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
13 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager 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ˇredí jDeveloper, tzv. „Composite Test“ v dané „TestSuite“)
ˇ pomocí funkˇcních cˇ ástí Resty lze vystavet ˇ webové služby nad danými daty „initiation“ – spuštení (volání dané operace dané webové služby s danými vstupními XML daty)
„assertion“ – kontrola dat pˇrenášených na spojeních komponent (kontroly XML vstupu˚ i výstupu˚ 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 cˇ i callback)
Lze spustit pouze testy webových služeb, ne pˇrímo komponent. (pro test komponenty bez rozhraní webové služby, musí se toto vytvoˇrit)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
14 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
Popis komponentových testu˚ 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ˇcástí nasazované aplikace.
(diagramy pˇrevzaty z „Best Practices for testing SOA Suite 11g based systems“)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
15 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
ˇ komponentových testu˚ Provádení Testy souˇcástí SCA aplikace a s ní i nasazovány na server. (klasický „deploy to SAR“ zabalí do archivu i XML soubory testu) ˚
Po nasazení lze testy spustit v Enterprise Manager. (lze také pomocí WLST/ant, zaˇclenit do nástroju˚ pro deploy na testovací servery)
ˇ na záložce „Unit Tests“ v zobrazení služby. Spuštení ˇ (zadává se poˇcet instancí, cˇ as pro timeout a jméno behu testu)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
16 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
Pˇríklady komponentových testu˚
(diagramy pˇrevzaty z „Best Practices for testing SOA Suite 11g based systems“)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
17 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
Ukázka testu˚ komponent v prostˇredí jDeveloper 1
ˇ testovaný „compoiste.xml“. V jDeveloper otevˇreme SOA projekt a v nem
2
Vlevo dole v podokneˇ „Structure“ zvolíme složku „TestSuites“.
3
V kontextovém menu složky „TestSuites“ vytvoˇríme „Test Suite“.
4
V „TestSuites“ vytvoˇríme podobneˇ „Test“, který pak otevˇreme.
5
V otevˇrené testu máme pˇred sebou reprezentace složené SCA aplikace.
6
Dvojkikem na rozhraní WS cˇ i na spojení komponent mužeme ˚ pˇrídávat fce. (inicializace volání služby, aserce a emulace zasílaných zpráv)
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
18 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
soapUI & loadUI soapUI je nástroj pro testování funkˇcnosti webových služeb. (open-source a v základní verzi zdarma dostupný program)
Podporuje ruzné ˚ druhy „black-box“ testu˚ služeb funkˇcní testy od jednotek pro komplikované scénáˇre s návaznostmi, nastavitelné „Mock“ s programovatelnými generátory, ruzné ˚ bezpeˇcnostních testy typu SQL injection, XML bomb, atp. ˇ loadUI pro zátežové testy, tj. kontrolu poskytování služeb.
Podpora ruzných ˚ technologií (nejen) webových služeb. (SOAP/REST, HTTP/HTTPs, JDBC, JMS, WS-* standardu, ˚ atd.)
Integrace s ruznými ˚ nástroji pro sestavení i prostˇredími pro vývoj. (Maven, Ant, jUnit, . . . ; Netbeand, Eclipse, InteliJ, . . . )
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
19 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
Ruˇcní testování služby v Enterprise Manager Automatizované testování komponent v Oracle SOA Automatizované testování web-services v soapUI
Kdy použít soapUI namísto Oracle SOA Suite?
ˇ „Mock“ služby. Pokud potˇrebujeme složitejší (napˇr. dynamické generování, ne vracení stále stejného výstupu)
Pro integraˇcní testy, napˇr. testy služeb v choreografii. (snažíme se testovat spolupráci služeb dle daného scénaˇre)
Potˇrebujeme testovat službu stojící mimo Oracle SOA Suite. (tj. cizí službu, ke které nemáme zdrojový kód/implementaci)
ˇ tzv. „stress testing“. Potˇrebujeme testovat službu pod záteží, ˇ rili její kvalitu) (zejména cizí službu, abychom oveˇ
ˇ automatizaci a lepší integraci s bežnými ˇ Chceme vetší nástroji. ˇ testu˚ pˇri commitu do repozitáˇre, integrace s jUnit pro jednotnost) (napˇr. spuštení
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
20 / 23
Testování služeb a komponent SOA a SCA aplikací Testování SCA apl. a komponent v Oracle SOA Suite 11g&12c ˇ Shrnutí a záver
ˇ Shrnutí a záver
Testování „black-box“ׄwhite-box“, jednotek×integraˇcní. 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ámcu. ˚
ˇ Pˇríšte? Bezpeˇcnost webových služeb (bezpeˇcnostní politiky a jejich pˇriˇrazení službám, sledování systému˚ s architekturou SOA a ohledem na bezpeˇcnost, . . . )
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
22 / 23
ˇ Podekování
ˇ byl podpoˇren projektem MŠMT Tento pˇredmet ˇ CZ.1.07/2.2.00/15.0163 „Vzdelávání v IT pro praxi“.
Marek Rychlý
Testování SOA systému˚ v Oracle SOA Suite — Pˇrednáška pro IOA, 3. prosince 2014
23 / 23