7.2 KiB
M1 Rekonstruierter Golden Master
Stand: 2026-07-12
Da kein alter MS-SQL-Datenbankstand verfuegbar ist, wird M1 als rekonstruierter Golden Master aufgebaut. Die Referenz entsteht aus Legacy-Code, Screenshots und kontrollierten Testdaten in der MySQL-Dev-Datenbank.
Ziel
Die wichtigsten fachlichen Regeln werden mit kleinen, nachvollziehbaren Testfaellen festgeschrieben. Diese Tests dienen spaeter als Sicherheitsnetz fuer die SaaS-Umstrukturierung.
Testdaten-Gruppen
Teilnehmer
- Aktives normales Mitglied.
- Aktiver Admin.
- Inaktives Mitglied.
- Mitglied mit PayPal-Namen.
- Mitglied ohne Buchungen.
Buchungen
- Einzahlung mit positivem Betrag.
- Mehrere Einzahlungen an unterschiedlichen Tagen.
- Strichbuchung mit einem Strich.
- Strichbuchung mit zwei Strichen.
- Sammelerfassung fuer mehrere Teilnehmer.
- Web-Strich-Eintrag mit
Eintragsart = 2.
Salden
- Positiver Kontostand.
- Negativer Kontostand.
- Nullsaldo.
- Jahreswerte fuer aktuelles Jahr.
- Altdaten aus Vorjahr, die nicht in Jahreswerte fallen.
CSV-Import
- Treffer ueber Name.
- Treffer ueber
paypalname. - Dublette gleicher Teilnehmer, Betrag und Datum.
- Unbekannter Name.
- Negativer oder leerer Betrag.
Hinweise
- Aktiver Hinweis.
- Abgelaufener Hinweis.
- Neuer Hinweis ueber Admin-Formular.
Erwartete Referenzwerte
Fuer jeden Testfall sollen erwartete Werte dokumentiert werden:
- Summe Einzahlungen.
- Summe Kosten.
- Summe Striche.
- Aktueller Stand.
- Jahresstriche.
- Jahreseinzahlungen.
- Jahresausgaben.
- Sichtbarkeit in Listen und Filtern.
Umsetzungsvorschlag
database/mysql-dev-schema.sqlum stabile Seed-Daten erweitern oder separates Seed-Skript anlegen. Erledigt mitscripts/seed-golden-master.php.scripts/init-mysql-dev.phpso erweitern, dass es die Testdaten idempotent anlegt. Entschieden: Golden-Master-Daten bleiben in einem separaten Skript, damit normale Dev-Daten nicht zwangsweise ueberschrieben werden.- Ein erstes Vergleichsskript
scripts/check-golden-master.phperstellen. Erledigt. - Die wichtigsten Seiten per HTTP abrufen und auf erwartete Texte/Werte
pruefen. Erledigt mit
scripts/http-smoke.php. - Danach M2 starten: technisches Fundament fuer SaaS-Struktur. M1 ist als Sicherheitsnetz nutzbar; offene Dependency-Themen sind unten dokumentiert.
Skripte
scripts/dev-db.php: gemeinsame DB-Verbindung fuer Dev-Skripte.scripts/golden-master-data.php: definierte Testdaten und erwartete Werte.scripts/seed-golden-master.php: legt Golden-Master-Testdaten idempotent an.scripts/check-golden-master.php: prueft Salden, Jahreswerte, Rollen, Listenfilter, CSV-Lookup und Hinweise.scripts/http-smoke.php: ruft sichere GET-Seiten per HTTP ab und prueft auf HTTP 200, erwartete Texte und PHP-Fehlermarker.
Ausfuehrung
Mit normal installierter PHP-CLI:
php scripts/seed-golden-master.php
php scripts/check-golden-master.php
php scripts/http-smoke.php
In der aktuellen lokalen Umgebung mit entpacktem PHP:
LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \
"$PWD/.local/php/usr/bin/php8.3" \
-c "$PWD/.local/php-dev.ini" \
scripts/seed-golden-master.php
LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \
"$PWD/.local/php/usr/bin/php8.3" \
-c "$PWD/.local/php-dev.ini" \
scripts/check-golden-master.php
LD_LIBRARY_PATH="$PWD/.local/php/usr/lib/x86_64-linux-gnu" \
"$PWD/.local/php/usr/bin/php8.3" \
-c "$PWD/.local/php-dev.ini" \
scripts/http-smoke.php
Die Skripte erwarten die bekannten Dev-Umgebungsvariablen DB_HOST, DB_NAME,
DB_USER und DB_PASS.
Abgedeckte Testfaelle
| Testfall | Fixture |
|---|---|
| Admin mit Buchung | gm-admin@test.local |
| Positiver Saldo mit Vorjahresdaten | gm-positive@test.local |
| Negativer Saldo | gm-negative@test.local |
| Nullsaldo | gm-zero@test.local |
| Inaktives Mitglied | gm-inactive@test.local |
| PayPal-Name fuer CSV-Lookup | gm-paypal@test.local |
| Mitglied ohne Buchungen | gm-empty@test.local |
| Vieltrinker fuer Vorderseite | gm-heavy@test.local |
| Aktiver Hinweis | [GM] Aktiver Hinweis fuer Golden-Master-Test |
| Abgelaufener Hinweis | [GM] Abgelaufener Hinweis fuer Golden-Master-Test |
HTTP-Smoke-Abdeckung
Der HTTP-Smoke-Test prueft nur GET-Seiten ohne bekannte Schreib- oder Versand-Nebenwirkungen.
| Seite | Erwartung |
|---|---|
index.php |
Dashboard laedt fuer Test Admin |
stricheintragen.php |
Stricherfassung laedt |
einzahlung.php |
Einzahlungserfassung laedt |
kaffeeliste.php |
Gesamtuebersicht laedt |
mitarbeiterverwalten.php |
Mitgliederverwaltung inkl. PayPal-Name laedt |
letzteneintraege.php |
letzte Einzahlungen und Striche laden |
csvupload.php |
CSV-Upload-Formular laedt |
hinweise.php |
Hinweisverwaltung laedt |
faq.php |
FAQ laedt |
namenanpassen.php |
Namensanpassung laedt |
teilnehmerauswertung.php?user_id=1 |
Teilnehmerauswertung fuer Dev-Admin laedt |
mailausgebe.php |
Mailadress-Ausgabe laedt |
umfrage.php |
geschlossene Umfrage laedt |
umfrageergebnisse.php |
Umfrageauswertung laedt |
Akzeptanzkriterien
- Testdaten sind reproduzierbar.
- Tests koennen mehrfach laufen, ohne Duplikate zu erzeugen.
- Salden und Jahreswerte sind automatisch pruefbar.
- CSV-Importfaelle sind fachlich abgedeckt.
- Die wichtigsten UI-Seiten liefern HTTP 200 ohne PHP-Warnings.
- Seiten mit Schreib- oder Versand-Nebenwirkungen werden nicht automatisch per GET ausgefuehrt, sondern als Risiko dokumentiert.
Gefundene Fehler und Bewertung
Im M1-Abschlusslauf wurden folgende Punkte geprueft:
number_format(null)inkaffeeliste.php: behoben; leere Summen werden als0behandelt.paypalnamein der Mitgliederverwaltung: eingepflegt und im Golden Master abgedeckt.umfrage.php:mb_strtolower()ist in der lokalen PHP-Umgebung nicht verfuegbar; Fallback aufstrtolower()ergaenzt.exportKaffeeliste.php: Pfad aufTCPDF/tcpdf.phpkorrigiert. Der Export bleibt trotzdem als bekannter Dependency-Fehler offen, weil die TCPDF-Kopie im Repo unvollstaendig ist undTCPDF/include/tcpdf_font_data.phpfehlt.mailversenden.php: nicht automatisch per HTTP ausgefuehrt, weil ein GET bei vollstaendiger PHPMailer-Installation E-Mails versenden kann. Zusaetzlich ist die PHPMailer-Kopie im Repo unvollstaendig.jahresauswertung.php: nicht automatisch per HTTP ausgefuehrt, weil ein GET Jahresbuchungen schreiben und E-Mails versenden kann. Zusaetzlich ist die PHPMailer-Kopie im Repo unvollstaendig.
Aktueller Pruefstatus
Stand 2026-07-12:
scripts/seed-golden-master.phperfolgreich gegen die MySQL-Dev-Datenbank ausgefuehrt.scripts/check-golden-master.phperfolgreich ausgefuehrt.- Zweiter Seed+Check-Lauf erfolgreich, Idempotenz bestaetigt.
- Ergebnis: 104 Assertions bestanden.
scripts/http-smoke.phperfolgreich gegenhttp://127.0.0.1:8080ausgefuehrt.- Ergebnis: 14 sichere Seiten bestanden ohne
Deprecated,Warning,Fatal error,Parse error,NoticeoderUncaught Error. - Bekannter offener Punkt: PDF-Export wegen unvollstaendiger TCPDF-Abhaengigkeit.
- Bewusst nicht automatisch ausgefuehrt:
mailversenden.phpundjahresauswertung.php, da GET dort Nebenwirkungen haben kann.