Test-first Codierung

Test-first Codierung

Ralf Westphal
This is a sample of the book's content.Buy on Leanpub

Table of Contents

Zum Geleit›

  • Zum Geleit
  • Motivation
    • Programming with Ease
    • Das Softwareuniversum
  • Einleitung
    • Anforderungskategorien
    • It’s the productivity, stupid!
    • Produktivitätskiller
    • Fehlende Korrekheit
    • Fehlender Wert
    • Fehlende Ordnung
    • Zusammenfassung

Die Methode›

  • 01 - Die Anforderung-Logik Lücke
    • Logik - Der Stoff aus dem Verhalten entsteht
    • Funktionalität
    • Effizienz I - Effizienz durch Algorithmen und Datenstrukturen
    • Effizienz II - Effizienz durch Verteilung
    • Zusammenfassung
    • Von den Anforderungen zur Logik
    • Logik schwer definierbar
    • Die Phasen der Programmierung
    • Zusammenfassung
    • Übungsaufgaben
  • 02 - Vorläufig codieren im Chaos
    • Das Nein der Codierung
    • Prototyping to the Rescue
    • Die Schwierigkeit der Umsetzung einstufen
    • Zusammenfassung
  • 03 - Sofort codieren in der Trivialität
    • Trivialität als Gegenteil von Chaos
    • Vorsicht vor Selbstüberschätzung!
  • 04 - Schrittweise codieren in der Einfachheit
    • Trittsteine legen
    • Pear Programming
    • Die Kunst der Problemskalierung
    • Sichtbarkeit von Variationsdimensionen
    • Variationen ordnen
    • Am Beispiel
    • Zusammenfassung
    • Übungsaufgaben
  • 05 - Komplementär codieren in der Kompliziertheit
    • Zerlegung in komplementäre Teilprobleme
    • Funktionen repräsentieren Lösungen
    • Integration Operation Segregation Principle
    • Zerlegungsbeispiel I
    • Leitfragen für die Zerlegung
    • Analyse & Entwurf
    • Codierung
    • Reflexion
    • Buddelschiff Programmierung
    • Zerlegungsbeispiel II
    • Bottom-up Codierung
    • Reflexion
    • Zusammenfassung
    • Übungsaufgaben
  • 06 - Tests als Treiber der Modularisierung
    • Akzeptanztests
    • Triviale Probleme
    • Einfache Probleme
    • Komplizierte Probleme
    • Gerüsttests
    • Gerüsttestfälle erhalten I - Akzeptanztests
    • Gerüsttestfälle erhalten II - Modultests
    • Zusammenfassung
    • Übungsaufgaben
  • 07 - Testbarkeit steigern mit Surrogaten
    • Logik dynamisch binden
    • Statische Bindung
    • Dynamische Bindung mit Funktionszeigern
    • Dynamische Bindung mit Objekten
    • Zusammenfassung
    • Surrogate in Tests einsetzen
    • Extraktion einer Klasse und Abstraktion mit Interface
    • Injektion einer Objektfabrik
    • Surrogate unterschieben
    • Reflexion
    • IOSP over Surrogates
    • Extraktion eines Belangs
    • Refactoring to Functional Core
    • Schritte in die Objektorientierung
    • Zusammenfassung
    • Übungsaufgaben
  • 08 - Experimentell codieren in der Komplexität
    • Experimentelles Vorgehen im Testcode
    • TDD as if you meant it (TDDaiymi)
    • Beispiel #1: FromRoman revisted
    • Inkrement 1
    • Inkrement 2
    • Inkrement 3
    • Inkrement 4
    • Inkrement 5
    • Inkrement 6
    • Reflexion
    • Beispiel #2: Eine ruhige Bowlingkugel schieben
    • Analyse
    • Codierung
    • Reflexion
    • Zusammenfassung
    • Übungsaufgaben
  • 09 - Test-first refaktorisieren
    • Frustrierende Lektüre
    • Fehlende Bedeutung
    • Fehlende Zusammenhänge
    • Fehlende Testbarkeit
    • Warum refaktorisieren?
    • Softwarewartung erhält Ordnung proaktiv
    • Schrittweise aufräumen I
    • Bestimme das System-to-Refactor (S2R)
    • Refactor to Test-First
    • Schrittweise aufräumen II
    • Refactor to IOSP
    • Refactor to Modules
    • Dokumentieren
    • Reflexion
    • Zusammenfassung
    • Übungsaufgaben
  • 10 - Finale mit Testmatrix

