29
Tobias Bosch, SOA Testing © OPITZ CONSULTING GmbH 2010 Seite 1 SOA Testing Technical Architect Mitglied SOA Competence Center OPITZ CONSULTING München GmbH

SOA Testing - DOAG Deutsche ORACLE … · SOA Testing SOA Testing © OPITZ CONSULTING GmbH 2010 Seite 1 ... DB-Adapter BAM-Adapter Assert. Aufruf beliebiger Services Abfangen beliebiger

Embed Size (px)

Citation preview

Tobias Bosch,

SOA Testing

© OPITZ CONSULTING GmbH 2010 Seite 1SOA Testing

Technical ArchitectMitglied SOA Competence Center

OPITZ CONSULTING München GmbH

Agenda

1. Einleitung

2. Aktueller Tool-Status

3. Neue Möglichkeiten

© OPITZ CONSULTING GmbH 2010 Seite 2SOA Testing

Leistungs-angebot

�Java�SOA/BPM

Kunden

�Branchen-übergreifend

Tätigkeits-felder

�IT-Strategie�Beratung

Fakten

�Gründung 1990 �400 Mitarbeiter

© OPITZ CONSULTING GmbH 2010 Seite 3SOA Testing

�ORACLE�BI/DWH�Outtasking

�Über 600 Kunden

�Implementierung�Betrieb�Training

�8 Standorte in D/PL/CH

Industrie / Versorger / Telekommunikation

29%

Handel / Logistik / Dienstleistungen29%

42%Öffentliche Auftraggeber /

Banken & Versicherungen / Vereine & Verbände

Was ist SOA?

� Business-IT Alignment

� Flexibilität

© OPITZ CONSULTING GmbH 2010 Seite 4SOA Testing

Warum Testen in einer SOA?

� Softwaretest: Fehler finden

� Test-Stufen� Unittests� Integrationstests� Systemtests

� SOA Umgebungen

© OPITZ CONSULTING GmbH 2010 Seite 5SOA Testing

� SOA Umgebungen� Verteiltes System: Lokalisierung der Fehlerursache� Flexibilität: Vermeidung von Nebenwirkungen einer Änderung� Hohe Qualitätsanforderungen

Unittests in der Oracle SOA Suite (1)

� Transformationen: XQuery, XSLT

� JUnit-Test

1 Reader strm = new FileReader(xq);

2 PreparedXQuery xquery = new XQueryContext().

prepareXQuery(strm);

© OPITZ CONSULTING GmbH 2010 Seite 6SOA Testing

3 xquery.setNode( new QName("var1"), var1Node);

4 XMLSequence seq = xquery.executeQuery();

5 seq.next();

6 XMLNode res = seq.getCurrentItem().getNode();

Unittests in der Oracle SOA Suite (2)

� Orchestrierung: BPMN, BPEL, OSB Flows

� Test Suites for Composite Applications

Invoke

Assert & Reply

© OPITZ CONSULTING GmbH 2010 Seite 7SOA Testing

Invoke Reply

Assert

� End-to-End

Abt.2Abteilung 1

Systemtests in der SOA-Suite

OSB1 Composite1 OSB2Composite2

Invoke

© OPITZ CONSULTING GmbH 2010 Seite 8SOA Testing

OSB1 Composite1 OSB2

DB-Adapter

Composite2

BAM-Adapter

Assert

� Aufruf beliebiger Services

� Abfangen beliebiger Serviceaufrufe

Integrationstests in der SOA-Suite (1)

OSB1 Composite1 OSB2Composite2

© OPITZ CONSULTING GmbH 2010 Seite 9SOA Testing

Test

OSB1 Composite1 OSB2

DB Mock

Composite2

BAM MockInvoke

AssertAbt2 Mock

Assert & Reply

Assert & Reply

Assert & Reply

� Testfallabhängige Mock-Services� Inhalt� Ort

Integrationstests in der SOA-Suite (2)

Composite1 Composite2

© OPITZ CONSULTING GmbH 2010 Seite 10SOA Testing

Test

Composite1

DB Mock

Composite2

BAM MockInvoke

AssertOsb2 Mock

Assert & Reply

Assert & Reply

Assert & Reply

Zwischenstand

