Home

03 Grundlagen des Testens: Coverage Selbststudium-Leitfaden

self-study coverage testing c0 c1 pytest-cov ci-cd chapter-03

Code Coverage Selbststudium-Leitfaden

Willkommen

Dieser Leitfaden hilft dir, Code Coverage-Konzepte und -Werkzeuge durch strukturiertes Selbststudium zu meistern. Die Materialien sind für zwei 90-minütige Sitzungen konzipiert, aber du kannst in deinem eigenen Tempo arbeiten.

Was du lernen wirst:


Lernpfad-Übersicht

Hinweis zu den Zeitangaben: Die unten angegebenen Dauern dienen nur zur Orientierung. Du musst eine Übung nicht abbrechen, nur weil die vorgeschlagene Zeit abgelaufen ist—nimm dir die Zeit, die du brauchst, um das Material zu verstehen. Ebenso kannst du, wenn du schneller fertig bist, direkt zur nächsten Übung übergehen.

Sitzung 1: Theorie & Analyse (~90 min)

Schritt Übung Dauer Fokus
1 Diesen Leitfaden lesen 10 min Orientierung
2 Coverage Konzepte Quiz 25 min Verständnis von C0, C1, Subsumption testen
3 CFG Tracing Übung 35 min Testfälle durch Kontrollflussgraphen verfolgen
4 Coverage Detective Teil 1 20 min Coverage-Reports analysieren, Lücken identifizieren

Sitzung 2: Praxis & Anwendung (~90 min)

Schritt Übung Dauer Fokus
5 Coverage Detective Teil 2 25 min Tests für fehlende Branches entwerfen
6 GitHub Classroom Aufgabe 65 min Praxis: Coverage an echtem Code verbessern

Wie du jede Übung meisterst

Lies vor jeder Übung die angegebenen Vorlesungsabschnitte. Klicke auf die Links, um direkt zum relevanten Material zu springen.

Coverage Konzepte Quiz

Zuerst lesen:

Aus Kapitel 03 (TDD und CI): TDD und CI:

Aus Kapitel 03 (Testtheorie und Coverage): Testtheorie & Coverage:

Fokusgebiete: Definitionen, Subsumption-Hierarchie, Coverage-Grenzen


CFG Tracing Übung

Zuerst lesen:

Aus Kapitel 03 (Testtheorie und Coverage): Testtheorie & Coverage:

Fokusgebiete: CFGs lesen, Pfade verfolgen, C0 und C1 berechnen


Coverage Detective Übung

Zuerst lesen:

Aus Kapitel 03 (TDD und CI): TDD und CI:

Aus Kapitel 03 (Testtheorie und Coverage): Testtheorie & Coverage:

Fokusgebiete: “Missing”-Zeilen interpretieren, Zeilen auf Bedingungen abbilden, gezielte Tests entwerfen


GitHub Classroom Aufgabe

Aufgaben-Link: Coverage Improvement Übung akzeptieren

Zuerst lesen:

Aus Kapitel 03 (TDD und CI): TDD und CI:

Voraussetzungen für diese Übung:

Fokusgebiete: Coverage lokal ausführen, Schwellenwert erreichen, CI-Feedback-Schleife


Zusammenfassung der Schlüsselkonzepte

Statement Coverage (C0)

Der Prozentsatz der Code-Anweisungen, die von deinen Tests ausgeführt werden.

def classify(x):
    if x > 0:           # Anweisung 1
        return "pos"    # Anweisung 2
    else:
        return "neg"    # Anweisung 3

Nur classify(5) testen → C0 = 2/3 = 67%

Branch Coverage (C1)

Der Prozentsatz der Entscheidungsergebnisse (True/False-Branches), die ausgeführt werden.

Nur classify(5) testen → C1 = 1/2 = 50% (nur True-Branch genommen)

Warum C1 C0 subsumiert

100% Branch Coverage garantiert 100% Statement Coverage, weil das Abdecken aller Branches erfordert, alle Anweisungen innerhalb dieser Branches auszuführen.

Aber umgekehrt gilt das NICHT! Hohe C0 garantiert keine hohe C1.


Häufige Fallstricke

1. 100% Coverage nachjagen

100% Coverage bedeutet NICHT fehlerfreier Code:

def test_bad():
    result = calculate_discount(100, True, "VIP")
    assert result is not None  # Schwache Assertion!

2. Branch Coverage ignorieren

Du kannst 100% C0 haben und trotzdem ganze Branches verpassen:

def process(data, validate=True):
    if validate:
        check_data(data)  # Immer mit validate=True getestet
    return transform(data)

3. Coverage ohne Assertions

Code ausführen ist nicht gleich testen - du brauchst aussagekräftige Assertions.


Wie du Feedback bekommst

Während Quizzes und Übungen

In GitHub Classroom


Kurzreferenz

pytest-cov Befehle

# Basis-Coverage
uv run pytest --cov=src

# Fehlende Zeilen anzeigen
uv run pytest --cov=src --cov-report=term-missing

# Fehlschlagen wenn unter Schwellenwert
uv run pytest --cov=src --cov-fail-under=80

# Branch Coverage Modus
uv run pytest --cov=src --cov-branch

Coverage Report Spalten

Spalte Bedeutung
Stmts Gesamtzahl ausführbarer Anweisungen
Miss Anweisungen NICHT ausgeführt
Cover Prozentsatz ausgeführt
Missing Nicht abgedeckte Zeilennummern

Wichtige Formeln

Statement Coverage (C0):

\[C0 = \frac{\text{Ausgeführte Anweisungen}}{\text{Gesamte Anweisungen}} \times 100\%\]

Branch Coverage (C1):

\[C1 = \frac{\text{Ausgeführte Branches}}{\text{Gesamte Branches}} \times 100\%\]

Subsumption:

\(100\% \text{ C1} \Rightarrow 100\% \text{ C0}\) (aber NICHT umgekehrt)


Geschätzte Gesamtzeit

Komponente Zeit
Dieser Leitfaden 10 min
Coverage Konzepte Quiz 25 min
CFG Tracing Übung 35 min
Coverage Detective Übung 45 min
GitHub Classroom Aufgabe 65 min
Gesamt ~3 Stunden

Bereit loszulegen?

  1. Lies die Vorlesungsabschnitte, die oben für deine erste Übung verlinkt sind
  2. Versuche die Übung ohne auf Antworten zu schauen
  3. Überprüfe dein Verständnis mit den aufklappbaren Lösungen
  4. Gehe zur nächsten Übung wenn du bereit bist

Beginne mit dem Coverage Konzepte Quiz nachdem du die empfohlenen Vorlesungsabschnitte gelesen hast.

Viel Erfolg!

© 2026 Dominik Mueller   •  Powered by Soopr   •  Theme  Moonwalk