Anhang - Musterlösungen›

  • Musterlösung: 01 - Die Anforderung-Logik Lücke
    • Aufgabe 1 - Gründe für automatisiertes Testen
    • Beispielhafte Gründe für die Testautomatisierung
    • Beispielhafte Gründe für test-first Testautomatisierung
    • Aufgabe 2 - Eine Anwendung test-first entwickeln
    • Analyse
    • Entwurf der Persistenz
    • Codierung
  • Musterlösung: 04 - Schrittweise codieren in der Einfachheit
    • Aufgabe 1 - Einschätzung des Schwierigkeitsgrades
    • Mathematischen Ausdruck berechnen
    • Game-of-Life
    • NQueen
    • Binärzahlenkonvertierung
    • Aufgabe 2 - Römische Zahlen in Dezimalzahlen wandeln
    • Verständnis dokumentieren
    • Inkrementelle Testfälle definieren
    • Test-first codieren
    • Reflexion
  • Musterlösung: 05 - Komplementär codieren in der Kompliziertheit
    • Aufgabe 1 - Römische Zahlen kompliziert wandeln
    • Zerlegung für Lösungsansatz 1
    • Zerlegung für Lösungsansatz 2
    • Reflexion
    • Aufgabe 2 - Game of Life
    • Verständnis dokumentieren
    • Schrittweise zerlegen
    • Akzeptanztests
    • Teilprobleme bottom-up lösen
    • Reflexion
  • Musterlösung: 06 - Tests als Treiber der Modularisierung
    • Analyse
    • Inkrementelle Teilprobleme
    • Zerlegung der Inkremente inkl. Codierung
    • Akzeptanztest
    • Inkrement I
    • Inkrement II
    • Inkrement III
    • Inkrement IV
    • Inkrement V
    • Reflexion
    • Refaktorisierung mit nachträglicher Modularisierung
    • Zusammenfassung
  • Musterlösung: 07 - Testbarkeit steigern mit Surrogaten
    • Aufgabe 1 - CSV-Daten tabellieren
    • Analyse
    • Planung
    • Umsetzung
    • Reflexion
    • Aufgabe 2 - Game-of-Life
    • Analyse
    • Planung
    • Umsetzung
    • Reflexion
    • Zusammenfassung
  • Musterlösung: 08 - Experimentell codieren in der Komplexität
    • Analyse
    • Planung
    • Zerlegung in Teilprobleme
    • Inkrementelle Testfälle für die komplexen Probleme
    • Codierung
    • Akzeptanztests
    • TDDaiymi - Lange Worte zerschneiden
    • TDDaiymi - Zeilen zusammensetzen
    • Triviale Probleme lösen
    • Integration
    • Refaktorisierung in Module
    • Reflexion
    • Zurückhaltung als Tugend
  • Musterlösung: 09 - Test-first refaktorisieren
    • Abgrenzung des System to Refactor (S2R)
    • Characterization Test
    • S2R Entry Point testbar machen
    • Console kapseln
    • Characterization Test aufsetzen
    • Verantwortlichkeiten identifizieren
    • Entwurf der neuen Codestruktur
    • Funktionen extrahieren
    • Kommandozeilenanalyse
    • HexDump I - Entzerrung der Logik
    • HexDump II - Refactor to IOSP
    • Refactor to Modules
    • Bonus Verbesserungen
    • Auflösung einer logischen Abhängigkeit
    • Fehlerkorrektur in der Ausgabe
    • Zusammenfassung

Anmerkungen›

    Test-first Codierung/overview

    Test-first Codierung

    course_overview

    Du willst Clean Code mit hoher Testabdeckung schreiben? Das gelingt dir am besten mit einem systematischen und eklektischen test-first Vorgehen.

    count_parts
    ·
    count_chapters
    begin_reading
    download
    part_count

    Zum Geleit3 chapters

    Begin part ›
    1. Zum Geleit

    2. Motivation

    3. Einleitung

    part_count

    Die Methode10 chapters

    Begin part ›
    1. 01 - Die Anforderung-Logik Lücke

    2. 02 - Vorläufig codieren im Chaos

    3. 03 - Sofort codieren in der Trivialität

    4. 04 - Schrittweise codieren in der Einfachheit

    5. 05 - Komplementär codieren in der Kompliziertheit

    6. 06 - Tests als Treiber der Modularisierung

    7. 07 - Testbarkeit steigern mit Surrogaten

    8. 08 - Experimentell codieren in der Komplexität

    9. 09 - Test-first refaktorisieren

    10. 10 - Finale mit Testmatrix

    part_count

    Anhang - Musterlösungen7 chapters

    Begin part ›
    1. Musterlösung: 01 - Die Anforderung-Logik Lücke

    2. Musterlösung: 04 - Schrittweise codieren in der Einfachheit

    3. Musterlösung: 05 - Komplementär codieren in der Kompliziertheit

    4. Musterlösung: 06 - Tests als Treiber der Modularisierung

    5. Musterlösung: 07 - Testbarkeit steigern mit Surrogaten

    6. Musterlösung: 08 - Experimentell codieren in der Komplexität

    7. Musterlösung: 09 - Test-first refaktorisieren

    part_count

    Anmerkungen0 chapters

    Begin part ›