SlideShare a Scribd company logo
Automated testing
of complex service
oriented
architectures
ALEXANDER GROSSE
ALEXANDER SCHWARTZ
Who are we?
• ALEXANDER SCHWARTZ (NOKIA)
• ALEXANDER GROSSE (SOUNDCLOUD)
SOUNDCLOUD
• World’s leading sound sharing
  platform
• HQ in Berlin with 70 employees
• Guess how many QA ROLES?
PROBLEM
PROBLEM
• Service oriented architecture (REST)
• Evolve services independently from
  each other(loose coupling)
• Release often
COMMON SOLUTION
•   Chaos
•   Full regression tests
•   Hide behind client
•   Release in big intervals
WHAT IS THE
PROBLEM WITH FULL
REGRESSION TESTS?
• Users might only use Part of the API
• results in unnecessary version
  increases
PROVIDER
CONTRACTS
• Provider Contracts bind the consumer to
  the entirety of the provider’s functionality
• Irrespective of how much of this
  functionality it really needs
• Think WSDL + XML
• As the name indicates: Provider Centric!
• loose coupling?
WHAT IS ACTUALLY
USED?
      obj1
      /      Resp
      obj2
      /

      obj3
      /

      obj4
      /

      obj5
      /

      obj6
      /
CDC’S
• contracts are becoming consumer centric
  not provider centric
• means the consumer writes the contract
• provider still has to accept it
HOW IS A CONTRACT
MADE?
• Consumer team develops the usage of the
  api
• Writes an executable test case
• discusses that test case with the provider
  team
• Provider accepts by integrating into CI
WELCOMED SIDE
EFFECTS
•   communication
•   better use of API’s
•   Responsibility for failed releases changes
•   SOA is not RPC!
BUT...
• API’s are also used by externals
• the exact same procedure cannot be
  repeated with external consumers
WHAT TO DO?
• Choose lead customers
• Analyze log files to get the used resources
  (but not how responses are being used)
ALEX S STARTS!
;)
Alex Schwartz
•Background: Programming
•20+ years in IT
•Scrum Master, 7+ years agile
•Sr. Release and Test Specialist
•Head of a Delivery Team
  -DevOps
  -Kanban
  -Pipelines
  -Continuous Delivery
Nokia gate5 Berlin                            ng!
                                        h iri
                              We a re
•500+ people
•from 40+ countries
•very international
•provides maps for web and devices,
 and other applications
•100+ open positions
Places Backend Services - Architecture




2   © 2011 Nokia Company Confidential v1.0 2011-06-16 Alexander Schwartz CDCs@PlacesBackend
Different Change Frequencies

                                                                                                    - frozen
                                                                                                    - multiple versions




- frozen, legacy
- one versions




                                                                                       - frequent changed
                                                                                       - one version
                                                                                         (during rollout: two versions)


   2    © 2011 Nokia Company Confidential v1.0 2011-06-16 Alexander Schwartz CDCs@PlacesBackend
CDCs - How to verify coverage?
      Talk to the client team!

      Expose each bug with a test.

      Double check:
      • Find all the requests: analyze the access log
      • which part of the response is used?
      • analyze the code




7
Services and Pipelines



                   Places
                  Backend
                    API
                <<REST services>>
Services and Pipelines

           Places
          Registry
           <<REST>>



                          Places
          Search
           <<REST>>      Backend
                           API
     Recommendations   <<REST services>>
          <<REST>>
Services and Pipelines

                 Places
                Registry
                 <<REST>>


Account
                                Places
Service         Search
<<REST>>         <<REST>>      Backend
                                 API
           Recommendations   <<REST services>>
                <<REST>>
Services and Pipelines
                                                 City Pages
                                                  <<webapp>>

                 Places
                Registry                         Maps app for
                 <<REST>>
                                                  Windows 7
                                                  <<device app>>
Account
                                Places
Service         Search
<<REST>>         <<REST>>      Backend            Maps Web
                                                   <<webapp>>
                                 API
           Recommendations   <<REST services>>
                                                 PBAPI client
                <<REST>>
                                                      API
                                                  <<client API>>
Services and Pipelines
                                                          City Pages
                                                           <<webapp>>

                 Places
                Registry                                  Maps app for
                 <<REST>>
                                                           Windows 7
                                                           <<device app>>
Account
                                         Places
