Your SlideShare is downloading. ×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

SOA Testing - DOAG Special Interest Group SOA 10-2010 - Tobias Bosch

578
views

Published on

http://www.opitz-consulting.com/go/3-5-889 …

http://www.opitz-consulting.com/go/3-5-889

SOA-Anwendungen sind verteilte Systeme und verwenden viele Schnittstellen, um zu kommunizieren: HTTP, JMS, FTP, E-Mail usw. SOA-Tests sind daher im Gegensatz zu klassischen Softwaretests ungleich komplexer. Sie müssen Anfragen an beliebige Stellen des Verbindungsnetzes abschicken und diese an anderen Stellen wieder abfangen können. Dabei definiert der Testfall, an welchen Stellen beides geschehen soll.

Der Vortrag stellt einen neuen Ansatz für SOA-Tests in der Oracle SOA-Suite unter Verwendung des Oracle Service Bus vor.

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
578
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Tobias Bosch,
    Technical ArchitectMitglied SOA Competence Center
    OPITZ CONSULTING GmbH
    Vortrag im Rahmen der DOAG Special Interest Group SOA am 20.10.2010
    SOA Testing
  • 2. Agenda
    Einleitung
    Aktueller Tool-Status
    Neue Möglichkeiten
  • 3. Leistungs-angebot
    Kunden
    • Branchen-übergreifend
    • 8. Über 600 Kunden
    Tätigkeits-felder
    Fakten
    • Gründung 1990
    • 13. 400 Mitarbeiter
    • 14. 8 Standorte in D/PL/CH
    Industrie / Versorger / Telekommunikation 29%
    Handel / Logistik / Dienstleistungen29%
    42%Öffentliche Auftraggeber / Banken & Versicherungen / Vereine & Verbände
  • 15. Was ist SOA?
    Business-IT Alignment
    Flexibilität
  • 16. Warum Testen in einer SOA?
    Softwaretest: Fehler finden
    Test-Stufen
    Unittests
    Integrationstests
    Systemtests
    SOA-Umgebungen
    Verteiltes System: Lokalisierung der Fehlerursache
    Flexibilität: Vermeidung von Nebenwirkungen einer Änderung
    Hohe Qualitätsanforderungen
  • 17. 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);                  
    3 xquery.setNode( new QName("var1"), var1Node);
    4 XMLSequence seq = xquery.executeQuery(); 
    5 seq.next(); 
    6 XMLNoderes = seq.getCurrentItem().getNode();
  • 18. Unittests in der Oracle SOA Suite (2)
    Orchestrierung: BPMN, BPEL, OSB Flows
    Test Suitesfor Composite Applications
    Assert &
    Reply
    Invoke
    Assert
  • 19. End-to-End
    Abt.2
    Abteilung 1
    Systemtests in der SOA-Suite
    OSB1
    Composite1
    OSB2
    Composite2

    Invoke
    Assert
    DB-Adapter
    BAM-Adapter
  • 20. Aufruf beliebiger Services
    Abfangen beliebiger Serviceaufrufe
    Integrationstests in der SOA-Suite (1)
    OSB1
    Composite1
    OSB2
    Composite2
    Assert &
    Reply
    Assert &
    Reply
    Assert &
    Reply
    Test
    Invoke
    DB Mock
    BAM Mock
    Abt2 Mock
    Assert
  • 21. Testfallabhängige Mock-Services
    Inhalt
    Ort
    Integrationstests in der SOA-Suite (2)
    Composite1
    Composite2
    Assert &
    Reply
    Assert &
    Reply
    Assert &
    Reply
    Test
    Invoke
    DB Mock
    BAM Mock
    Osb2 Mock
    Assert
  • 22. Zwischenstand
    Unit-Tests:
    XQuery, XSLT: Via API und JUnit
    Composites: Test Suite for Composite Applications
    OSB:
    Integrationstests:
    Systemtests / End-to-End Tests:
    Dritthersteller
    Fehlt
    Fehlt
  • 23. Aufruf beliebiger OSB Services
    Abfangen beliebiger OSB Serviceaufrufe
    Integrationstests mit dem OSB (1)
    OSB1
    Composite1
    OSB2
    Composite2
    Assert &
    Reply
    Test
    Invoke
    Abt2 Mock
    Assert
    DB-Adapter
    BAM-Adapter
  • 24. Konfiguration von Proxy-Services
    Aufruf beliebiger OSB Services (1)
    <xml-fragment>
    <ser:coreEntryisProxy="true" isEnabled="true">
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>file</tran:provider-id>
    <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>
  • 25. Konfiguration von Proxy-Services
    Aufruf beliebiger OSB Services (2)
    <xml-fragment>
    <ser:coreEntryisProxy="true" isEnabled="true">
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>http</tran:provider-id>
    <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>
  • 26. Konfiguration von Business-Services
    Abfangen von OSB Serviceaufrufen (1)
    <xml-fragment>
    <ser:coreEntryisProxy="false" isEnabled="true">
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>file</tran:provider-id>
    <tran:inbound>false</tran:inbound>
    <tran:URI>
    <env:value>file:///c:/temp/input</env:value>
    </tran:URI>
    </ser:endpointConfig>
    </xml-fragment>
  • 27. Konfiguration von Business-Services
    Abfangen von OSB Serviceaufrufen (2)
    <xml-fragment>
    <ser:coreEntryisProxy="false" isEnabled="true">
    <ser:binding type="abstract XML"/>
    </ser:coreEntry>
    <ser:endpointConfig>
    <tran:provider-id>http</tran:provider-id>
    <tran:inbound>false</tran:inbound>
    <tran:URI>
    <env:value>/MyService/myUrl</env:value>
    </tran:URI>
    </ser:endpointConfig>
    </xml-fragment>
  • 28. 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 }
    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 }
  • 29. Aufruf beliebiger Composite-Services
    Abfangen beliebiger Composite-Serviceaufrufe
    Integrationstests für Composites (1)
    Composite1
    Composite2
    Assert &
    Reply
    Assert &
    Reply
    Assert &
    Reply
    Test
    Invoke
    DB Mock
    BAM Mock
    Osb2 Mock
    Assert
  • 30. Konfiguration von Exposed Services
    Aufruf beliebiger Composite-Services (1)
    <compositename="Project1"
    revision="1.0">
    <servicename="Service2">
    <interface.wsdlinterface="..."/>
    <binding.jca .../>
    </service>
    <componentname="BPEL1">...</component>
    <referencename="Service1">
    <interface.wsdlinterface="..."/>
    <binding.jca .../>
    </reference>
    <wire>...</wire>
    ...
    </composite>
  • 31. Konfiguration von Exposed Services
    Aufruf beliebiger Composite-Services (2)
    <compositename="Project1"
    revision="1.0">
    <servicename="Service2">
    <interface.wsdlinterface="..."/>
    <binding.ws port="..." location="..."/>
    </service>
    <componentname="BPEL1">...</component>
    <referencename="Service1">
    <interface.wsdlinterface="..."/>
    <binding.jca .../>
    </reference>
    <wire>...</wire>
    ...
    </composite>
  • 32. Konfiguration von Exposed Services
    Abfangen von Composite-Serviceaufrufen (1)
    <compositename="Project1"
    revision="1.0">
    <servicename="Service2">
    <interface.wsdlinterface="..."/>
    <binding.ws port="..." location="..."/>
    </service>
    <componentname="BPEL1">...</component>
    <referencename="Service1">
    <interface.wsdlinterface="..."/>
    <binding.ws port="..." location="..."/>
    </reference>
    <wire>...</wire>
    ...
    </composite>
  • 33. Integrationstests für Composites (2)
    1 @Test
    2 public void testService1() {
    mockCompositeReference("Composite1","1.0","MyRef1",
    new Delegate() {
    5 public String serviceCallReceived(
    6 String serviceName, String req) throws Exception {
    7 recvReq = req;
    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 }
  • 34. Aufruf beliebiger Services
    Abfangen beliebiger Serviceaufrufe
    Integrationstests in der SOA-Suite
    OSB1
    Composite1
    OSB2
    Composite2
    Assert &
    Reply
    Assert &
    Reply
    Assert &
    Reply
    Test
    Invoke
    DB Mock
    BAM Mock
    Abt2 Mock
    Assert
  • 35. Take Aways
    Softwaretests sind Pflicht in einer SOA
    Unit-Tests:
    XQuery, XSLT: Via API und JUnit
    Composites: Test Suite for Composite Applications
    OSB:
    Integrationstests:
    Systemtests / End-to-End Tests:
    Dritthersteller
    NEU (OC)
    NEU (OC)
    NEU (OC)
  • 36. Fragen und Antworten
  • 37. BesuchenSieauch die anderenVorträge von OPITZ CONSULTING und den Stand auf Ebene 2
  • 38. Ansprechpartner
    Tobias BoschOPITZ CONSULTING
    Technical ArchitectMitglied SOA Competence Center
    E-Mail: tobias.bosch@opitz-consulting.com
    Phone: +49 89 680096-1456