best practices for testing soa based systems

38
Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien Best Practices for Testing SOA based systems SOA Symposium 2010 Guido Schmutz, Technology Manager / Partner Trivadis AG 5.10.2010, Berlin

Upload: guido-schmutz

Post on 08-Apr-2015

732 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Best Practices for Testing Soa Based Systems

Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien

Best Practices for Testing SOA based systems

SOA Symposium 2010

Guido Schmutz,Technology Manager / Partner Trivadis AG

5.10.2010, Berlin

Page 2: Best Practices for Testing Soa Based Systems

© 2010Best Practices for Testing SOA based systems

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: [email protected] Blog: http://guidoschmutz.wordpress.com/

Page 3: Best Practices for Testing Soa Based Systems

© 2010

About Trivadis

3

Swiss IT consulting company

13 locations in Switzerland, Germany and Austria

~ 540 employees

Key figures 2009

Services for more than 650 clients in over 1‘600 projects

Over 150 service level agreements

More than 5‘000 training participants

Research and development budget:

CHF 6.0 Mio. / EUR 3.6 Mio.

Page 4: Best Practices for Testing Soa Based Systems

© 2010

Agenda

Data are always part of the game.

Introduction

Scenario with Oracle SOA Suite 11g as an example

Unit Testing of Oracle SOA Suite 11g components

Integration Testing of Oracle SOA Suite 11g composites

Summary

Best Practices for Testing SOA based systems

Page 5: Best Practices for Testing Soa Based Systems

© 2010

Testing of SOA based 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

Best Practices for Testing SOA based systems

Page 6: Best Practices for Testing Soa Based Systems

© 2010

Testing of SOA based solutions

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, it’s not enough to just test the existing functionality A SOA adds some additional logic which needs to be tested as well!

Router Filter Enrichment Service Orchestration Business Process Logic Rules …

Best Practices for Testing SOA based systems

Page 7: Best Practices for Testing Soa Based Systems

© 2010

Challenges for testing SOA based 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 based systems

Page 8: Best Practices for Testing Soa Based Systems

© 2010

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 based systems

Page 9: Best Practices for Testing Soa Based Systems

© 2010

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 based systems

Page 10: Best Practices for Testing Soa Based Systems

© 2010

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

Unit / Component Testing

Best Practices for Testing SOA based systems

Page 11: Best Practices for Testing Soa Based Systems

© 2010

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

Integration Testing

Best Practices for Testing SOA based systems

t

Page 12: Best Practices for Testing Soa Based Systems

© 2010

Agenda

Data are always part of the game.

Introduction

Scenario with Oracle SOA Suite 11g as an example

Unit Testing of Oracle SOA Suite 11g components

Integration Testing of Oracle SOA Suite 11g composites

Summary

Best Practices for Testing SOA based systems

Page 13: Best Practices for Testing Soa Based Systems

© 2010

Sample scenario

Request

Generate ID

Read customer info

Validate credit card

Internal

External

Best Practices for Testing SOA based systems

Page 14: Best Practices for Testing Soa Based Systems

© 2010

Oracle SOA Suite 11gR1 PS2 Architecture

14

Oracle Restricted and Confidential

Unified Runtime

BPMNBPMN

Policy ManagerOptimized

binding

Human Workflow

(+AMX, AG, Orgn)

Human Workflow

(+AMX, AG, Orgn)

Business Rules

Business Rules

Oracle Service Bus

Common JCA-based connectivity infrastructure

RepositoryRepository

EM console+BPMN Screens

BAM

B2B

MediatorMediator

Workspace Process Portal(WC spaces)

MS Office

Create and Submit Order

ProcessPayment

NotifyUser

DownloadVideo

Wait3 days

Call Customer

Customer

Customer

Sales Rep

Copy toS3

Create and Submit Order

ProcessPayment

NotifyUser

DownloadVideo

Wait3 days

Call Customer

Customer

Customer

Sales Rep

Copy toS3

BPM Studio(with Business and IT views)

Shared BPMN Model

Business View

BPA

BPMN 2.0, BPEL

Rich End User InteractionWeb based customization

Process Composer

BPELBPEL

ProcessAnalytics

Proc Cubes

Page 15: Best Practices for Testing Soa Based Systems

© 2010

Implementation with Oracle 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 based systems

Page 16: Best Practices for Testing Soa Based Systems

© 2010

Artifacts to be tested

BPEL/BPMN flow logic Decisions, Orchestrations, Timeouts, Asynchronous Interactions

Mediator logic

OSB flow logic

XQuery / XSL Transformations

Business Rules

Best Practices for Testing SOA based systems

Page 17: Best Practices for Testing Soa Based Systems

