Slide 1

Slide 1 text

SLIDESMANIA.COM SLIDESMANIA.COM Testing to avoid doubting

Slide 2

Slide 2 text

SLIDESMANIA.COM Benjamin Cavy

Slide 3

Slide 3 text

SLIDESMANIA.COM SLIDESMANIA.COM Testing to almost avoid doubting This could have been called

Slide 4

Slide 4 text

SLIDESMANIA.COM SLIDESMANIA.COM Testing for a little less doubting This should have been called

Slide 5

Slide 5 text

SLIDESMANIA.COM SLIDESMANIA.COM Disclaimer Opinions are my own they sometimes change I’m interested by yours !

Slide 6

Slide 6 text

SLIDESMANIA.COM SLIDESMANIA.COM This is not a Β« silver bullet Β»

Slide 7

Slide 7 text

SLIDESMANIA.COM SLIDESMANIA.COM What is a good test anyway ?

Slide 8

Slide 8 text

SLIDESMANIA.COM SLIDESMANIA.COM Tests pyramid Units Integration E2E Cost Execution time Precision

Slide 9

Slide 9 text

SLIDESMANIA.COM SLIDESMANIA.COM My dream test 🎯 fails only when it should πŸ§ͺ is reproductible ⏩ runs quickly πŸ’‘is easy to understand

Slide 10

Slide 10 text

SLIDESMANIA.COM SLIDESMANIA.COM Test pyramid Units Integration E2E πŸ§ͺ πŸ§ͺ πŸ§ͺ ⏩ ⏩ ⏩ πŸ§ͺ ⏩ πŸ§ͺ πŸ§ͺ πŸ§ͺ ⏩ ⏩ Not reproductible

Slide 11

Slide 11 text

SLIDESMANIA.COM SLIDESMANIA.COM Unit tests shortcomings πŸͺ’ Tighten coupling with code structure β›“ Make refactoring harder 🧩 Testing pieces of code, not application features 😨 I got little faith in unit tests

Slide 12

Slide 12 text

SLIDESMANIA.COM SLIDESMANIA.COM Testing diamong Integration E2E Units

Slide 13

Slide 13 text

SLIDESMANIA.COM SLIDESMANIA.COM Integration tests : my guidelines πŸ§‘πŸ’» Focus on features / user journey πŸ“¦ Test in black box mode 🍾 Mock only what’s strictly necessary

Slide 14

Slide 14 text

SLIDESMANIA.COM SLIDESMANIA.COM And concretly ?

Slide 15

Slide 15 text

SLIDESMANIA.COM SLIDESMANIA.COM Test containers Containers orchestrated by your tests πŸͺ© Java, node, python, go, rust, … πŸͺž Β« ISO prod Β» technical environnement

Slide 16

Slide 16 text

SLIDESMANIA.COM SLIDESMANIA.COM Wiremock Stubs for HTTP cakks 🍾 Fine grain stubbing βš™ Standalone server βœ… Call check Alternatives oMock-server (node) oMock Service Worker (frontend)

Slide 17

Slide 17 text

SLIDESMANIA.COM SLIDESMANIA.COM Cypress Fast, easy and reliable tes:ng for anything that runs in a browser. πŸŽ‡ An UI that allows to clearly visualise all test steps 🧰 naviga9on, stubbing, and async asser9on features πŸ”Ž 4 supported browsers

Slide 18

Slide 18 text

SLIDESMANIA.COM SLIDESMANIA.COM Testing library Accessibility oriented library

Slide 19

Slide 19 text

SLIDESMANIA.COM SLIDESMANIA.COM Application API Application API Application API Frontend DOM

Slide 20

Slide 20 text

SLIDESMANIA.COM SLIDESMANIA.COM Application API API API Frontend DOM

Slide 21

Slide 21 text

SLIDESMANIA.COM SLIDESMANIA.COM Application API API API

Slide 22

Slide 22 text

SLIDESMANIA.COM SLIDESMANIA.COM API API Application Frontend Application API DOM

Slide 23

Slide 23 text

SLIDESMANIA.COM SLIDESMANIA.COM Pros πŸ’₯ Failure : behaviour has changed πŸ”§ Refactoring resilient βœ… Test the whole stack (SQL queries, …) πŸ’‘ Allow to imagine features from user perspective

Slide 24

Slide 24 text

SLIDESMANIA.COM SLIDESMANIA.COM Pain points πŸ›  Stubbs are hard to maintain 🐌 Things can get slow 🀯 Test code may become hard to read

Slide 25

Slide 25 text

SLIDESMANIA.COM Total decoupling Reboot / complete reset between tests It’s slow !!! 2 main causes 🚚 Technical elements instantation πŸ“‘ Functionnal setup String coupling Context is kept between tests ⚠ Dependant of execution order Coupling Β« happy medium Β» Programmatic cleaning Common setup for a whole test suite

Slide 26

Slide 26 text

SLIDESMANIA.COM SLIDESMANIA.COM My tests are too complicated ! πŸ”§ Extract Β« test primitives Β»

Slide 27

Slide 27 text

SLIDESMANIA.COM SLIDESMANIA.COM My tests are too complicated ! πŸ”§ Extract Β« test primiBves Β» πŸ›  FuncBonnal builders

Slide 28

Slide 28 text

SLIDESMANIA.COM SLIDESMANIA.COM My tests are too complicated ! πŸ”§ Extract Β« test primiBves Β» πŸ›  FuncBonnal builders πŸš†Focus on one target in each test

Slide 29

Slide 29 text

SLIDESMANIA.COM SLIDESMANIA.COM @benjamin_cavy Thank you ! Any question ?