Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
MICROSERVICES
ERFOLGREICH TESTEN
Consumer	Driven	Contract	Testing	mit Spring	Cloud	Contract
Frank	Scheffler
Senior	Solutio...
Integrated	Test	Scope
Integration	Testing:	then and now ...
Consumer	Driven	Contract	Testing S.2
Module	A
Module	B
Module	...
Integrated	Test	Scope
Testing in	a	Microservice Environment
Consumer	Driven	Contract	Testing S.3
Service
A
Service
C
Servi...
Integrated	Testing doesn‘t scale!
Consumer	Driven	Contract	Testing S.4
#	of involved services
fully integrated
testing
iso...
It‘s all	about the Contract
Consumer	Driven	Contract	Testing S.5
Consumer
Consumer
Provider
ContractBlack	Box	View(s) Whit...
Spring	Cloud	Contract @	REST
Consumer	Driven	Contract	Testing S.6
Groovy
Contracts
Maven/Gradle
WireMock
Stub Server
Quell...
Contract-based Testing Approach
Consumer	Driven	Contract	Testing S.7
Consumer ProviderContract
Stub(s) Test(s)
Contract Aspects
Consumer	Driven	Contract	Testing S.8
Contract
Interface
Schema
Protocol
Business	Logic
Security
Documenta...
Isolated Testing Example
Consumer	Driven	Contract	Testing S.9
Service	A Service	B
Business	Logic
Integration	
Service
(e.g...
Demo
Consumer	Driven	Contract	Testing S.10
Production
Consumer-Driven Contract Development
Consumer	Driven	Contract	Testing S.11
C
Create/Change
Contract
Consolidate...
Summary
Consumer-Driven Contract Testing
• Scalable testing for distributed
systems
• Focus	on	consumer expectations
drive...
WAS	SIND	IHRE	ERFAHRUNGEN	
MIT	TESTS	IN	VERTEILTEN	
SYSTEMEN?
Frank	Scheffler
Senior	Solution	Architect
@maverick_1601
Flo...
Nächste SlideShare
Wird geladen in …5
×

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

285 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

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

×