Vous êtes sur la page 1sur 36

Best Practices for Testing SOA Suite 11g based systems

ODTUG 2010

Guido Schmutz, Technology Manager / Partner Trivadis AG 29.06.2010, Washington

Basel

Baden

Bern

Lausanne

Zrich

Dsseldorf

Frankfurt/M.

Freiburg i. Br.

Hamburg

Mnchen

Stuttgart

Wien

Introduction
Guido Schmutz
Working for Trivadis for more than 13 years
leading and independent IT service company operating in Germany, Austria and Switzerland

Oracle ACE Director for Fusion Middleware and SOA Co-Author of different books Consultant, Trainer Software Architect for Java, Oracle, SOA and EDA More than 20 years of software development experience

Contact: guido.schmutz@trivadis.com Blog: http://guidoschmutz.wordpress.com/

Best Practices for Testing SOA Suite 11g based systems

2009

About Trivadis
Swiss IT consulting company
13 locations in Switzerland, Germany and Austria ~ 540 employees

Key figures 2008


Services for more than 650 clients in over 1600 projects Over 150 service level agreements More than 5000 training participants Research and development budget: CHF 6.0 Mio. / EUR 3.6 Mio.

2009

Agenda
Introduction Scenario with SOA Suite 11g as an example Unit Testing of SOA Suite 11g components
Data are always part of the game.

Integration Testing of SOA Suite 11g composites


Summary

Best Practices for Testing SOA Suite 11g based systems

2009

Testing of SOA solutions


For testing N-tier solutions some common best practices have been established
Unit and Integration Tests Test Driven Development / Test-First Approach Mock Objects

A lot of these approaches can be used/adapted for testing SOA solutions as well Testing a SOA solution is as/even more important
Often enterprise wide systems (backbone of an enterprise) Many different users Each single error can have a huge impact

Even if SOA uses a lot of existing functionality, its not enough to just test the existing functionality
A SOA adds some additional logic which needs to be tested as well!
Router, Filter, Enrichment, Orchestration, Business Process Logic, Rules,
Best Practices for Testing SOA Suite 11g based systems
2009

Challenges for testing SOA solutions


SOA environments are inherently heterogeneous SOA solutions typically integrate a set of packaged or custom applications not always possible to provide a dedicated testing environment for all the systems involved SOA often works asynchronously
Tests are usually carried out in a synchronous way,

Business processes often depend on timed events unit of test usually larger than in traditional applications
Best Practices for Testing SOA Suite 11g based systems
2009

Automatic Testing
Relies on automatic, programmatic execution of the different test scenarios results can be verified against expected results Efficient development and execution of test cases only achievable through Testing Frameworks
i.E. JUnit for Java

A Testing Framework provides some common, reusable components for


Creating a test Executing a test Verifying test results

Best Practices for Testing SOA Suite 11g based systems

2009

Functionalities of a Testing Framework

Generator
Produces the test data Executes the components under test

Verifier/Asserter
Compares the actual test results with the expected results a Verifier/Asserter makes an accurate, binary decision whether a test was successful or not

Mock/Stub
Testing component which simulates part of the system to be tested
Best Practices for Testing SOA Suite 11g based systems
2009

Unit / Component Testing


Focuses on one specific component of the system Outside dependencies should be isolated as much as possible to ensure testing of the component in isolation
Easier to achieve with low-level component

Integration issues between components may not be discovered


But later integration tests can rely on well-written and (unit)tested components

Best Practices for Testing SOA Suite 11g based systems

2009

Integration Testing
Focuses on the interaction between multiple components Focuses on the lower layers first
Because they have the least external dependencies

If the test fails in a component of an upper layer, its less likely that the reason is a faulty lower layer component
These have already been tested

Also referred to as Bottom-Up Testing

t
Best Practices for Testing SOA Suite 11g based systems
2009

Agenda
Introduction Scenario with SOA Suite 11g as an example Unit Testing of SOA Suite 11g components
Data are always part of the game.

Integration Testing of SOA Suite 11g composites


Summary

Best Practices for Testing SOA Suite 11g based systems

2009

SOA Suite 11gR1 PS2 Architecture


Shared BPMN Model

BPMN 2.0, BPEL

BPA

Rich End User Interaction

Web based customization

Business View

Workspace

Process Portal (WC spaces)

MS Office

BPM Studio (with Business and IT views) BPEL BPMN

Process Composer
Human Workflow (+AMX, AG, Orgn)

Business Rules

Mediator

B2B

Unified Runtime
Process Analytics Common JCA-based connectivity infrastructure
Optimized binding

Policy Manager

BAM
Proc Cubes

Oracle Service Bus


EM console +BPMN Screens

Repository
12
2009

Sample scenario

Internal Request Generate ID Read customer info Validate credit card

External

Best Practices for Testing SOA Suite 11g based systems

2009

Implementation with SOA Suite 11g


SCA composite with the Business Process and a Mediator for customer integration Credit card validation implemented as a service on the Oracle Service Bus service
Routes to the right credit card institute to be called

Best Practices for Testing SOA Suite 11g based systems

2009

Artifacts to be tested
BPEL/BPMN flow logic
Decisions, Orchestrations

Mediator logic OSB flow logic XQuery / XSL Transformations Business Rules

Best Practices for Testing SOA Suite 11g based systems

2009

Is this good enough?

Enterprise Manager (EM)

OSB Console

Best Practices for Testing SOA Suite 11g based systems

2009

