💪 Shape up 💪
your testing strategy
Balancing Unit, Integration and E2E Tests
Antonello D'Ippolito - PHPCon Poland 2023
What's an automated test suite?
Collection of test cases and scenarios...
...to verify the correctness of a software system
Lots of design choices to be made!
🔺 🔵 🔶 🟩
🇮🇹 CIAO! 🤌
Antonello D'Ippolito
Software engineer @ Mollie 🇳🇱
@antodippo
Someone always tests:
you, your system or your users
In a fast iterative process (CI/CD)you want the loop to be as fast as possible
🏃 💨️
40 Good test suite
6 Stable
8 Fast
6 Trustable
5 Informative
Design your test suite with the same care
as your production code
12 TEST TYPES
8 Unit
8 Integration
8 E2E
8 Functional
6 Integrated
8 Component
8 Acceptance
8 System
6 Small
6 Medium
6 Large
6 Contract
6 Regression
3 Smoke
3 Sanity
3 Performance
3 Load
6 Narrow
6 Broad
Identifying tests by size:
→ Small: runs in 1 process
→ Medium: runs in 1 machine
→ Large: runs on multiple machines
Identifying tests by scope:
→ Narrow: small part of the system (class, method)
→ Medium: interaction between small number of components (web server and db)
→ Large: interaction between several distinct parts of the system
Narrow tests can drive the design of your code!
Wait, what is an integration test again?
Can contract tests be considered
integration tests?
Design your test suite with the same care
as your production code
Testability = Maintenability
→ AGILITY
→ PRODUCT SUCCESS
→ PROFIT!