Say it works on my machine one more time… I dare you! Oleg Šelajev
Slide 2
What actually drives productivity?
Slide 3
What actually drives productivity? The developer-centric approach to measuring and improving productivity. Abi Noda, DX Margaret-Anne Storey, University of Victoria Nicole Forsgren, Microsoft Research Michaela Greiler, DX
/
/
https:
queue.acm.org/detail.cfm?id=3595878
Slide 4
Feedback flows
Slide 5
Cognitive load
Slide 6
Flow state
Slide 7
Oleg Šelajev Developer relations
Slide 8
Slide 9
Tests are essential
Slide 10
Slide 11
Great tests improve Feedback loops Flow state Cognitive load
Slide 12
With bad tests nothing will help your developer productivity*
Slide 13
❌ Can’t run locally Break on changes Flaky runs Slow pipelines
Slide 14
✅ Novel Reproducible Significant
Slide 15
How to do tests?
Slide 16
Slide 17
e2e
Integration tests
Unit tests
Slide 18
Integration Testing transformation over the years
Timeline
Mocking
Local DBs
VMs (Vagrant)
Slide 19
Integration Testing transformation over the years
Timeline
Docker
Docker Compose
Docker API
Slide 20
• Container lifecycle & cleanup • Container & service configuration • Integration with frameworks or tests
Slide 21
• Container lifecycle & cleanup • Container & service configuration • Integration with frameworks or tests
Slide 22
Testcontainers-java • Created 7 years ago (Docker is 8 years old) • github.com/testcontainers/testcontainers-java
• Uses docker-java API • Integrates with frameworks, like Spring, JUnit • Works with anything that runs in a Docker container
Slide 23
Growing ecosystem of modules
Slide 24
testcontainers.com/modules
Slide 25
testcontainers.com/modules
Slide 26
Why are Testcontainers - 🏆🏆🏆 ● Flexible lifecycle API: isolation vs convenience ● Capable of abstractions (modules) ● Waiting strategies ● Complex network topologies ● Automatic cleanu p ● Everything is dynamic allowing parallelisation
Local development environment with SpringBoot 3.1
https://docs.spring.io/spring-boot/docs/3.1.0-SNAPSHOT/reference/htmlsingle/#features.testing.testcontainers.at-development-time