Agenda
Introduction Scenario with SOA Suite 11g as an example Unit Testing of SOA Suite 11g components
Data are always part of the game.

Integration Testing of SOA Suite 11g composites


Summary

Best Practices for Testing SOA Suite 11g based systems

2009

Unit testing of a SOA Suite 11g SCA component


Oracle SOA Suite 11g provides a testing framework with the following features
Definition of tests, assertions and emulations via JDeveloper Starting Tests from the EM console or via the command line using ANT Test Reports via EM console or via JUnit report

A test case contains


Initiation
Defines the services and operations, which will be called with test data

Emulation
Defined the message or error, which will be returned from a reference or a component

Assertion
Compares the message or part of the message against expected data
Best Practices for Testing SOA Suite 11g based systems
2009

Unit testing of an 11g SCA component


CustomerMediator called, but database access (via DB-Adapter) only simulated Answer of CreditCardService simulated Allocation of the request ID simulated
Fixed and deterministic values are always returned Important to be able to test the answer with an Asserter (Verifier) against an expected message

Best Practices for Testing SOA Suite 11g based systems

2009

Initial message, will be sent to the BPEL component (Generator)

Emulated answer from customer service, without calling the real service (Mock)

Answer will be tested against the expected message (Verifier)


Best Practices for Testing SOA Suite 11g based systems
2009

Executing test cases


Test cases will be deployed with the normal deployment of an SCA composite Unit tests can be executed via Enterprise Manager (EM) console

Best Practices for Testing SOA Suite 11g based systems

2009

Different Unit Testing Patterns


With Mediator logic With Customer Service

Without Mediator logic

Mediator only

Best Practices for Testing SOA Suite 11g based systems

2009

Unit testing on an OSB service


In order to be able to test the OSB service isolated (as a unit) there must be a way to simulate the two service references
Mocks for Visa and Amexco

This way the Routing and Transformation logic can be tested

Generate
Mock

Visa
Mock

Amexco
2009

Best Practices for Testing SOA Suite 11g based systems

But how do I get these Mock Services?


The Unit Testing Framework of SOA Suite 11g is not available for Oracle Service Bus services Should we start implementing the Mock Services as own web services with the language of our choice?

One advantage of SOA is the standardized definition of the interfaces through WSDL and XSD
There are more and more utilities/tools available, simplifying some of the tasks with a SOA solution
Functional testing Load testing

Best Practices for Testing SOA Suite 11g based systems

2009

soapUI
http://www.soapui.org/

Tool for Web Service Testing Available in a free version Supports the Testing of SOAP as well as REST Web Services Covers the following functionalities:
Inspection and call of web services Functional testing of web services Load testing of web services Creation of Web Service Dummies (Mock Services)

Best Practices for Testing SOA Suite 11g based systems

2009

Mock Service for the Visa Service


Mock

Best Practices for Testing SOA Suite 11g based systems

2009

Fault Response and dynamic values with soapUI

Best Practices for Testing SOA Suite 11g based systems

2009

Executing WebService with soapUI

Request

Response

Best Practices for Testing SOA Suite 11g based systems

2009

Unit Testing Transformations


Automated Unit testing of Transformations is not supported!
developers tests are possible automated with XMLUnit ?

Best Practices for Testing SOA Suite 11g based systems

2009

Agenda
Introduction Scenario with SOA Suite 11g as an example Unit Testing of SOA Suite 11g components
Data are always part of the game.

Integration Testing of SOA Suite 11g composites


Summary

Best Practices for Testing SOA Suite 11g based systems

2009

Integration Testing of SOA solutions


All the single components are deployed and wired together in a dedicated testing environment
Can be automated using Ant / WLST connected with the corresponding test versions of the external services

What should we do, if there is no test version available of a given (external) service? What should we do, if the service is not yet available?

Best Practices for Testing SOA Suite 11g based systems

2009

Integration Testing of SOA solutions


How can the behavior of an external service be influenced?
So that different outcomes can be tested to test the behavior of a SOA solution in an error case, the error situation has to occur How to force an (external) service to produce an error at the right moment?

The solution is again a Mock Service, which takes over the place of the external services
G V

BPEL

Mediator / ESB

Best Practices for Testing SOA Suite 11g based systems

2009

Integration Testing with soapUI


Tests can be combined into a Test Suite and run all together Tests can assert, that the right outcome of a service call

Best Practices for Testing SOA Suite 11g based systems

2009

Agenda
Introduction Scenario with SOA Suite 11g as an example Unit Testing of SOA Suite 11g components
Data are always part of the game.

Integration Testing of SOA Suite 11g composites


Summary

Best Practices for Testing SOA Suite 11g based systems

2009

Summary
Best Practices for testing conventional applications are valid for SOA solutions as well Unit Testing of SCA components is well supported via the SOA Suite 11g testing framework
Not complete yet, but already quite usable Would be nice to be able to zoom into BPEL and BPMN with unit testing (was there in 10g)

Integration Testing can be implemented with soapUI


calling SOA Suite services Creating a Mock Service for an external service soapUI is much more powerful than shown here

All the Tests shown can be automated


Best Practices for Testing SOA Suite 11g based systems
2009

Thank you!

ODTUG 2010 Guido Schmutz, Technology Manager / Partner Trivadis AG 29.6.2010, Washington

Basel

Baden

Bern

Lausanne

Zrich

Dsseldorf

Frankfurt/M.

Freiburg i. Br.

Hamburg

Mnchen

Stuttgart

Wien

Vous aimerez peut-être aussi