hendrik lösch - cleancode-days.de · transformation priority premise. demo!!! „pragmatisches“...
TRANSCRIPT
![Page 1: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/1.jpg)
Hendrik Lösch [email protected]@HerrLoesch
![Page 2: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/2.jpg)
Test Driven Development Mysterium und Wagnis?!?
![Page 3: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/3.jpg)
„Wer als einziges Werkzeug einen Hammerhat, sieht in jedem Problem einen Nagel.“
Paul Watzlawick
![Page 4: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/4.jpg)
Test
Implementierung
Refaktorisierung
![Page 5: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/5.jpg)
Hump of Pain“New teams are often expected to adopt practices such as TDD
and refactoring, which are difficult to learn. Without good coaching, plenty of time to master new skills, and string
management support, they're easily discouraged.”
Quelle: Agile Testing: A Practical Guide for Testers and Agile Teams
![Page 6: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/6.jpg)
Vertrauen
AufwandFeedback
![Page 7: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/7.jpg)
„Klassisches“ TDD
![Page 8: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/8.jpg)
Test
Implementierung
Refaktorisierung
![Page 9: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/9.jpg)
• Schreibe nur Code, der verlangt wird.• Entwickle schrittweise Deinen Code.• Wähle möglichst kleine Schritte.• Je allgemeingültiger der Code desto spezifischer der
Test.
Die Regeln
![Page 10: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/10.jpg)
({} → nil)(nil → constant)(constant → constant+)(constant → scalar) (statement → statements)(unconditional → if) (scalar → array)(array → container)(statement → recursion)(if → while)(expression → function)(variable → assignment)
→ Keinen Code in Code umwandeln, der nichts implementiert.→ Einführen einer Konstanten.→ Einfache Konstante in komplexere Konstante überführen.→ Konstante durch Variable oder Argument ersetzen.→ Anweisung durch zusätzliche Anweisungen erweitern.→ Bedingungslose Codepfade in bedingte Codepfade ändern.→ Zahlenwert in Array wandeln.→ Array in eine Liste oder komplexeren Container überführen.→ Anweisung rekursiv umsetzen.→ Fallunterscheidungen in Schleifen ändern.→ Ausdruck durch Funktion ersetzen.→ Variablen mit Zuweisungen erweitern.
Transformation Priority Premise
![Page 11: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/11.jpg)
DEMO!!!
![Page 12: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/12.jpg)
„Pragmatisches“ TDD
![Page 13: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/13.jpg)
DEMO!!!
![Page 14: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/14.jpg)
Vertrauen
AufwandFeedback
![Page 15: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/15.jpg)
FastIsolatedIndependentRepeatableSelf-VerifyingTimely
![Page 16: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/16.jpg)
Pragmatisch Klassisch
Eher Test First als Test DrivenEher Komponententests als Unit-TestsEher interaktionsbasierend als statusbasierend
Eher Test Driven als Test First Eher Unit-Tests als Komponententests Eher statusbasierend als interaktionsbasierend
public void Push(int value){}
public void Push(int value){
content = value;}
public void Push(int value){
Count++;content[Count] = value;
}
public void Push(int value){
Count++;content[Count] = value;
}
![Page 17: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/17.jpg)
![Page 18: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/18.jpg)
Red-Green-Implement
Erfolg
Implementierung
Refaktorisierung
Fehlschlag
![Page 19: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/19.jpg)
Systemtest
Integrationstest
Unit-Test
Quelle: Succeeding with Agile
![Page 20: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/20.jpg)
![Page 21: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/21.jpg)
Unit-Test???
![Page 22: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/22.jpg)
![Page 23: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/23.jpg)
Unit-TestSystemtest
Integrationstest
![Page 24: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/24.jpg)
Unit-Test???
![Page 25: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/25.jpg)
![Page 26: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/26.jpg)
Systemtest
Integrationstest
Komponententest
Unit-Test
![Page 27: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/27.jpg)
Systemtests
Integrationtests
Komponententests
Unit-Tests
Systemtests
Integrationstests
Komponententests
Unit-Tests
![Page 28: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/28.jpg)
![Page 29: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/29.jpg)
![Page 30: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/30.jpg)
![Page 31: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable](https://reader034.vdocuments.net/reader034/viewer/2022042402/5f1263f3a6e2a9068d352a17/html5/thumbnails/31.jpg)
Zusammenfassung