� Unit-Tests:� XQuery, XSLT: Via API und JUnit� Composites: Test Suite for Composite Applications� OSB:

� Integrationstests:

� Systemtests / End-to-End Tests:

Fehlt

Fehlt

© OPITZ CONSULTING GmbH 2010 Seite 11SOA Testing

� Systemtests / End-to-End Tests: � Dritthersteller

� Aufruf beliebiger OSB Services

� Abfangen beliebiger OSB Serviceaufrufe

Integrationstests mit dem OSB (1)

OSB1 Composite1 OSB2Composite2

© OPITZ CONSULTING GmbH 2010 Seite 12SOA Testing

Test

OSB1 Composite1 OSB2

DB-Adapter

Composite2

BAM-Adapter

Invoke

AssertAbt2 Mock

Assert & Reply

� Konfiguration von Proxy-Services

Aufruf beliebiger OSB Services (1)

<xml-fragment>

<ser:coreEntry isProxy="true" isEnabled="true">

<ser:binding type="abstract XML"/>

</ser:coreEntry>

<ser:endpointConfig>

<tran:provider-id>file</tran:provider-id>

<tran:inbound>true</tran:inbound>

© OPITZ CONSULTING GmbH 2010 Seite 13SOA Testing

<tran:inbound>true</tran:inbound>

<tran:URI>

<env:value>file:///c:/temp/input</env:value>

</tran:URI>

</ser:endpointConfig>

<ser:router>

<con:flow>

...

</con:flow>

</ser:router>

</xml-fragment>

� Konfiguration von Proxy-Services

Aufruf beliebiger OSB Services (2)

<xml-fragment>

<ser:coreEntry isProxy="true" isEnabled="true">

<ser:binding type="abstract XML"/>

</ser:coreEntry>

<ser:endpointConfig>

<tran:provider-id>http</tran:provider-id>

<tran:inbound>true</tran:inbound>

© OPITZ CONSULTING GmbH 2010 Seite 14SOA Testing

<tran:inbound>true</tran:inbound>

<tran:URI>

<env:value>/MyService/myUrl</env:value>

</tran:URI>

</ser:endpointConfig>

<ser:router>

<con:flow>

...

</con:flow>

</ser:router>

</xml-fragment>

� Konfiguration von Business-Services

Abfangen von OSB Serviceaufrufen (1)

<xml-fragment>

<ser:coreEntry isProxy="false" isEnabled="true">

<ser:binding type="abstract XML"/>

</ser:coreEntry>

<ser:endpointConfig>

<tran:provider-id>file</tran:provider-id>

<tran:inbound>false</tran:inbound>

© OPITZ CONSULTING GmbH 2010 Seite 15SOA Testing

<tran:inbound>false</tran:inbound>

<tran:URI>

<env:value>file:///c:/temp/input</env:value>

</tran:URI>

</ser:endpointConfig>

</xml-fragment>

� Konfiguration von Business-Services

Abfangen von OSB Serviceaufrufen (2)

<xml-fragment>

<ser:coreEntry isProxy="false" isEnabled="true">

<ser:binding type="abstract XML"/>

</ser:coreEntry>

<ser:endpointConfig>

<tran:provider-id>http</tran:provider-id>

<tran:inbound>false</tran:inbound>

© OPITZ CONSULTING GmbH 2010 Seite 16SOA Testing

<tran:inbound>false</tran:inbound>

<tran:URI>

<env:value>/MyService/myUrl</env:value>

</tran:URI>

</ser:endpointConfig>

</xml-fragment>

Integrationstests mit dem OSB (2)

1 @Test

2 public void testService1() {

3 mockOsbBizService("Osb2/Abt2Service", new Delegate() {

4 public String serviceCallReceived(

5 String serviceName, String req) throws Exception {

6 recvReq = req;

7 return "<testresp>hallo</testresp>";

8 }

© OPITZ CONSULTING GmbH 2010 Seite 17SOA Testing

8 }

9 });

10 String recvResp = invokeOsbProxyService(

11 “Osb1/Abt1Service1",null,

12 "<testreq>hallo</testrq>");

13 assertEquals("<testreq>hallo</testreq>",recvReq);

14 assertEquals("<testresp>hallo</testresp>",recvResp);

15 }