Service         Search
<<REST>>         <<REST>>               Backend            Maps Web
                                                            <<webapp>>
                                          API
           Recommendations            <<REST services>>
                                                          PBAPI client
                <<REST>>
                                                               API
                                                           <<client API>>




                            Build Pipeline Order
Services and Pipelines
                                                             City Pages
                                                              <<webapp>>

                 Places
                Registry                                     Maps app for
                 <<REST>>
                                                              Windows 7
                                                              <<device app>>
Account
                                         Places
Service         Search
<<REST>>         <<REST>>               Backend               Maps Web
                                                               <<webapp>>
                                          API
           Recommendations            <<REST services>>
                                                             PBAPI client
                <<REST>>
                                                                  API
                                                              <<client API>>



                  Upstrea                                 Downstream

                            Build Pipeline Order
CDC Example




              Use a builder
              pattern.




6
CDC Example




                       Use a builder
                       pattern.




              The provider provides a library to
              simplify CDC suites.
6
How we manage the CDCs?

    Provider                        Consumer Side


          Library
          lib-cdc

                                       CDC S60-to-




           Provider app code repo
                    vvv
           - Test suite CDCs

7
CDC Example w/ cucumber




6
CDCs - Test Data


    • best practice: every single test controls its test
      data
    • options:
        • create data
        • use existing data
        • use a controlled data set
    • depends on context of the test system




7
CDCs - How to verify coverage?
      Talk to the client team!

      Expose each bug with a test.

      Double check:
      • Find all the requests: analyze the access log
      • which part of the response is used?
      • analyze the code




7
Q&A




7

More Related Content

Similar to Automated testing of complex service oriented architectures

