soa testing - doag deutsche oracle … · soa testing soa testing © opitz consulting gmbh 2010...
TRANSCRIPT
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
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)
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");