Sektion 09 · Qualitätssicherung

09 — Tests &
Qualitätssicherung

Stelle sicher, dass dein KI-Agent-Harness fehlerfrei läuft. Lerne alle 49 Tests auszuführen, den Parity Audit zu interpretieren und häufige Fehler zu beheben.

49Tests
100%Code Coverage
~2Min Laufzeit
01

Warum Tests wichtig sind

Tests sind das Sicherheitsnetz deines KI-Agent-Systems. Sie stellen sicher, dass nach jeder Änderung alles weiterhin funktioniert.

Anfänger 5 Min

Die drei Säulen der Qualitätssicherung

Das Claw Code Projekt verfügt über ein umfassendes Test-System, das drei Ebenen abdeckt:

SäuleBeschreibungAnzahl
Unit TestsTesten einzelne Funktionen und Klassen isoliert~35
Integration TestsTesten das Zusammenspiel mehrerer Module~10
Parity AuditVergleicht Python-Port mit TypeScript-Original4 Metriken

Was passiert ohne Tests?

Ohne Tests können folgende Probleme unentdeckt bleiben:

  • Regressionsfehler — Eine Änderung bricht existierende Funktionalität
  • Snapshot-Divergenz — Die JSON-Referenzdaten sind nicht mehr synchron
  • Routing-Fehler — Prompts werden nicht mehr korrekt zugeordnet
  • Session-Datenverlust — Persistenz funktioniert nicht wie erwartet
💡
Pro-Tipp
Führe Tests immer aus, bevor du Änderungen committest. So vermeidest du, dass fehlerhafter Code in das Repository gelangt.
02

Alle Tests ausführen

Führe die komplette Testsuite aus und verstehe die verschiedenen Ausführungsmodi.

Kern 5 Min

Der Standard-Befehl

Der empfohlene Weg, alle Tests auszuführen:

bash
# Alle Tests mit detailliertem Output
$ python3 -m unittest discover -s tests -v

Alternative Ausführungsmodi

1
Kompakte Ausgabe (ohne -v)
Zeigt nur Punkte für erfolgreiche Tests und Buchstaben für Fehler:
python3 -m unittest discover -s tests
2
Einzelne Testdatei ausführen
Teste nur einen bestimmten Bereich:
python3 -m unittest tests.test_porting_workspace -v
3
Einzelnen Testfall ausführen
Sehr spezifisch für Debugging:
python3 -m unittest tests.test_porting_workspace.TestWorkspaceBasics.test_commands_load -v

Test-Abbruch bei erstem Fehler

Für schnelles Debugging verwende --failfast oder -f:

bash
$ python3 -m unittest discover -s tests -v --failfast
Erfolgskriterium
Am Ende solltest du sehen: "Ran 49 tests" gefolgt von "OK". Das bedeutet, alle Tests wurden erfolgreich ausgeführt.
03

Test-Output interpretieren

Verstehe, was die Testausgabe dir mitteilt und wie du Probleme identifizierst.

Kern 5 Min

Ein typischer erfolgreicher Durchlauf

bash
test_commands_load (test_porting_workspace.TestWorkspaceBasics) ... ok
test_tools_load (test_porting_workspace.TestWorkspaceBasics) ... ok
test_runtime_bootstrap (test_porting_workspace.TestRuntimeBasics) ... ok
test_session_management (test_porting_workspace.TestRuntimeBasics) ... ok
... (45 weitere Tests)

----------------------------------------------------------------------
Ran 49 tests in 1.847s

OK

Die Test-Struktur verstehen

Jede Testzeile folgt diesem Muster:

test_<name> (<datei>.<klasse>) ... <status>
StatusBedeutungFarbe
okTest erfolgreich bestandenGrün
FAILTest fehlgeschlagen (Assertion Error)Rot
ERRORTest konnte nicht ausgeführt werden (Exception)Rot
SKIPTest wurde übersprungen (optional)Gelb

Die Testklassen im Überblick

TestklasseZweckAnzahl
TestWorkspaceBasicsGrundlegende Ladefunktionen~8
TestRuntimeBasicsRuntime-Initialisierung~6
TestCommandLoadingBefehlskatalog-Validierung~10
TestToolLoadingToolkatalog-Validierung~8
TestPromptRoutingPrompt-Routing-Algorithmus~7
TestSessionManagementSession-Lebenszyklus~5
TestTurnLoopsMulti-Turn-Schleifen~5
💡
Tipp für große Ausgaben
Bei vielen Tests kann die Ausgabe sehr lang werden. Leite sie in eine Datei um: python3 -m unittest discover -s tests -v > test_results.txt 2>&1
04