(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
BIOVIA
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
OCTO Technology
 
Expressing your UI in JSON – plain, data binding, advanced data binding
Expressing your UI in JSON – plain, data binding, advanced data bindingExpressing your UI in JSON – plain, data binding, advanced data binding
Expressing your UI in JSON – plain, data binding, advanced data binding
Starcounter
 
What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5
confluent
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう
Yuki Hattori
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
Karen Broughton-Mabbitt
 
MSB Deep Dive
MSB Deep DiveMSB Deep Dive
MSB Deep Dive
Huabing Zhao
 
Monitoring API Performance and Delivering a Scalable API Solution
Monitoring API Performance and Delivering a Scalable API SolutionMonitoring API Performance and Delivering a Scalable API Solution
Monitoring API Performance and Delivering a Scalable API SolutionWSO2
 
Creating APIs with the WSO2 Platform
Creating APIs with the WSO2 PlatformCreating APIs with the WSO2 Platform
Creating APIs with the WSO2 Platform
Sagara Gunathunga
 
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations WorkshopI Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
Apigee | Google Cloud
 
Becoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led ConnectivityBecoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led Connectivity
Bui Kiet
 
Becoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led ConnectivityBecoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led Connectivity
MuleSoft
 
REST APIs
REST APIsREST APIs
Rs on Rails 2011
Rs on Rails 2011Rs on Rails 2011
Rs on Rails 2011
Fabio Akita
 
SQL Azure Federation and Scalability
SQL Azure Federation and ScalabilitySQL Azure Federation and Scalability
SQL Azure Federation and Scalability
Eduardo Castro
 
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
apidays
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
Guido Schmutz
 
2013 02-apache conna-api-manager-asanka
2013 02-apache conna-api-manager-asanka2013 02-apache conna-api-manager-asanka
2013 02-apache conna-api-manager-asankaWSO2
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.js
Shubhra Kar
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
Shubhra Kar
 

Similar to Automated testing of complex service oriented architectures (20)

(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
(ATS4-DEV04) Protocols as RESTful Services and RESTful URL Routing
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
 
Expressing your UI in JSON – plain, data binding, advanced data binding
Expressing your UI in JSON – plain, data binding, advanced data bindingExpressing your UI in JSON – plain, data binding, advanced data binding
Expressing your UI in JSON – plain, data binding, advanced data binding
 
What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5What's New in Confluent Platform 5.5
What's New in Confluent Platform 5.5
 
戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう戦う情シス!全社 API で社内アプリ開発を加速させよう
戦う情シス!全社 API で社内アプリ開発を加速させよう
 
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay NagchowdhuryIBM Integration Bus and REST APIs - Sanjay Nagchowdhury
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
 
MSB Deep Dive
MSB Deep DiveMSB Deep Dive
MSB Deep Dive
 
Monitoring API Performance and Delivering a Scalable API Solution
Monitoring API Performance and Delivering a Scalable API SolutionMonitoring API Performance and Delivering a Scalable API Solution
Monitoring API Performance and Delivering a Scalable API Solution
 
Creating APIs with the WSO2 Platform
Creating APIs with the WSO2 PlatformCreating APIs with the WSO2 Platform
Creating APIs with the WSO2 Platform
 
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations WorkshopI Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
I Love APIs 2015 : Zero to Thousands TPS Private Cloud Operations Workshop
 
Becoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led ConnectivityBecoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led Connectivity
 
Becoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led ConnectivityBecoming a Connected Insurer With API-led Connectivity
Becoming a Connected Insurer With API-led Connectivity
 
REST APIs
REST APIsREST APIs
REST APIs
 
Rs on Rails 2011
Rs on Rails 2011Rs on Rails 2011
Rs on Rails 2011
 
SQL Azure Federation and Scalability
SQL Azure Federation and ScalabilitySQL Azure Federation and Scalability
SQL Azure Federation and Scalability
 
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
INTERFACE by apidays_What's your Type? Understanding API Types and Choosing t...
 
Building Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache KafkaBuilding Event Driven (Micro)services with Apache Kafka
Building Event Driven (Micro)services with Apache Kafka
 
2013 02-apache conna-api-manager-asanka
2013 02-apache conna-api-manager-asanka2013 02-apache conna-api-manager-asanka
2013 02-apache conna-api-manager-asanka
 
Triangle Node Meetup : APIs in Minutes with Node.js
Triangle Node Meetup :  APIs in Minutes with Node.jsTriangle Node Meetup :  APIs in Minutes with Node.js
Triangle Node Meetup : APIs in Minutes with Node.js
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 

More from Dr. Alexander Schwartz

Wrestling with Conway's Law: How to support cross-functional teams working on...
Wrestling with Conway's Law: How to support cross-functional teams working on...Wrestling with Conway's Law: How to support cross-functional teams working on...
Wrestling with Conway's Law: How to support cross-functional teams working on...
Dr. Alexander Schwartz
 
#AT16VIE: Does Agile mean we have no time for testing?
#AT16VIE: Does Agile mean we have no time for testing?#AT16VIE: Does Agile mean we have no time for testing?
#AT16VIE: Does Agile mean we have no time for testing?
Dr. Alexander Schwartz
 
Does agile mean having even less time for testing?!
Does agile mean having even less time for testing?!Does agile mean having even less time for testing?!
Does agile mean having even less time for testing?!
Dr. Alexander Schwartz
 
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
Dr. Alexander Schwartz
 
Hilfe, wir haben keine Zeit zum Testen!
Hilfe, wir haben keine Zeit zum Testen!Hilfe, wir haben keine Zeit zum Testen!
Hilfe, wir haben keine Zeit zum Testen!
Dr. Alexander Schwartz
 
Change Dojo - Agile Testing Days 2015
Change Dojo - Agile Testing Days 2015Change Dojo - Agile Testing Days 2015
Change Dojo - Agile Testing Days 2015
Dr. Alexander Schwartz
 
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneidenScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
Dr. Alexander Schwartz
 
Insights From Happy Change Agents
Insights From Happy Change AgentsInsights From Happy Change Agents
Insights From Happy Change Agents
Dr. Alexander Schwartz
 
A New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story SplittingA New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story Splitting
Dr. Alexander Schwartz
 
Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?
Dr. Alexander Schwartz
 
What is Agile Testing?
What is Agile Testing? What is Agile Testing?
What is Agile Testing?
Dr. Alexander Schwartz
 
Ripening of a RESTful API
Ripening of a RESTful APIRipening of a RESTful API
Ripening of a RESTful API
Dr. Alexander Schwartz
 
Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)
Dr. Alexander Schwartz
 
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
Dr. Alexander Schwartz
 
Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!
Dr. Alexander Schwartz
 
How releasing faster changes testing
How releasing faster changes testingHow releasing faster changes testing
How releasing faster changes testing
Dr. Alexander Schwartz
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
Dr. Alexander Schwartz
 
How We Introduced Continuous Delivery?
How We Introduced Continuous Delivery?How We Introduced Continuous Delivery?
How We Introduced Continuous Delivery?
Dr. Alexander Schwartz
 
How to brew a tasty agile test strategy
How to brew a tasty agile test strategyHow to brew a tasty agile test strategy
How to brew a tasty agile test strategy
Dr. Alexander Schwartz
 

More from Dr. Alexander Schwartz (20)

Wrestling with Conway's Law: How to support cross-functional teams working on...
Wrestling with Conway's Law: How to support cross-functional teams working on...Wrestling with Conway's Law: How to support cross-functional teams working on...
Wrestling with Conway's Law: How to support cross-functional teams working on...
 
#AT16VIE: Does Agile mean we have no time for testing?
#AT16VIE: Does Agile mean we have no time for testing?#AT16VIE: Does Agile mean we have no time for testing?
#AT16VIE: Does Agile mean we have no time for testing?
 
Does agile mean having even less time for testing?!
Does agile mean having even less time for testing?!Does agile mean having even less time for testing?!
Does agile mean having even less time for testing?!
 
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
User Stories Schneiden mit Elefanten-Carpaccio (Scrum-Day 2016)
 
Hilfe, wir haben keine Zeit zum Testen!
Hilfe, wir haben keine Zeit zum Testen!Hilfe, wir haben keine Zeit zum Testen!
Hilfe, wir haben keine Zeit zum Testen!
 
Change Dojo - Agile Testing Days 2015
Change Dojo - Agile Testing Days 2015Change Dojo - Agile Testing Days 2015
Change Dojo - Agile Testing Days 2015
 
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneidenScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
ScrumDay2015: Ein neues Dojo: Anwendergeschichten zerschneiden
 
Insights From Happy Change Agents
Insights From Happy Change AgentsInsights From Happy Change Agents
Insights From Happy Change Agents
 
A New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story SplittingA New Dojo: The Art of Story Splitting
A New Dojo: The Art of Story Splitting
 
Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?Wie verändert sich Testen mit Continuous Delivery?
Wie verändert sich Testen mit Continuous Delivery?
 
What is Agile Testing?
What is Agile Testing? What is Agile Testing?
What is Agile Testing?
 
Ripening of a RESTful API
Ripening of a RESTful APIRipening of a RESTful API
Ripening of a RESTful API
 
Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)Help, we have no more time for testing! (gotoCon Berlin 2013)
Help, we have no more time for testing! (gotoCon Berlin 2013)
 
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
AWS Ingredients for Deployment Patterns & the PBAPI canary-blue/green-hotstan...
 
Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!Ignite Talk: Help, we have no more time for testing!
Ignite Talk: Help, we have no more time for testing!
 
