← Übersicht

F14 Rechnungssystem mit Unit-, Contract- und End-to-End-Tests absichern

Rechnungssystem mit Unit-, Contract- und End-to-End-Tests absichern

Finding: F14 Priorität: P1 Status: IN UMSETZUNG Stand: 2026-07-16

Problembeschreibung

  • 22 Tests/54 Assertions sind grün, aber 0 Rechnungstests.
  • Login, Download, Hash, Extraktion, Kontakt, Posting, Retry, Recovery sind ungesichert.
  • POSTED-Happy-Path enthält falsches Datum; technischer Erfolg ist keine Fachabnahme.

Ziel

Jede fachliche Regel und jeder externe Fehlerzustand ist deterministisch getestet; Standardtests mutieren nie Produktion.

Aufgabe

  1. Unit-Tests Value Objects/Parser/Transitions/Identität.
  2. Port-Fakes/Contract-Fixtures.
  3. Golden-Master-PDF/Testtenant.
  4. Crash-/Parallel-/Timeout-/Korruptionsmatrix.

Scope

  • In Scope: alle unter Code Blast genannten Komponenten, Daten, Verträge und Tests.
  • Out of Scope: neue Features und produktive externe Mutation ohne separate Freigabe.

Harte Spezifikation

  • MUST: offline/deterministisch; Zeit/Random injiziert.
  • MUST: jede Fehlerklasse getestet.
  • MUST: Fixtures ohne Secrets/PII.
  • MUST: Mutation nur Flag/Testtenant.

Harte Quality Gateways

  • Rechnungs-Domain/Application >=90% Branch, kritische State-Logik 100%.
  • Mutation-Score Kernregeln >=90%.
  • Offline 0 Netz.
  • HTTP-/Timeout-/HTML-/Disk-/Corruption-/Crashmatrix grün.
  • Global: PHPStan Level 8 und PHPUnit liefern 0 Fehler; kein Ignore oder Baseline.

Code Blast

  • Neu: tests/Rechnung, Node-Tests, Fixtures/Fakes.
  • Kleine Produktänderungen für injizierbare Zeit/Randomness.

Code-Impact-Analyse

  • Mehr Testcode, massiv weniger Risiko.
  • E2E braucht getrennte Secrets/Testtenant.

Risikoanalyse

| Risiko | Eintritt | Schaden | |---|---|---| | Regression erst bei Buchung | hoch | kritisch | | Test/Fixture trifft oder leakt Produktion | niedrig | kritisch |

Strategie zur Risikonullierung

  1. Prevent: Offline/Testtenant.
  2. Detect: Coverage/Mutation/Contract/E2E.
  3. Contain: Flag.
  4. Recover: Run-ID-Cleanup.

Abschlussnachweis

Erledigt erst, wenn alle MUST-Spezifikationen implementiert, alle Gateways mit unveränderlicher Evidenz grün und Restrisiken technisch ausgeschlossen oder ausdrücklich fachlich akzeptiert sind.

Supervisionsfortschritt 2026-07-16

  • PHPUnit 54 Tests/124 Assertions gruen; Lock, URL-Duplikat, State-Fehlerinjektion, Parser, Storage, Lexware und Logger abgedeckt. Externer E2E fehlt.

Supervisionsfortschritt 2026-07-16 (Offline-Gateway)

  • Reproduzierbares `bin/quality-gates` eingefuehrt: Secret-/Grossdatei-, YAML-, Syntax-, PHPUnit-, PHPStan-, Node- und LOC-Gate.
  • Aktueller Lauf: 221 Versionskandidaten ohne Fund, 67 PHPUnit-Tests/240 Assertions, PHPStan Level 8 ohne Fehler, 9 Node-Tests und LOC gruen.

Supervisionsfortschritt 2026-07-16 (Finaler lokaler Lauf)

  • Das vollstaendige Offline-Gateway ist mit 67 PHPUnit-Tests/240 Assertions, PHPStan Level 8, 9 Node-Tests, YAML, Syntax und LOC gruen.
  • Ohne ausgeschlossene Wetell-Konfiguration endet `run-rechnung.php` fail-closed mit Exit 1; Rechnungsdateien bleiben exakt 0 zu 0 und Lexware wird nicht aufgerufen.
  • VCS-Vorpruefung: Runtime-Credentials sind ignoriert; Secret-/Grossdatei-Gateway prueft 223 Versionskandidaten ohne Fund.

Frühere Versionen

VersionZeitpunktOperation
64 2026-07-16 20:26:01.57899+02 UPDATE
62 2026-07-16 20:24:26.043013+02 UPDATE
58 2026-07-16 20:21:22.334817+02 UPDATE
49 2026-07-16 20:11:22.767617+02 UPDATE
41 2026-07-16 19:53:19.687616+02 UPDATE