© 2010

Is this way of testinggood enough?

Best Practices for Testing SOA based systems

Oracle Service Bus Console

Oracle Enterprise Manager

Page 18: Best Practices for Testing Soa Based Systems

© 2010

Agenda

Data are always part of the game.

Introduction

Scenario with Oracle SOA Suite 11g as an example

Unit Testing of Oracle SOA Suite 11g components

Integration Testing of Oracle SOA Suite 11g composites

Summary

Best Practices for Testing SOA based systems

Page 19: Best Practices for Testing Soa Based Systems

© 2010

Unit testing of a Oracle SOA Suite 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 (Generator)

Defines the services and operations, which will be called with test data Emulation (Mock)

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

Assertion (Verifier) Compares the message or part of the message against expected data

Best Practices for Testing SOA based systems

Page 20: Best Practices for Testing Soa Based Systems

© 2010

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) againstan expected message

Best Practices for Testing SOA based systems

Page 21: Best Practices for Testing Soa Based Systems

© 2010

Initial message, will be sent to the BPELcomponent (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 based systems

Page 22: Best Practices for Testing Soa Based Systems

© 2010

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 based systems

Page 23: Best Practices for Testing Soa Based Systems

© 2010

Different Unit Testing Patterns

With Mediator logic

Without Mediator logic

Best Practices for Testing SOA based systems

With Customer Service

Mediator only

Page 24: Best Practices for Testing Soa Based Systems

© 2010

Unit Testing Oracle Service Bus (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

Best Practices for Testing SOA based systems

AmexcoVisa

Mock

Generate

Mock

Page 25: Best Practices for Testing Soa Based Systems

© 2010

But how do I get these Mock Services?

The Unit Testing Framework of Oracle 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? Maybe using scripting language like Groovy or Ruby?

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 based systems

Page 26: Best Practices for Testing Soa Based Systems

© 2010

soapUI

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)

http://www.soapui.org/

Best Practices for Testing SOA based systems

Page 27: Best Practices for Testing Soa Based Systems

© 2010

Mock Service for the Visa Service

Best Practices for Testing SOA based systems

Mock

Page 28: Best Practices for Testing Soa Based Systems

© 2010

Fault Response and dynamic values with soapUI

Best Practices for Testing SOA based systems

Page 29: Best Practices for Testing Soa Based Systems

© 2010

Executing WebService with soapUI

Best Practices for Testing SOA based systems

Request Response

Page 30: Best Practices for Testing Soa Based Systems

© 2010

Unit Testing Transformations

Best Practices for Testing SOA based systems

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

Page 31: Best Practices for Testing Soa Based Systems

© 2010

Unit Testing Transformations - Idea

The transformation logic is often implemented in either XQuery or XSLT

How can this transformation be tested ?

Idea: Implement a special service on the ESB just for testing the

XQuery/XSLT artifacts In order to make sure to use the same XQuery/XSLT engine

Use XMLUnit to compare expected and actual result

Best Practices for Testing SOA based systems

Page 32: Best Practices for Testing Soa Based Systems

© 2010

Agenda

Data are always part of the game.

Introduction

Scenario with Oracle SOA Suite 11g as an example

Unit Testing of Oracle SOA Suite 11g components

Integration Testing of Oracle SOA Suite 11g composites

Summary

Best Practices for Testing SOA based systems

Page 33: Best Practices for Testing Soa Based Systems

© 2010

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 based systems

Page 34: Best Practices for Testing Soa Based Systems

© 2010

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 a (external) service to produce an error at the right time?

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

BPEL

G V

Mediator / ESB

M

Best Practices for Testing SOA based systems

Page 35: Best Practices for Testing Soa Based Systems

© 2010

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 based systems

Page 36: Best Practices for Testing Soa Based Systems

© 2010

Agenda

Data are always part of the game.

Introduction

Scenario with Oracle SOA Suite 11g as an example

Unit Testing of Oracle SOA Suite 11g components

Integration Testing of Oracle SOA Suite 11g composites

Summary

Best Practices for Testing SOA based systems

Page 37: Best Practices for Testing Soa Based Systems

© 2010

Summary

Best Practices for testing conventional applications are valid for SOA based solutions as well

Unit Testing of SCA components is well supported via the Oracle 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 based systems

Page 38: Best Practices for Testing Soa Based Systems

Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien

Thank you!

SOA Symposium 2010

Guido Schmutz,Technology Manager / Partner Trivadis AG

5.10.2010, Berlin

My other session @ SOA symposium:Tuesday 15:30Using Domain Specific Language(s) to Simplify Creating SOA Artifacts

Contact: [email protected]: http://guidoschmutz.wordpress.com/