How releasing faster changes testing
How releasing faster changes testingHow releasing faster changes testing
How releasing faster changes testing
 
How to Introduce Continuous Delivery
How to Introduce Continuous DeliveryHow to Introduce Continuous Delivery
How to Introduce Continuous Delivery
 
How We Introduced Continuous Delivery?
How We Introduced Continuous Delivery?How We Introduced Continuous Delivery?
How We Introduced Continuous Delivery?
 
Kanban und DevOps bei Nokia
Kanban und DevOps bei NokiaKanban und DevOps bei Nokia
Kanban und DevOps bei Nokia
 
How to brew a tasty agile test strategy
How to brew a tasty agile test strategyHow to brew a tasty agile test strategy
How to brew a tasty agile test strategy
 

Recently uploaded

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
UiPathCommunity
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 

Recently uploaded (20)

Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Assure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyesAssure Contact Center Experiences for Your Customers With ThousandEyes
Assure Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 

Automated testing of complex service oriented architectures

  • 1. Automated testing of complex service oriented architectures ALEXANDER GROSSE ALEXANDER SCHWARTZ
  • 2. Who are we? • ALEXANDER SCHWARTZ (NOKIA) • ALEXANDER GROSSE (SOUNDCLOUD)
  • 3. SOUNDCLOUD • World’s leading sound sharing platform • HQ in Berlin with 70 employees • Guess how many QA ROLES?
  • 5. PROBLEM • Service oriented architecture (REST) • Evolve services independently from each other(loose coupling) • Release often
  • 6. COMMON SOLUTION • Chaos • Full regression tests • Hide behind client • Release in big intervals
  • 7. WHAT IS THE PROBLEM WITH FULL REGRESSION TESTS? • Users might only use Part of the API • results in unnecessary version increases
  • 8. PROVIDER CONTRACTS • Provider Contracts bind the consumer to the entirety of the provider’s functionality • Irrespective of how much of this functionality it really needs • Think WSDL + XML • As the name indicates: Provider Centric! • loose coupling?
  • 9. WHAT IS ACTUALLY USED? obj1 / Resp obj2 / obj3 / obj4 / obj5 / obj6 /
  • 10. CDC’S • contracts are becoming consumer centric not provider centric • means the consumer writes the contract • provider still has to accept it
  • 11. HOW IS A CONTRACT MADE? • Consumer team develops the usage of the api • Writes an executable test case • discusses that test case with the provider team • Provider accepts by integrating into CI
  • 12. WELCOMED SIDE EFFECTS • communication • better use of API’s • Responsibility for failed releases changes • SOA is not RPC!
  • 13. BUT... • API’s are also used by externals • the exact same procedure cannot be repeated with external consumers
  • 14. WHAT TO DO? • Choose lead customers • Analyze log files to get the used resources (but not how responses are being used)
  • 16. Alex Schwartz •Background: Programming •20+ years in IT •Scrum Master, 7+ years agile •Sr. Release and Test Specialist •Head of a Delivery Team -DevOps -Kanban -Pipelines -Continuous Delivery
  • 17. Nokia gate5 Berlin ng! h iri We a re •500+ people •from 40+ countries •very international •provides maps for web and devices, and other applications •100+ open positions
  • 18.
  • 19. Places Backend Services - Architecture 2 © 2011 Nokia Company Confidential v1.0 2011-06-16 Alexander Schwartz CDCs@PlacesBackend
  • 20. Different Change Frequencies - frozen - multiple versions - frozen, legacy - one versions - frequent changed - one version (during rollout: two versions) 2 © 2011 Nokia Company Confidential v1.0 2011-06-16 Alexander Schwartz CDCs@PlacesBackend
  • 21. CDCs - How to verify coverage? Talk to the client team! Expose each bug with a test. Double check: • Find all the requests: analyze the access log • which part of the response is used? • analyze the code 7
  • 22. Services and Pipelines Places Backend API <<REST services>>
  • 23. Services and Pipelines Places Registry <<REST>> Places Search <<REST>> Backend API Recommendations <<REST services>> <<REST>>
  • 24. Services and Pipelines Places Registry <<REST>> Account Places Service Search <<REST>> <<REST>> Backend API Recommendations <<REST services>> <<REST>>
  • 25. Services and Pipelines City Pages <<webapp>> Places Registry Maps app for <<REST>> Windows 7 <<device app>> Account Places Service Search <<REST>> <<REST>> Backend Maps Web <<webapp>> API Recommendations <<REST services>> PBAPI client <<REST>> API <<client API>>
  • 26. Services and Pipelines City Pages <<webapp>> Places Registry Maps app for <<REST>> Windows 7 <<device app>> Account Places Service Search <<REST>> <<REST>> Backend Maps Web <<webapp>> API Recommendations <<REST services>> PBAPI client <<REST>> API <<client API>> Build Pipeline Order
  • 27. Services and Pipelines City Pages <<webapp>> Places Registry Maps app for <<REST>> Windows 7 <<device app>> Account Places Service Search <<REST>> <<REST>> Backend Maps Web <<webapp>> API Recommendations <<REST services>> PBAPI client <<REST>> API <<client API>> Upstrea Downstream Build Pipeline Order
  • 28. CDC Example Use a builder pattern. 6
  • 29. CDC Example Use a builder pattern. The provider provides a library to simplify CDC suites. 6
  • 30. How we manage the CDCs? Provider Consumer Side Library lib-cdc CDC S60-to- Provider app code repo vvv - Test suite CDCs 7
  • 31. CDC Example w/ cucumber 6
  • 32. CDCs - Test Data • best practice: every single test controls its test data • options: • create data • use existing data • use a controlled data set • depends on context of the test system 7
  • 33. CDCs - How to verify coverage? Talk to the client team! Expose each bug with a test. Double check: • Find all the requests: analyze the access log • which part of the response is used? • analyze the code 7
  • 34. Q&A 7

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n