Deployen op vrijdagmiddag zonder Stress?

A presentation at DevTalents TechDays in April 2024 in Utrecht, Netherlands by Bas Stoker

Slide 1

Slide 1

Deployen op vrijdagmiddag zonder stress Using Testcontainers, Playwright & Azure DevOps Bas Stoker, 11 april 2024

Slide 2

Slide 2

Slide 3

Slide 3

About me • Fullstack developer bij de NS • 20 jaar ervaring met software development • Enthousiast over toekomst van frontenddevelopment en test-technieken in het bijzonder

Slide 4

Slide 4

Slide 5

Slide 5

Slide 6

Slide 6

Inhoud • Trends in testing • CI/CD en DevOps • Testcontainers • Playwright • Case-study: NS Bijsturing Materieel (BAM) • Live demo systeemtest ⚡ • Tips & Tricks

Slide 7

Slide 7

Slide 8

Slide 8

Continuous Deployment Continuous testing? • Veel verantwoordelijkheid bij het development-team • Vaak geen dedicated testers meer • Resultaat: Alle testen zijn geautomatiseerd

Slide 9

Slide 9

Slide 10

Slide 10

Slide 11

Slide 11

“Write tests. Not too many. Mostly Integration” • Quote van Kent C. Dodds • Hoger in de testpyramide wordt het vertrouwen in de test hoger • Bestaande aannames dat e2e-tests duur zijn om te onderhouden kloppen niet meer https://kentcdodds.com/blog/write-tests

Slide 12

Slide 12

“You’re probably mocking too much” https://clayshentrup.medium.com/tests-dependencies-65f592a46529

Slide 13

Slide 13

Testcontainers Alternatief voor… • In-memory alternatieven zoals H2 als database • Shell scripts • Docker compose • Zelf vanuit Java Docker-api aanroepen (veel werk)

Slide 14

Slide 14

Testcontainers Testen met echte dependencies • Docker Containers kennen we al van o.a. Kubernetes • Open Source library, begonnen als Java library • Totale lifecycle van Docker containers: • Startup • Cleanup

Slide 15

Slide 15

Slide 16

Slide 16

Testcontainers

Slide 17

Slide 17

Veel bestaande containers

Slide 18

Slide 18

Testcontainers Docker

Slide 19

Slide 19

Slide 20

Slide 20

• Zit een supergoed team achter van Microsoft • Support voor MacOS / Linux / Windows • Browsers worden automatisch gemanaged • Sneller en minder aky dan bijv. Selenium fl • Handige functies zoals trace, slomo, en video/screenshot opnames

Slide 21

Slide 21

Slide 22

Slide 22

Slide 23

Slide 23

Project: NS nieuwbouw BAM • Realtime bijsturen van al het materieel (Intercity / Sprinters / Internationaal) • Project van vier agile DevOps teams • Microservices-architectuur • Meeste data asynchroon via queues: • GPS-vertragingsdata van treinen • Wijzigingen in de materieelplanning

Slide 24

Slide 24

Slide 25

Slide 25

BAM Client • Verantwoordelijkheid van 1 team • Bestaat uit twee microservices • Backend for frontend (ontvangen MQ-berichten, caching etc…) • Frontend (ReactJS SPA, ontsloten via NGINX web server)

Slide 26

Slide 26

Project: BAM Client

Slide 27

Slide 27

BAM Client Systeemtest • We testen exact de images die ook naar Productie gaan • Con g o.b.v. Env Variables (12 factor app) • Alleen de testcode en de browser draaien niet in Docker • Alleen Docker en een JVM nodig, Playwright installeert de browsers • Lokaal draai je precies dezelfde test als in de CI/CD-pipeline fi https://12factor.net/

Slide 28

Slide 28

Slide 29

Slide 29

Slide 30

Slide 30

Slide 31

Slide 31

Demo time

Slide 32

Slide 32

Benefits • Als team geeft deze test als extra vangnet veel vertrouwen • Ook handig om lokaal de app te draaien tijdens development / debugging • Testen van bijv. een Keycloak-upgrade kan in 5 minuten • Genereren van documentatie die altijd up-to-date is met screenshots etc.

Slide 33

Slide 33

Next steps • Opleidingsdoeleinden • Genereren van documentatie die altijd up-to-date is met screenshots etc. • Duurtest toevoegen (bijv. ’s nachts uitvoeren)

Slide 34

Slide 34

Tips & Tricks Playwright • Demo’s op YouTube • playwright.dev

Slide 35

Slide 35

Tips & Tricks Testcontainers • Presentatie’s op Youtube (Devoxx) • https://github.com/testcontainers • Localstack voor AWS services https://www.youtube.com/watch?v=0kXEwo0XFaY

Slide 36

Slide 36

Azure DevOps Pipelines

Slide 37

Slide 37

Azure DevOps Pipelines

Slide 38

Slide 38

Vragen?

Slide 39

Slide 39

Slide 40

Slide 40

Slide 41

Slide 41

Slide 42

Slide 42

Slide 43

Slide 43

Controlling Your Environment Makes You Happy

Slide 44

Slide 44

Coverage 🚫