Slide 1

Slide 1 text

Testing von 
 TYPO3-Extension Oliver Klee, 2024-10 @[email protected] | [email protected]

Slide 2

Slide 2 text

Über mich Oliver „Oli“ Klee #bonn #workshop-teacher (seit 1999) #extension-dev (seit 2005) #unit-testing-guy (seit 2008) #phpstan-guy #best-practices-team #game-cooking #metal

Slide 3

Slide 3 text

Workshops mit mir Extension-Entwicklung Test-driven-Development TYPO3-Extensions testen QA-Automatisierung Git & Composer Refactoring

Slide 4

Slide 4 text

Unit- Tests?

Slide 5

Slide 5 text

Manuelles Testen ist mühsam

Slide 6

Slide 6 text

Automatisierte Tests sind schnell

Slide 7

Slide 7 text

Tests für den 
 TYPO3-Core

Slide 8

Slide 8 text

Unit-Tests
 406 (144) Tests/s

Slide 9

Slide 9 text

Functional-Tests
 8,13 (1,97) Tests/s

Slide 10

Slide 10 text

Acceptance-Tests
 0,009 (0,003) Tests/s

Slide 11

Slide 11 text

Sicher sein, dass der Code das Richtige tut

Slide 12

Slide 12 text

Verhindern, dass deine Änderungen etwas anderes kaputt machen

Slide 13

Slide 13 text

Verhindern, dass andere Leute deinen Code kaputtmachen

Slide 14

Slide 14 text

Auch bei komplexen 
 Projekten nichts 
 kaputt machen

Slide 15

Slide 15 text

Baue ein Sicherheitsnetz fürs Refactoring oder für 
 TYPO3-Updates

Slide 16

Slide 16 text

Verbessere die Struktur des Codes

Slide 17

Slide 17 text

Finde die Ursache von Bugs

Slide 18

Slide 18 text

Grün fühlt sich gut an!

Slide 19

Slide 19 text

Lasst uns
 ein paar Begriffe
 klarstellen

Slide 20

Slide 20 text

Die zwei Programmier-Modi sauber hacky

Slide 21

Slide 21 text

Testsuite Testcase Test Assertion Test Test Testcase

Slide 22

Slide 22 text

Lebenszyklus eines Tests new FooTest(); setUp(); /** @test */ lifeIsGood(); tearDown();

Slide 23

Slide 23 text

4 Test-Phasen Setup (aufbauen) setUp()
 Code in der Testmethode Exercise (ausführen) Methodenaufruf Verify (prüfen) assert…() Teardown (abbauen) tearDown()

Slide 24

Slide 24 text

Test-driven-Development Test
 schreiben Code
 schreiben refactoren

Slide 25

Slide 25 text

Auswirkungen von TDD höhere Testabdeckung minimaler 
 Code erst denken, 
 dann coden Tests testen, was der Code tun soll 
 (anstatt, 
 was er tut) fokussierter coden sauberere Code-Struktur

Slide 26

Slide 26 text

Test-Level http:// fi lipdefar.com/2015/06/tested-be-thy-name.html

Slide 27

Slide 27 text

Unit-Tests sind klein und schnell

Slide 28

Slide 28 text

Integrationstests testen das Zusammenspiel von Komponenten in TYPO3: 
 „Functional Tests“

Slide 29

Slide 29 text

Systemtests testen das große Ganze

Slide 30

Slide 30 text

Test-Typen

Slide 31

Slide 31 text

Blackbox-Tests testen das nach außen Sichtbare

Slide 32

Slide 32 text

Whitebox-Tests wie genau es innen funktioniert testen,

Slide 33

Slide 33 text

Akzeptanztests Selenium Codeception

Slide 34

Slide 34 text

Anti- 
 Zombie- 
 Tests-

Slide 35

Slide 35 text

Regressionstests

Slide 36

Slide 36 text

Smoketests

Slide 37

Slide 37 text

Smoketests

Slide 38

Slide 38 text

Story-Tests für Behavior-Driven Developmen t (BDD) Behat Codeception

Slide 39

Slide 39 text

Die Test-Pyramide Unit Functional/
 Integration Acceptance System Photo by Eugene Tkachenko on Unsplash: https://unsplash.com/photos/TF47p5PHW18

Slide 40

Slide 40 text

Tests benennen

Slide 41

Slide 41 text

Benutze aussagekräftige Test-Namen classCanBeInstantiated setTitleSetsTitle setSizeWithZeroThrowsException hasTitleForEmptyTitleReturnsFalse Benenne das Verhalten. Nenne die Vorbedingungen. Nenne die Methode. Benutze nicht „works“ oder „correctly“. measureFrubbleWorksCorrectly