TTCN4SOA : a TTCN-3 architecture and framework for SOA testing



Similar documents
Automatic Test Data Generation for TTCN-3 using CTE

Web Application Development for the SOA Age Thinking in XML

Decomposition into Parts. Software Engineering, Lecture 4. Data and Function Cohesion. Allocation of Functions and Data. Component Interfaces

Cloud Computing and SOA from Enterprise Perspective. Yan Zhao, PhD ArchiTech Consulting LLC Oct.

Enterprise SOA Strategy, Planning and Operations with Agile Techniques, Virtualization and Cloud Computing

Introduction to TTCN-3

Model Driven and Service Oriented Enterprise Integration---The Method, Framework and Platform

CHAPTER 8 CLOUD COMPUTING

Service-Oriented Architectures

Performance testing with TTCN-3

Developing ASP.NET MVC 4 Web Applications MOC 20486

ActiveVOS Server Architecture. March 2009

JVA-561. Developing SOAP Web Services in Java

Java Web Services Training

David Pilling Director of Applications and Development

Cloud computing in the Enterprise: An Overview

SERENITY Pattern-based Software Development Life-Cycle

Architecture. Reda Bendraou

SOA CERTIFIED CONSULTANT

Java EE 7: Back-End Server Application Development

DEPLOYMENT ARCHITECTURE FOR JAVA ENVIRONMENTS

The new Internet Protocol securityipsec testing with TTCN-3

Business Process Execution Language for Web Services

Developing ASP.NET MVC 4 Web Applications

OUR COURSES 19 November All prices are per person in Swedish Krona. Solid Beans AB Kungsgatan Göteborg Sweden

EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications

The GO4IT IPv6 Test Tool and Associated services. Alain Vouffo FOKUS (Fraunhofer Institute for Open Communication Systems)

Service Oriented Architecture (SOA) Architecture, Governance, Standards and Technologies

How To Set Up Wiremock In Anhtml.Com On A Testnet On A Linux Server On A Microsoft Powerbook 2.5 (Powerbook) On A Powerbook 1.5 On A Macbook 2 (Powerbooks)

Getting started with API testing

This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.

Applying 4+1 View Architecture with UML 2. White Paper

SOA and Cloud in practice - An Example Case Study

DEPLOYMENT ARCHITECTURE FOR MICROSOFT.NET ENVIRONMENTS

Parasoft and Skytap Deliver 24/7 Access to Complete Test Environments

D83167 Oracle Data Integrator 12c: Integration and Administration

Lesson 4 Web Service Interface Definition (Part I)

Urbancode Deploy Overview

Developing SOA solutions using IBM SOA Foundation

Simplifying Processes Interoperability with a Service Oriented Architecture

My First TTCN-3 Project with TTworkbench

Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led

Adobe Systems Incorporated

An Oracle White Paper October Maximize the Benefits of Oracle SOA Suite 11g with Oracle Service Bus

Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA

Service Oriented Architecture 1 COMPILED BY BJ

Automated Target Testing with TTCN-3: Experiences from WiMAX Call Processing Features

Business-Driven Software Engineering Lecture 3 Foundations of Processes

SOA and BPO SOA orchestration with flow. Jason Huggins Subject Matter Expert - Uniface

Security Testing For RESTful Applications

WHITE PAPER DATA GOVERNANCE ENTERPRISE MODEL MANAGEMENT

Service Oriented Architecture (SOA) Architecture, Governance, Standards and Technologies

Source Code Translation

The Enterprise Service Bus: Making Service-Oriented Architecture Real

Service Oriented Architecture

Creating new university management software by methodologies of Service Oriented Architecture (SOA)

WHITE PAPER. Written by: Michael Azoff. Published Mar, 2015, Ovum

Online Network Traffic Security Inspection Using MMT Tool

Principles and Foundations of Web Services: An Holistic View (Technologies, Business Drivers, Models, Architectures and Standards)

Combining SAWSDL, OWL DL and UDDI for Semantically Enhanced Web Service Discovery

Model-based Testing of Automotive Systems

Aerospace Software Engineering

ITS. Java WebService. ITS Data-Solutions Pvt Ltd BENEFITS OF ATTENDANCE:

Quality Management. Lecture 12 Software quality management

Business Process Management Enabled by SOA

What is a life cycle model?

Early Recognition of Encrypted Applications

Distributed Load Tests with TTCN-3