� Aufruf beliebiger Composite-Services

� Abfangen beliebiger Composite-Serviceaufrufe

Integrationstests für Composites (1)

Composite1 Composite2

© OPITZ CONSULTING GmbH 2010 Seite 18SOA Testing

Test

Composite1

DB Mock

Composite2

BAM MockInvoke

AssertOsb2 Mock

Assert & Reply

Assert & Reply

Assert & Reply

� Konfiguration von Exposed Services

Aufruf beliebiger Composite-Services (1)

<composite name="Project1"

revision="1.0">

<service name="Service2">

<interface.wsdl interface="..."/>

<binding.jca .../>

</service>

© OPITZ CONSULTING GmbH 2010 Seite 19SOA Testing

</service>

<component name="BPEL1">...</component>

<reference name="Service1">

<interface.wsdl interface="..."/>

<binding.jca .../>

</reference>

<wire>...</wire>

...

</composite>

� Konfiguration von Exposed Services

Aufruf beliebiger Composite-Services (2)

<composite name="Project1"

revision="1.0">

<service name="Service2">

<interface.wsdl interface="..."/>

<binding.ws port="..." location="..."/>

</service>

© OPITZ CONSULTING GmbH 2010 Seite 20SOA Testing

</service>

<component name="BPEL1">...</component>

<reference name="Service1">

<interface.wsdl interface="..."/>

<binding.jca .../>

</reference>

<wire>...</wire>

...

</composite>

� Konfiguration von Exposed Services

Abfangen von Composite-Serviceaufrufen (1)

<composite name="Project1"

revision="1.0">

<service name="Service2">

<interface.wsdl interface="..."/>

<binding.ws port="..." location="..."/>

</service>

© OPITZ CONSULTING GmbH 2010 Seite 21SOA Testing

</service>

<component name="BPEL1">...</component>

<reference name="Service1">

<interface.wsdl interface="..."/>

<binding.ws port="..." location="..."/>

</reference>

<wire>...</wire>

...

</composite>

Integrationstests für Composites (2)

1 @Test

2 public void testService1() {

3 mockCompositeReference("Composite1","1.0","MyRef1",

4 new Delegate() {

5 public String serviceCallReceived(

6 String serviceName, String req) throws Exception {

7 recvReq = req;

8 return "<r:resp>hallo</r:resp>";

© OPITZ CONSULTING GmbH 2010 Seite 22SOA Testing

8 return "<r:resp>hallo</r:resp>";

9 }

10 });

11 String recvResp = invokeCompositeService("Composite1",

12 "1.0","Service1“,"<r:req>hallo</r:req>");

13 assertEquals("<r:req>hallo</r:req>"), recvReq);

14 assertEquals("<r:resp>hallo</r:resp>", recvResp);

15 }

� Aufruf beliebiger Services

� Abfangen beliebiger Serviceaufrufe

Integrationstests in der SOA-Suite

OSB1 Composite1 OSB2Composite2

© OPITZ CONSULTING GmbH 2010 Seite 23SOA Testing

Test

OSB1 Composite1 OSB2

DB Mock

Composite2

BAM MockInvoke

AssertAbt2 Mock

Assert & Reply

Assert & Reply

Assert & Reply

Take aways

� Softwaretests sind Pflicht in einer SOA

� Unit-Tests:� XQuery, XSLT: Via API und JUnit� Composites: Test Suite for Composite Applications� OSB:

� Integrationstests:

NEU (OC)

NEU (OC)

© OPITZ CONSULTING GmbH 2010 Seite 24SOA Testing

� Integrationstests:

� Systemtests / End-to-End Tests:� Dritthersteller� NEU (OC)

NEU (OC)

Fragen und Antworten

© OPITZ CONSULTING GmbH 2010 Seite 25SOA Testing

Besuchen Sie auch die anderen Vorträge von OPITZ CONSULTING und den Stand auf Ebene 2

Dienstag, 16.11.2010 Mittwoch, 17.11.2010 Donnerstag, 18.11.2010

10:00 bis 10:45 Uhr, Raum OsloAlles geregelt: Einsatz der Oracle Rules Engines11g im SOA-Umfeld

09:00 bis 09:45 Uhr, Raum KiewVorgehensmodell für die Prozessautomatisierung mit der BPM Suite 11g

