View
730
Download
3
Category
Preview:
Citation preview
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
© 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: guido.schmutz@trivadis.com Blog: http://guidoschmutz.wordpress.com/
© 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.
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 2010
Sample scenario
Request
Generate ID
Read customer info
Validate credit card
Internal
External
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
© 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
© 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
© 2010
Is this way of testinggood enough?
Best Practices for Testing SOA based systems
Oracle Service Bus Console
Oracle Enterprise Manager
© 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
© 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
© 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
© 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
© 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
© 2010
Different Unit Testing Patterns
With Mediator logic
Without Mediator logic
Best Practices for Testing SOA based systems
With Customer Service
Mediator only
© 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
© 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
© 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
© 2010
Mock Service for the Visa Service
Best Practices for Testing SOA based systems
Mock
© 2010
Fault Response and dynamic values with soapUI
Best Practices for Testing SOA based systems
© 2010
Executing WebService with soapUI
Best Practices for Testing SOA based systems
Request Response
© 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 ?
© 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
© 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
© 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
© 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
© 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
© 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
© 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
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: guido.schmutz@trivadis.comBlog: http://guidoschmutz.wordpress.com/
Recommended