Parity Audit durchführen

Vergleiche den Python-Port mit dem ursprünglichen TypeScript-System und stelle sicher, dass alle Features übernommen wurden.

Fortgeschritten 5 Min

Was ist der Parity Audit?

Der Parity Audit überprüft, wie vollständig der Python-Port das ursprüngliche TypeScript-System abbildet. Er vergleicht:

  • Datei-Abdeckung — Welche Dateien wurden portiert?
  • Verzeichnis-Struktur — Sind alle Module vorhanden?
  • Befehls-Einträge — Alle ~150 Befehle verfügbar?
  • Tool-Einträge — Alle ~100 Tools verfügbar?

Audit ausführen

bash
$ python3 -m src.main parity-audit

╔══════════════════════════════════════════════════════════════╗
PARITY AUDIT REPORT
╠══════════════════════════════════════════════════════════════╣
║ Root-Datei-Abdeckung: 85% (17/20 Dateien) ║
║ Verzeichnis-Abdeckung: 90% (9/10 Verzeichnisse) ║
║ Befehls-Einträge: 100% (152/152 Befehle) ║
║ Tool-Einträge: 100% (98/98 Tools) ║
╚══════════════════════════════════════════════════════════════╝

# Mit detaillierten Informationen
$ python3 -m src.main parity-audit --verbose

Die vier Metriken erklärt

1. Root-Datei-Abdeckung

Zeigt, wie viele der Top-Level-Dateien aus dem TypeScript-Original im Python-Port vorhanden sind. Eine Abdeckung von 85% bedeutet, dass einige Dateien (z.B. Konfigurationsdateien oder UI-Komponenten) noch nicht portiert wurden.

2. Verzeichnis-Abdeckung

Zeigt, wie viele Verzeichnisse/Module portiert wurden. Eine hohe Abdeckung ist wichtig für die strukturelle Parität.

3. Befehls-Einträge

Sollte immer 100% sein, da alle Befehle aus dem Snapshot geladen werden. Wenn hier weniger als 100% steht, ist möglicherweise die commands_snapshot.json beschädigt.

4. Tool-Einträge

Ebenfalls sollte immer 100% sein. Zeigt die Anzahl der verfügbaren Tools aus dem Snapshot.

⚠️
Wichtig
Eine 100%ige Parity ist nicht immer das Ziel. Einige TypeScript-spezifische Features (z.B. bestimmte UI-Komponenten) werden in einem Python-Port möglicherweise absichtlich nicht übernommen.
05

Was wird getestet?

Ein detaillierter Blick auf die Testabdeckung und welche Komponenten geprüft werden.

Kern 10 Min

Testabdeckung nach Modulen

KomponenteWas wird geprüftKritikalität
commands.pyAlle ~150 Befehle laden korrekt, Validierung der Struktur🔴 Hoch
tools.pyAlle ~100 Tools laden korrekt, Permission-Levels🔴 Hoch
runtime.pyPrompt-Routing, Token-Scoring, Matching-Algorithmus🔴 Hoch
query_engine.pySession-Erstellung, Nachrichtenverarbeitung🟡 Mittel
session_store.pyPersistenz, Laden/Speichern von Sessions🟡 Mittel
context.pyWorkspace-Erkennung, Dateistruktur🟢 Normal
setup.pyBootstrap-Phasen, Trust-Gating🟡 Mittel
main.pyAlle 24 CLI-Befehle sind aufrufbar🔴 Hoch

Die 24 CLI-Befehle im Test

Jeder der folgenden Befehle wird auf Ausführbarkeit geprüft:

bash
# Informationsbefehle
summary, manifest, subsystems, version, doctor

# Katalog-Befehle
commands, tools, show-command, show-tool

# Runtime-Befehle
route, bootstrap, turn-loop, flush-transcript, load-session

# Audit & Qualität
parity-audit, bootstrap-graph, health

# Hilfe
help, intro

JSON-Snapshot-Validierung

Die Tests überprüfen, dass die Referenzdaten gültig sind:

  • commands_snapshot.json — Schema-Validierung, Pflichtfelder, Eindeutigkeit der Namen
  • tools_snapshot.json — Schema-Validierung, Permission-Level-Validität
  • Kreuzreferenzen — Keine verwaisten Referenzen zwischen Dateien

