Slide 1

Slide 1 text

TESTING IS

Slide 2

Slide 2 text

A JOURNEY TESTING IS

Slide 3

Slide 3 text

I started writing tests in 2014.

Slide 4

Slide 4 text

It was hard!

Slide 5

Slide 5 text

It was hard! What? Where? When? Why?

Slide 6

Slide 6 text

It takes time. A lot of time. Years.

Slide 7

Slide 7 text

Today I enjoy writing tests.

Slide 8

Slide 8 text

TEACHING TESTING HAS BECOME BETTER

Slide 9

Slide 9 text

TEACHING TESTING HAS BECOME BETTER

Slide 10

Slide 10 text

TEACHING TESTING HAS BECOME BETTER

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Couple hundred tests are always fast.

Slide 16

Slide 16 text

Managing 5000+ Tests Efficiently

Slide 17

Slide 17 text

Christoph Rumpel @christophrumpel

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

5370 Tests

Slide 20

Slide 20 text

27869 Assertions

Slide 21

Slide 21 text

50 Mins

Slide 22

Slide 22 text

Tests Lots of tests We can grow fast POSITIVE

Slide 23

Slide 23 text

Couldn't run whole test suite locally Relied on GH actions Performance was already bad NEGATIVE

Slide 24

Slide 24 text

Crappy developers? Bad setup? Project grew too fast? Part of the journey WHY ❌ ❌ ✅ ✅

Slide 25

Slide 25 text

PERFORMANCE IS

Slide 26

Slide 26 text

A JOURNEY PERFORMANCE IS

Slide 27

Slide 27 text

50 Mins

Slide 28

Slide 28 text

SETUP TESTS

Slide 29

Slide 29 text

Database Migrations Sqlite MySQL Other Refresh Database DB Transactions SETUP Seeders Yes No

Slide 30

Slide 30 text

OUR SETUP Sqlite MySQL Other Database Migrations Refresh Database DB Transactions Seeders Yes No

Slide 31

Slide 31 text

PREPARE COMMAND

Slide 32

Slide 32 text

Set DB table names in config Run Landlord migrations Run Tenant migrations Run Test Playbooks PREPARE COMMAND

Slide 33

Slide 33 text

THE BIGGEST BOTTLENECK WAS ALRADY DEALT WITH

Slide 34

Slide 34 text

THE BIGGEST BOTTLENECK WAS ALRADY DEALT WITH #

Slide 35

Slide 35 text

SINGLE TESTS

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

Before

Slide 39

Slide 39 text

After

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

No content

Slide 44

Slide 44 text

Before After

Slide 45

Slide 45 text

Before After

Slide 46

Slide 46 text

Before After

Slide 47

Slide 47 text

Before After sec 2

Slide 48

Slide 48 text

After

Slide 49

Slide 49 text

After

Slide 50

Slide 50 text

45 Mins

Slide 51

Slide 51 text

THE HOLY GRAIL OF PERFORMANCE

Slide 52

Slide 52 text

Pretty easy these days. PARALLEL TESTING

Slide 53

Slide 53 text

BUT IT DEPENDS

Slide 54

Slide 54 text

SOMETIMES PARALLEL TESTING

Slide 55

Slide 55 text

IS A JOURNEY SOMETIMES PARALLEL TESTING

Slide 56

Slide 56 text

No content

Slide 57

Slide 57 text

Failing Tests 122

Slide 58

Slide 58 text

PARALLEL ISSUES

Slide 59

Slide 59 text

PARALLEL ISSUES

Slide 60

Slide 60 text

PARALLEL ISSUES AppServiceProvider

Slide 61

Slide 61 text

PARALLEL ISSUES

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

5 Mins

Slide 64

Slide 64 text

WHATS NEXT? GitHub Actions with Parallel Include Prepare Command Dump Schema

Slide 65

Slide 65 text

Managing 5000+ Tests Efficiently

Slide 66

Slide 66 text

Managing 5000+ Tests Write tests Improve the setup Parallel Testing Don't forget single tests Re-Check Performance

Slide 67

Slide 67 text

THANK YOU @christophrumpel