TESTING
MICROSERVICES
URI GOLDSTEIN
PRACTICAL AGILE
SOURCE & CREDIT
Testing Strategies in a Microservice Architecture / Toby Clemson
https://martinfowler.com/articles/microservice-testing/
GOAL
•Learn a layered approach for building an
automated test strategy that ensures the
quality of a microservices architecture
CHALLENGES
• Network Partition
• Communication Failure
• Fragile Contracts
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
Other
Microservice
DB
Client
FIVE LAYERS
• Unit
• Integration
• Component
• Contract
• End to End
UNIT TESTS
• Target: Units
• Benefits:
• Fastest feedback
• Improved design
• Use cases:
• TDD
• Business logic
• Edge cases in comm.
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
UNIT TESTS
• Solitary Style – with mocking
• Sociable – no mocking
• In very small microservices, Component testing
might replace Unit testing entirely
• Unit tests are never enough
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
INTEGRATION TESTS
• Target: Communication Interfaces
• Benefits: Focus
• Use Cases:
• Security
• Fault tolerance
• ORM Mapping
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
Other
Microservice
DB
Client
INTEGRATION TESTS
• Test against real dependencies, avoid mocks
• Consider separating from main CI pipeline
to mitigate fragility
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
Other
Microservice
DB
Client
COMPONENT TESTS
• Target: A microservice as a whole
• Benefits: Comprehensive and fast
• Use Cases:
• Fast Feedback
• Correctness
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
COMPONENT TESTS
INPROCESS
OUTOFPROCESS
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence In
Memory
MockClient
Test DB
Mock
Microservice
CONTRACT TESTS
• Target:
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
END TO END
• Target: Entire system
• Benefits:
• Highest level of certainty
• Use Cases:
• Business critical paths
Front
End
External
Service
END TO END
• Mock Nothing!*
• Write as few as possible
• Time Budgeting
* External dependencies that are unstable can be mocked if all else fails
SUMMARY
• TABLE HERE
Services
Resources
Domain
Repositorie
s
HTTPClient
Gateways
Persistence
Other
Microservice
DB
Client
Services
Resources
Domain
Repositories
HTTPClient
Gateways
Persistence

Testing microservices

Editor's Notes

  • #10 Timeouts, network failures
  • #11 Timeouts, network failures