10:00 bis 10:45 Uhr, Raum St. PetersburgASMFS & ADVM – Oracle Home im ASM

11:00 bis 11:45 Uhr, Raum Neu DelhiSecurity Hardening SOA Suite 11g

09:00 bis 09:45 Uhr, Raum OsloPlanung und Konfiguration von Oracle VM Clustern für HA

10:00 bis 10:45 Uhr, Raum IstanbulForms 11g und das iPhone

11:00 bis 11:45 Uhr, Raum PragOracle BI Suite EE 11gHat sich das Warten gelohnt?

09:00 bis 09:45 Uhr, Raum IstanbulApEx effektiv: Lösungen für Standardanforderungen mit Köpfchen

12:00 bis 12:45 Uhr, Raum SydneyMigration einer datenbanknahen Anwendung in eine Java RIA

11:00 bis 11:45 Uhr, Raum BudapestSCA & SDO Konzepte und Design

10:00 bis 10:45 Uhr, Raum KiewVolle Übersicht über Metadaten und

13:00 bis 13:45 Uhr, Raum SeoulOracle Advanced Compression

© OPITZ CONSULTING GmbH 2010 Seite 26SOA Testing

SCA & SDO Konzepte und Design Volle Übersicht über Metadaten und Prozessdaten mit Oracle BAM

Oracle Advanced Compression

12:00 bis 12:45 Uhr, Raum OsloBenutzeroberflächen in SOA-Landschaften

13:00 bis 13:45 Uhr, Raum SingapurSpezialitäten zur Oracle Lizenzierung

13:00 bis 13:45 Uhr, Raum RigaStrategien auf dem Weg zum Cloud Computing

12:00 bis 12:45 Uhr, Raum BudapestSOA Antipatterns eine wilde Reise durch die Welt der SOA Projekte

16:00 bis 16:45 Uhr, Raum SingapurModeling the business –Oracle BPA Suite and BPM Suite in Practice

15:00 bis 15:45 Uhr, Raum KiewIntegration und Betriebsüberwachung mit der Oracle SOA Suite 11g

13:00 bis 13:45 Uhr, Raum BudapestFormulare in Papierform ablösen mit der BPM Suite 11g

14:00 – 14:45 Uhr, Raum HelsinkiPlan-Build-Run Oracle BPA Suite und Oracle Grid Control kombiniert

14:00 bis 14:45 Uhr, Raum PragAnalytische Funktionen selbst gemacht

16:00 bis 16:45 Uhr, Raum BudapestProzessautomatisierung am Beispiel: Wie passen BPMN und BPEL zusammen?

Ansprechpartner

Tobias Bosch

Technical Architect

Mail: [email protected]

© OPITZ CONSULTING GmbH 2010 Seite 27SOA Testing

Phone: +49 89 680096-1456

Oracle OSB vs. Mediator

� Mediator: früher Oracle ESB� Virtualisierung zwischen Komponenten eines Composites� Komponente in einem SCA-Deployment

� OSB: früher BEA Aqualogic Service Bus (ALSB)� Kommunikation nach außen und zwischen Applikationen/Composites

© OPITZ CONSULTING GmbH 2010 Seite 28SOA Testing

� Kommunikation nach außen und zwischen Applikationen/Composites� Load-Balancing� Message-Throtteling� Split/Join� Primärer Servicebus

OSB JMX-API

1 SessionManagementMBean sm = …

2 ALSBConfigurationMBean cb = …

3 sm.createSession("MySession1");

4 Ref projRef = Refs.makeProjectRef("proj");

5 Ref inputRef = Refs.makeBusinessSvcRef(projRef,

"MyBizService");

6 cb.clone(inputRef, saveRef);

7 byte[] data = cb.export(inputRefs, false, null);

© OPITZ CONSULTING GmbH 2010 Seite 29SOA Testing

7 byte[] data = cb.export(inputRefs, false, null);

// Change data…

8 cb.uploadJarFile(data);

9 ALSBImportPlan plan = cb.getImportJarInfo()

.getDefaultImportPlan();

10 plan.setPreserveExistingEnvValues(false);

11 cb.importUploaded(plan);

12 sm.activateSession("MySession1", "MyComment");