Lesson 18 Web Services and. Service Oriented Architectures

Objectif. Participant. Prérequis. Pédagogie. Oracle SOA Suite 11g - Build Composite Applications. 5 Jours [35 Heures]

Cloud Computing & Service Oriented Architecture An Overview

White Paper Delivering Web Services Security: The Entrust Secure Transaction Platform

E-Business Suite Oracle SOA Suite Integration Options

Developing Microsoft SharePoint Server 2013 Core Solutions

Testing Tools using Visual Studio. Randy Pagels Sr. Developer Technology Specialist Microsoft Corporation

Enterprise Application Enablement for the Internet of Things

Figure 1: Illustration of service management conceptual framework

Oracle Service Bus. Situation. Oracle Service Bus Primer. Product History and Evolution. Positioning. Usage Scenario

Service Oriented Architectures Using DoDAF1

Transcription:

October 24, 2013 TTCN4SOA : a TTCN-3 architecture and framework for SOA testing Fabio De Rosa², Ariele P. Maesano¹, Libero Maesano² Ariele.Maesano@lip6.fr, {fabio.de-rosa, libero.maesano@simple-eng.com ¹ Laboratoire d Informatique de Paris 6 (UPMC), Paris, France ² SIMPLE ENGINEERING, 31-35, rue St. Ambroise, 75011 Paris, France

Table of contents 1. SOA Conceptual Framework 2. SOA Functional Testing 3. TTCN4SOA Testing Architecture 4. TTCN4SOA framework in TTCN-3 language 5. Conclusion 24/10/2013-2

What is SOA In the digital economy* tens, hundreds, thousands, applications, systems, devices will be connected and will collaborate without human intermediation, putting in place the automation of business processes that support economic, administrative and social activities Service Oriented Architecture (SOA) is the design and implementation style that allows organizations to put in practice dynamic collaborations of loosely coupled systems, in order to achieve flexible, dependable and secure business process automation in the digital economy * W. Brian Arthur, "The second economy." McKinsey Quarterly, October 2011 24/10/2013-3

SOA conceptual framework The collaboration among systems is carried out through the exchange (offering and invoking) of services - a provider doing something for / on behalf of a consumer - described/regulated by contracts Service contracts are: models of the service functions, interfaces and external behaviours (including security and quality of service aspects) of the service provider and consumer informal vs. formal partial vs. complete Examples: The API economy - services offered through API on the Internet - are described by formal (executable) interface models (WSDL, WADL, REST/JSON, ) + informal function and behaviour models (documentation) A services architecture is a network of participant systems, playing roles defined by service contracts, that collaborate in order to achieve business goals 24/10/2013-4

What is SOA testing Whatever its completeness and formality level, a service contract is a black-box model it does not include any information about internals - of the systems that claim to implement it SOA functional (in the large) testing: stimulating and observing the behaviours of the participants at their interfaces in order to assess their compliance with the involved service contracts SOA vulnerability testing: testing the participants resilience when submitted to malicious attacks (outside the scope of this presentation) SOA functional testing of a services architecture is black-box testing of participants and, when some interactions among them are observable, grey-box testing of the overall architecture SOA information hiding: participant white-box models and internals (codes) are hidden each other Techniques such as formal verification, model checking and white-box testing are not applicable to services architectures only by system owners to theirs own systems 24/10/2013-5

Why SOA testing is important How stakeholders confidence on the services architecture participants compliance with the service contracts can be increased and strengthened? By SOA (functional) testing SOA (functional) testing is by definition model-based testing it is testing implementations (participants) against models (contracts): more complete the contract (model) is more large the testing extent (all aspects of the contract e.g. security, quality of service - can be tested) more formal the model (contract) is more automatable the test generation and run are 24/10/2013-6

Why SOA testing is hard lack of observability lack of trust in the employed engineering methods lack of direct control of the service implementation lifecycles dynamic (run time) binding of systems with service roles uncertainty of the test verdicts (false positives and negatives) organizational complexity of multi-owner services architectures elastic demand of computational resources increasing scale factor of the services architectures high labor costs high equipment costs questionable efficacy of human-based testing activity SOA testing (generation and run) automation is a must 24/10/2013-7

BN4SAT Project* The on-going research on SOA testing spans three main areas: the automated generation of test cases (accuracy, robustness, safety, faulttolerance ) from models (contract models, SUT ) for service unit and composition testing the automation of the test execution and arbitration environments advanced (inference-based) methods and tools for static (priority-based) and dynamic (based on the verdicts of previously executed test cases) scheduling Bayesian Networks for Services Architecture Testing (BN4SAT) project is centred on the application of a Bayesian network (BN) inference approach and technology for the scheduling of test suites It appears to be adequate for failure seeking and troubleshooting (identification of faulty participants) in services architecture that are only partially observable TTCN4SOA is the TTCN-3 execution framework of the BN4SAT architecture (*) The project is conducted in cooperation between the Laboratoire d'informatique de Paris VI (LIP6 - Université Pierre et Marie Curie - Paris VI - France), the Centre National de la Recherche Scientifique (CNRS - France) and Simple Engineering, a European group specialized in the design of services architectures. The project is partially funded by the Association Nationale de la Recherche et de la Technologie (ANRT - France) 24/10/2013-8

TTCN4SOA : Testing Architecture Executor, a TTCN-3 execution environment with specialized test components: SUT proxies, that are charged to convey interactions to and from the SUTs through the TRI interface, Emulators - that emulate the behaviour of some elements of the SAUT, either by sending stimuli to a SUT (stimulator) or by emulating a SUT response, in order to run a test (stub) Interceptors - that sit, transparently, between two connected SUT, and observe the interaction and perform different tasks Arbiter collects local test verdicts generated by the Test Components and produces final test verdict standard value (pass, fail, error, inconc).. Scheduler drives the execution of test runs (it starts and stops a test run). Engine, which is notified by the Arbiter with test verdicts, and manages the Scheduler by handling the test strategy on the basis of probabilistic inference on the acquired test verdicts Compliant with OMG UML Testing Profile http://www.omg.org/spec/utp/1.2/ 24/10/2013-9

deployment BankNet DeploymentTokens_1 Automated test execution & evaluation environment «SUT» usbg :BankGateNode usbg4usatminterceptor : BankGate4ATM usbg4usaminterceptor : BankGate4AccountMngt usatminterceptor4usbg: ATM4BankGate usaminterceptor4usbg: AccountMngt4BankGate «executionenvironment» :TTWorkbench «SUT» usatm :ATM_Node usbginterceptor4usatm: BankGate4ATM usatm4usbginterceptor :ATM4BankGate «TestComponent» usbginterceptor : BankGateInterceptorNode «TestComponent» usaminterceptor : AccountMngtInterceptorNode usam4usbginterceptor : AccountMngt4BankGate usbginterceptor4usam: BankGate4AccountMngt «SUT» usam :AccountMngtNode usatm4ushwcinterceptor : ATM4HW_Control ushwcstimulator: HW_Control4ATM «TestComponent» usatmstimulator : ATM_StimulatorNode arbiter :Arbiter scheduler :Scheduler a4e : Arbiter4Engine s4e : Scheduler4Engine e4a : Engine4Arbiter e4s : Engine4Scheduler :Engine TTworkbench as test execution environment 24/10/2013-10

Stimulator Stimulator test component for AccountMngt service* deployment BankNet Partial usatminterceptor4usbg: ATM4BankGate usaminterceptor4usbg: AccountMngt4BankGate «executionenvironment» :TTWorkbench usbginterceptor4usatm: BankGate4ATM «TestComponent» usamstimulator usam4usbginterceptor : AccountMngt4BankGate usbginterceptor4usam: BankGate4AccountMngt «SUT» usam :AccountMngtNode ushwcstimulator: HW_Control4ATM arbiter :Arbiter a4e : Arbiter4Engine s4e : Scheduler4Engine * This example has been taken from the OMG UML Testing Profile v1.2 and adapted to SOA scenarios 24/10/2013-11

SUT Proxy SUT Proxy: Automatic Generation from AccountMngt WSDL file Specific platform Adapter and Codec library are automatically generated 24/10/2013-12

Stimulator test logic TTCN-3 source code snapshot for test logic of the AccountMngtStimulator component module AccountMngtStimulator {... template MoneyType money := {famount := 1000, fcurrency := "Euro" template DebitMsgType debit_1 := {account := "123456", amount := money template DebitRespMsgType debit_1_resp := {response := true testcase tcdebit() runs on ptctype system AccountBankSOAP11HTTPPort_COMPONENT { map(mtc:accountbanksoap11httpport_port, system:accountbanksoap11httpport_port); AccountBankSOAP11HTTPPort_PORT.call(debit_op:{debit_1, localtimervalue) { [] AccountBankSOAP11HTTPPort_PORT.getreply(debit_op: {- value debit_1_resp) { setverdict(pass); [] AccountBankSOAP11HTTPPort_PORT.getreply(debit_op:{- value?) { setverdict(fail, "Response mismatch"); [] AccountBankSOAP11HTTPPort_PORT.catch(debit_op, SystemException:?) { setverdict(fail, "Communication exception"); [] AccountBankSOAP11HTTPPort_PORT.catch(timeout) { setverdict(fail, "Timeout occurred."); ; 24/10/2013-13

Emulator Emulator test component for AccountMngt service deployment BankNetPartial 2 «SUT» usbg :BankGateNode usbg4usatminterceptor : BankGate4ATM usbg4usaminterceptor : BankGate4AccountMngt usatminterceptor4usbg: ATM4BankGate usaminterceptor4usbg: AccountMngt4BankGate «executionenvironment» :TTWorkbench «SUT» usatm :ATM_Node usbginterceptor4usatm: BankGate4ATM usatm4usbginterceptor :ATM4BankGate «TestComponent» usbginterceptor : BankGateInterceptor «TestComponent» usamemulator : AccountMngtEmulator usbginterceptor4usam: BankGate4AccountMngt usatm4ushwcinterceptor : ATM4HW_Control ushwcstimulator: HW_Control4ATM «TestComponent» usatmstimulator : ATM_Stimulator a4e : Arbiter4Engine s4e : Scheduler4Engine 24/10/2013-15

Emulator Test Logic module AMEmulator { import from AccountMngt4BankGatePortTypeServices language "WSDL" all with { extension "File:AccountMngtInterface.wsdl" import from WSDLAUX all; modulepar float SERVER_T_RESPONSE := 120.0 with extension "Waiting time of the server"; import from AMTemplate all; type component ptctype extends AccountBankSOAP11HTTPPort_COMPONENT { timer servertimer := SERVER_T_RESPONSE; TTCN-3 source code for test logic of emulator component: alternative step function altstep serverdebitcall01handle() runs on ptctype { [] AccountBankSOAP11HTTPPort_PORT.getcall(debit_op:{debitRMsg101){ AccountBankSOAP11HTTPPort_PORT.reply(debit_op:{debitMsg101 value debitrespmsg102); repeat; [] AccountBankSOAP11HTTPPort_PORT.getcall(debit_op:{debitGMsg101){ setverdict(fail); AccountBankSOAP11HTTPPort_PORT.reply(debit_op:{- value debitrespmsg102); repeat; function fserverresponsedebitcall01() runs on ptctype { activate(serverdebitcall01handle()); servertimer.start(server_t_response); alt { [] servertimer.timeout { setverdict(pass); self.stop; testcase tcdebit01test() runs on ptctype system ptctype { var ptctype server := ptctype.create("wsdl Service"); map(server:accountbanksoap11httpport_port, system:accountbanksoap11httpport_port); ; server.start(fserverresponsedebitcall01()); alt{ [] all component.done{ unmap(server:accountbanksoap11httpport_port); 24/10/2013-16

Interceptor A TTCN-3 Interceptor component is structured as follows: A ServiceInterceptor module, which is the main module containing test cases For each operation provided by the service and for each test case defined within the module, a special function is declared: this function controls all test case logic execution by activating specific test case handlers A ServiceOperationHandler module for each operation provided by the service. This module contains alternative step definitions able to handle one specific test case under execution A ServiceOperationFunction module for each operation provided by the service. This module contains functions implementing the consumer part of the interceptor (i.e., these functions are able to send and / or receive messages to/from the service under test) A ServiceOperationTemplate module for each operation provided by the service. This module contains request and/or response and/or fault message templates for a specified service operation 24/10/2013-18

Interceptor Test Logic module BGInterceptor { import from BankGateServices language "WSDL" all with { extension "File:BankGateInterface.wsdl"... import from WSDLAUX all; modulepar float SERVER_T_RESPONSE := 30.0 with extension "Waiting time of the server"; modulepar float CLIENT_T_RESPONSE := 30.0 with extension "Waiting time of the client"; import from BGWireTemplate all; import from BGWireFunction all; import from BGWireHandler all; TTCN-3 source code for test logic of interceptor component Main module Operation handler module Operation function module Operation template module type component TCInterceptorType extends BankGateSOAP11HTTPPort_COMPONENT{ timer servertimer := SERVER_T_RESPONSE; timer clienttimer := CLIENT_T_RESPONSE; port BankGatePortType_PORTTYPE clientport;... function fserverresponsewiringcall01(tcinterceptortype client) runs on TCInterceptorType { activate(serverwirecheckcredentialscall01handle(client)); activate(serverwirefindaccountcall01handle(client)); activate(servercheckbalancecall01handle(client)); activate(serverwirecall01handle(client));... servertimer.start(server_t_response); alt { [] servertimer.timeout {client.stop; self.stop; testcase tcwiring01test() runs on TCInterceptorType system TCInterceptorType { var TCInterceptorType server := TCInterceptorType.create("WSDL Service"); var TCInterceptorType client := TCInterceptorType.create("WSDL Client") alive; map(server:bankgatesoap11httpport_port, system:bankgatesoap11httpport_port); map(client:clientport, system:clientport); server.start(fserverresponsewiringcall01(client)); alt { [] all component.done { unmap(client:clientport); unmap(server:bankgatesoap11httpport_port); 24/10/2013-19

Service Operation Handler for Wire TTCN-3 source code snapshot for the BankGateWireHandler module module BGWireHandler { import from BGWireTemplate all; import from BGWireFunction all; import from BGInterceptor all; import from BankGateServices all; altstep serverwirecall01handle(tcinterceptortype client) runs on TCInterceptorType { [] BankGateSOAP11HTTPPort_PORT.getcall(wireMoney_op:{wireReqMsg601){ client.start(fcwirecall01()); alt{ [] client.done{... BankGateSOAP11HTTPPort_PORT.reply(wireMoney_op:{wireReqMsg601 value wirerespmsg602); setverdict(pass); repeat; [] BankGateSOAP11HTTPPort_PORT.getcall(wireMoney_op:{wireGeneralMsg){ BankGateSOAP11HTTPPort_PORT.raise(wireMoney_op, wirerespfaultmsg601("404")); setverdict(fail); repeat; 24/10/2013-20

Service Operation Function for Wire TTCN-3 source code snapshot for the BankGateWireFunction module module BGWireFunction { import from BGWireTemplate all; import from BGInterceptor all; import from BankGateServices all; function fcwirecall01() runs on TCInterceptorType {... clientport.call(wiremoney_op:{wiremsg601, CLIENT_T_RESPONSE) { [] clientport.getreply(wiremoney_op:{wiremsg601 value wirerespmsg602) { setverdict(pass, "Response from Bankgate matches"); [] clientport.getreply(wiremoney_op:{wiremsg601 value?) { setverdict(fail, "Response mismatch"); [] clientport.catch(wiremoney_op, FaultMsgType:wireFaultMsg("503")) { setverdict(fail, "Received fault message"); [] clientport.catch(wiremoney_op, FaultMsgType:wireFaultMsg("404")) { setverdict(fail, "Received fault message"); [] clientport.catch(wiremoney_op, SystemException:?) { setverdict(fail, "Communication exception"); [] clientport.catch(timeout) { setverdict(fail, "Timeout occurred."); ; 24/10/2013-21

Service Operation Template for Wire TTCN-3 source code snapshot for the BankGateWireTemplate module module BGWireTemplate {... import from BankGateServices all; /* Wire request message templates */ template WireMoneyMsgType wiregeneralmsg := { wsainfo := { messageid :=?, action_ :=?, relatesto := omit, swiftnumber :=?, sourceacc :=?, targetacc :=?, amount := {famount :=?, fcurrency :=? template WireMoneyMsgType wirereqmsg601 := { wsainfo := { messageid := "m-usatm-usbg-601", action_ := "WireMoneyRequest", relatesto := omit, swiftnumber := "US3007", sourceacc := "123456", targetacc := "734456", amount := {famount := 2000, fcurrency := "Euro" template WireMoneyMsgType wiremsg601 := { wsainfo := { messageid := "m-usatm-usbg-601", action_ := "WireMoneyRequest", relatesto := "", swiftnumber := "US3007", sourceacc := "123456", targetacc := "734456", amount := {famount := 2000, fcurrency := "Euro" 24/10/2013-22

Conclusion We have presented our experience in designing and implementing the proposed TTCN4SOA architecture and framework in TTCN-3 standard and on top of the TTworkbench platform used as test execution environment BN4SAT outcomes constitute a background of the ongoing EC FP7 research project MIDAS (Model and Inference Driven Automated testing of Services architectures project number: 318786) The MIDAS goal is the implementation of a test facility for services architectures that: automates the test generation, scheduling, execution and arbitration for unit and integration (choreography) testing, targets model-based functional, security and usage-based testing with different methods is available on self-provisioning and pay-per-use basis as a TaaS (Test as a Service) running on a cloud infrastructure 24/10/2013-24

Thanks Questions? 24/10/2013-25

providerb providera providera Templates Unit test object Unit test - Abstract SUT Model «ServiceChannel» cmp Unit test configuration «Participant» p1 :Participant1 consumera sc12 :ServiceChannelA InterfaceA InterfaceA «Participant» p2 :Participant2 «Emulator» p1 :Participant1 consumera InterfaceA InterfaceA «Proxy» p2 :Participant2 Unit test with stubs object Unit with stubs test - Abstract SUT model cmp Unit with stubs test configuration «Participant» p1 :Participant1 consumera InterfaceA «ServiceChannel» sc12 :ServiceAChannel InterfaceA InterfaceB «ServiceChannel» providera «Participant» p2 :Participant2 consumerb «Emulator» p1 :Participant1 consumera InterfaceA InterfaceA InterfaceB providera «Proxy» p2 :Participant2 consumerb «Participant» p3 :Participant3 sc23 :ServiceBChannel InterfaceB «Emulator» p3 :Participant3 providerb InterfaceB 24/10/2013-26

Basic test case pattern Unit test sd Basic test case «Emulator» p1 :Participant1 «Proxy» p2 :Participant2 init(providerastatebefore) request(requestacontent) response(responseacontent) alt ResponseContent match mismatch [ResponseAContent match] setverdict(pass) Passed [ResponseAContent mismatch] setverdict(fail) Failed(ResponseAContent) 24/10/2013-27

Basic test case pattern (II) Unit test with stubs sd Unit composition test case «Emulator» p1 :Participant1 «Proxy» p2 :Participant2 «Emulator» p3 :Participant3 init(providerastatebefore) requesta(requestacontent) requestb(requestbcontent) alt RequestContentB match mismatch setvardict(pass) Passed(RequestBContent) [RequestBContent matches] responseb(responsebcontent) responsea(responseacontent) setverdict(fail) [RequestBContent mismatches] Failed(RequestBContent) setverdict(pass) alt ResponseContentA match mismatch [ResponseAContent matches] Passed(ResponseAContent) setverdict(fail) [ResponseAContent mismatches] Failed(ResponseAContent) 24/10/2013-28

providera providerb providera providerb Templates (II) Integration test object Integration test - Abstract SUT model «Participant» p1 :Participant1 consumera InterfaceA «ServiceChannel» sc12 :ServiceAChannel InterfaceA «Participant» p2 :Participant2 consumerb InterfaceB «ServiceChannel» sc23 :ServiceBChannel InterfaceB «Participant» p3 :Participant3 cmp Integration test configuration «Emulator» p1 :Participant1 consumera InterfaceA InterfaceA «Proxy» p2 :Participant2 consumerb InterfaceB InterfaceB providerb «Interceptor» sc23 :Serv icebchannel consumerb InterfaceB InterfaceB «Proxy» p3 :Participant3 24/10/2013-29

Basic test case pattern (III) sd Integration serv ice composition test case «Emulator» p1 :Participant1 init(providerastatebefore) requesta(requestacontent) «Proxy» p2 :Participant2 requerstb(requestbcontent) «Interceptor» sc23 :ServiceBChannel «Proxy» p3 :Participant3 alt RequestContentB match mismatch Integration test setverdict(pass) Passed(RequestBContent) [RequestBContent matches] init(providerbstatebefore) requestb(requestbcontent) responseb(responsebcontent) alt ResponseContentB match mismatch setverdict(pass) [ResponseBContent matches] Passed(ResponseBContent) responseb(responsebcontent) responsea(responseacontent) setverdict(pass) Passed(ResponseAContent) alt ResponseContentA match mismatch [ResponseAContent matches] [ResponseAContent mismatches] setverdict(fail) Failed(ResponseAContent) setverdict(fail) [ResponseBContent mismatches] Failed(ResponseBContent) setverdict(fail) [RequestBContent mismatches] Failed(RequestBContent) 24/10/2013-30