💪 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 🇳🇱


Why test?

Someone always tests:
you, your system or your users

Pulse check

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!

Let's talk about shapes!

Let's talk about shapes?

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


Dziękuję! 🇵🇱

Twitter: @antodippo | Mastodon: @antodippo | antodippo.com