Session-Management Tests

Diese Tests prüfen den kompletten Lebenszyklus:

  1. Session erstellen mit QueryEnginePort.from_workspace()
  2. Nachricht senden mit submit_message()
  3. Transkript aktualisieren
  4. Session persistieren mit persist_session()
  5. Session laden mit load_session()
  6. Datenintegrität verifizieren
Ziel der Tests
Jede wichtige Funktion hat mindestens einen Test. Bei Änderungen am Code kannst du sofort sehen, ob etwas kaputt gegangen ist.
06

Häufige Test-Fehler

Typische Fehlerursachen und ihre Lösungen beim Ausführen der Tests.

Fortgeschritten 10 Min

Fehler 1: ModuleNotFoundError

bash
ModuleNotFoundError: No module named 'src'

Ursache: Du befindest dich nicht im Projekt-Root-Verzeichnis.

Lösung:

# Prüfe dein aktuelles Verzeichnis
$ pwd

# Navigiere zum Projekt-Root (wo sich src/ befindet)
$ cd /pfad/zu/claw-code

Fehler 2: JSON Decode Error

bash
json.decoder.JSONDecodeError: Expecting ',' delimiter

Ursache: Eine der JSON-Dateien im reference_data/ Verzeichnis ist beschädigt.

Lösung:

# Validiere die JSON-Dateien
$ python3 -c "import json; json.load(open('src/reference_data/commands_snapshot.json'))"
$ python3 -c "import json; json.load(open('src/reference_data/tools_snapshot.json'))"

# Falls fehlerhaft: Aus dem Git-Repository wiederherstellen
$ git checkout -- src/reference_data/

Fehler 3: Permission Denied bei Session-Speicherung

bash
PermissionError: [Errno 13] Permission denied: '.port_sessions/'

Ursache: Keine Schreibrechte im Projektverzeichnis.

Lösung:

# Unter Linux/macOS
$ chmod 755 .port_sessions/

# Oder: Verzeichnis neu erstellen
$ rm -rf .port_sessions/
$ mkdir .port_sessions/

Fehler 4: Test-Timeout

Ursache: Ein Test hängt möglicherweise in einer Endlosschleife.

Lösung:

# Mit Timeout-Limit ausführen
$ timeout 60 python3 -m unittest discover -s tests -v

# Einzelne Testklassen isoliert testen
$ python3 -m unittest tests.test_porting_workspace -v

Fehler 5: Assertion Errors im Routing-Test

Ursache: Der Token-Scoring-Algorithmus wurde geändert, ohne die Tests anzupassen.

Lösung:

  • Prüfe, ob die erwarteten Testwerte noch aktuell sind
  • Passe die Testassertions an die neue Logik an
  • Stelle sicher, dass die JSON-Snapshots nicht verändert wurden
💡
Debugging-Tipp
Führe fehlschlagende Tests mit maximaler Ausführlichkeit aus: python3 -m unittest <test> -v --tb=long für detaillierte Tracebacks.

Übersicht: Alle Fehler und Lösungen

FehlerWahrscheinliche UrsacheSchnelle Lösung
ModuleNotFoundErrorFalsches VerzeichnisIns Projekt-Root wechseln
JSONDecodeErrorBeschädigte Snapshot-DateiGit-Restore ausführen
PermissionErrorKeine SchreibrechteRechte korrigieren
TimeoutEndlosschleifeEinzelne Tests isolieren
AssertionErrorCode-ÄnderungTests anpassen oder Rollback
ImportErrorFehlende AbhängigkeitPython 3.8+ prüfen

Zusammenfassung

Die wichtigsten Befehle und Konzepte auf einen Blick.

Die wichtigsten Befehle

bash
# Alle 49 Tests ausführen
$ python3 -m unittest discover -s tests -v

# Parity Audit durchführen
$ python3 -m src.main parity-audit

# Einzelne Testdatei ausführen
$ python3 -m unittest tests.test_porting_workspace -v

# System-Health prüfen
$ python3 -m src.main doctor
🎉
Sektion 09 abgeschlossen!
Du beherrschst nun die Qualitätssicherung des Claw Code Projekts. Du kannst alle 49 Tests ausführen, den Parity Audit interpretieren und häufige Fehler beheben. Dein KI-Agent-Harness ist bereit für den produktiven Einsatz!

Weiter zu Sektion 10 →