Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Microservices erfolgreich testen mit Consumer Driven Contract Testing und Spring Cloud Contract (OOP 2018)

278 views

Published on

Einer der wesentlichen architektonischen Vorteile der Entkopplung auch kleinerer Teile der Gesamtarchitektur wie zum Beispiel mit Microservices ist die hierdurch erreichte Flexibilität. Die verantwortlichen Teams sollen Änderungen weitestgehend unabhängig voneinander entwickeln und bereitstellen können. Nichtsdestotrotz müssen die verschiedenen Systeme am Ende korrekt miteinander kommunizieren, so dass entsprechende Integrationstests für die gemeinsam genutzten Schnittstellen notwendig sind.
Während in monolithischen Systemen hier oft der klassische Verbundtest angewendet wird, brauchen wir für hochverteilte Umgebungen aufgrund der Anzahl der Schnittstellen und der Dynamik Alternativen, die skalierbar sind. Der Vortrag zeigt auf, wie man diesem Problem mit der Methodik Consumer Driven Contract Testing (CDCT) begegnen kann. Der Vortrag adressiert dabei ebenso die positiven Aspekte von CDCT hinsichtlich des Schnittstellendesigns und der damit verbundenen Service Evolution über den Lebenszyklus hinweg.
Eine Live-Demo zeigt die Praxistauglichkeit von CDCT anhand des Java-Frameworks Spring Cloud Contract Verifier an einem Beispiel aus dem täglichen Leben auf.

Published in: Software
  • Be the first to comment

Microservices erfolgreich testen mit Consumer Driven Contract Testing und Spring Cloud Contract (OOP 2018)

  1. 1. MICROSERVICES ERFOLGREICH TESTEN Consumer Driven Contract Testing mit Spring Cloud Contract Frank Scheffler Senior Solution Architect @maverick_1601 Florian Pfleiderer Senior Solution Consultant @fpfleiderer
  2. 2. Integrated Test Scope Integration Testing: then and now ... Consumer Driven Contract Testing S.2 Module A Module B Module C In-Process Communication • Inter-Process Communication (REST/Messaging) • Multiple Transactions • Polyglot Persistence • Independent Teams & Deployments
  3. 3. Integrated Test Scope Testing in a Microservice Environment Consumer Driven Contract Testing S.3 Service A Service C Service B
  4. 4. Integrated Testing doesn‘t scale! Consumer Driven Contract Testing S.4 # of involved services fully integrated testing isolated integration testing based on contracts
  5. 5. It‘s all about the Contract Consumer Driven Contract Testing S.5 Consumer Consumer Provider ContractBlack Box View(s) White Box View Aligned & tested?
  6. 6. Spring Cloud Contract @ REST Consumer Driven Contract Testing S.6 Groovy Contracts Maven/Gradle WireMock Stub Server Quelle: https://cloud.spring.io/spring-cloud-contract/ Interface Schema
  7. 7. Contract-based Testing Approach Consumer Driven Contract Testing S.7 Consumer ProviderContract Stub(s) Test(s)
  8. 8. Contract Aspects Consumer Driven Contract Testing S.8 Contract Interface Schema Protocol Business Logic Security Documentation Performance Spring Cloud Contract Based on „example“ requests/messages
  9. 9. Isolated Testing Example Consumer Driven Contract Testing S.9 Service A Service B Business Logic Integration Service (e.g. Feign) REST Controller Business Logic Integration Service (e.g. RestTemplate) Consumer Test <<generated>> WireMock Stubs <<generated>> Contract Test Mockito Mocks Unit Test Mockito Mocks Unit Test Mockito Mocks Consumer Test API Performance Test
  10. 10. Demo Consumer Driven Contract Testing S.10
  11. 11. Production Consumer-Driven Contract Development Consumer Driven Contract Testing S.11 C Create/Change Contract Consolidate Contract C P Generate Stubs Implement using Stubs C CI Implement API using Contract Test Implement business logic P P CI/CD CI/CD
  12. 12. Summary Consumer-Driven Contract Testing • Scalable testing for distributed systems • Focus on consumer expectations drives API design • Loose coupling in the development process • Automated compatibility verification of interfaces Consumer Driven Contract Testing S.13 Spring Cloud Contract • Contracts as 1st-class citizens • Groovy DSL • Stub generation • StubRunner Spring/Standalone • Spring MockMvc/JAX-RS • JSON, REST & Messaging • Backward compatibility testing
  13. 13. WAS SIND IHRE ERFAHRUNGEN MIT TESTS IN VERTEILTEN SYSTEMEN? Frank Scheffler Senior Solution Architect @maverick_1601 Florian Pfleiderer Senior Solution Consultant @fpfleiderer

×