31
Hendrik Lösch [email protected] just-about.net @HerrLoesch

Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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

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

„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

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

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

Vertrauen

AufwandFeedback

Page 7: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

„Klassisches“ TDD

Page 8: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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

• 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

({} → 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

DEMO!!!

Page 12: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

„Pragmatisches“ TDD

Page 13: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

DEMO!!!

Page 14: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

Vertrauen

AufwandFeedback

Page 15: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

FastIsolatedIndependentRepeatableSelf-VerifyingTimely

Page 16: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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
Page 18: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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

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
Page 21: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

Unit-Test???

Page 22: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable
Page 23: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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

Unit-Test???

Page 25: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable
Page 26: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

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

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
Page 29: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable
Page 30: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable
Page 31: Hendrik Lösch - cleancode-days.de · Transformation Priority Premise. DEMO!!! „Pragmatisches“ TDD. DEMO!!! Vertrauen. Aufwand. Feedback. Fast Isolated Independent Repeatable

Zusammenfassung