Files
Halloween/tests/instructions.md
T
2026-10-14 18:20:48 +02:00

67 lines
4.0 KiB
Markdown

# Modul `tests/`
Automatische Tests prüfen die aktuelle Software ohne Pi-Hardware.
- `test_controller.py` prüft Zustandswechsel, Stopp, Neustartvoraussetzungen
und gespeicherten Modus mit kontrollierter Uhr und temporären Daten.
- `test_web.py` prüft Demo-Bild und Webendpunkte über einen ASGI-Client.
- `test_event_store.py` prüft dauerhafte Ereignisse, Profilzuordnung,
Profil-Löschen, 30-Tage-Ablauf und die Erweiterung einer älteren
Ereignistabelle.
- Lokal ausführen: `python3 -m unittest discover -s tests -v`; für Webtests
wird zusätzlich `requirements-dev.txt` benötigt.
- Hardwareverhalten, echte Pi-Kamera, WLAN, SSH-Tunnel und Außeneinsatz nicht
aus einem grünen Host-Test ableiten; diese Prüfungen getrennt berichten.
- Tests für neue Sicherheits- oder Zustandsregeln an beobachtbarem Verhalten
ausrichten, nicht bloß interne Implementierung spiegeln.
- `test_detection.py` prüft Linienrichtung, Bestätigung, Flattern, Segmentgrenzen,
Gruppenfreigabe, Sperrzeit, Neustart/Änderungen, Fehler-Watchdog, synchrone
Frames und Konfigurations-API mit kontrollierter Uhr ohne Modell/Pi.
- Echte NanoDet-Inferenz zusätzlich mit ausdrücklich installiertem Modell
prüfen; ein grüner Geometrietest bestätigt keine Erkennungsqualität.
- `test_detection_model.py` prüft atomare/identische Installation und Ablehnung
falscher Downloads ohne Netzwerk. Optional `HALLOWEEN_TEST_MODEL` auf eine
geprüfte ONNX-Datei setzen: Dann wird die echte Inferenz auf leerem Bild geprüft.
- `test_pi_update.py` prüft echte temporäre Versions-/Datenverzeichnisse mit
simuliertem systemd, Python-Paketsetup und HTTP-Ergebnis. Erfolgreichen Wechsel,
Start-/HTTP-/Abhängigkeitsfehler, Rückfall samt Daten, alte flache Installation,
Erstinstallation und Ablehnung fremder Units/manueller Server prüfen.
Kein SSH, kein echter Dienst, kein Netzwerk und keine Hardware in diesen Tests.
- `test_motion.py` nutzt synthetische JPEGs und optional OpenCV für echten
Optical Flow. Vorwärts/gegenläufig/parallel, Pfeilumkehr, gedrehte Geometrie,
Bildruhe/Lichtwechsel, Bereichsgrenzen und Bildlücken prüfen. Diensttests
prüfen Bestätigung, Sperrzeit, Stopp, Methodenmigration, Persistenz, verworfene
alte Inferenzfehler und modellfreie Verarbeitung. Ohne OpenCV werden die
Bildtests übersprungen; kein Ersatz für den Nahbereichstest am Pi.
- Nahbereichregression: kleiner 60x60-Bildausschnitt im 640x480-Frame,
2 Pixel Bewegung pro Bild; automatischen Trigger ohne manuelles Bereich-frei
und Ablehnung der Gegenrichtung prüfen.
- `node tests/test_ui_status.js` prüft den echten JS-Statusrenderer isoliert
ohne Browser/Netzwerk: automatische Freigabe vs. manuelle Bereich-frei-Flagge,
Vorrang von Stopp/Sequenz/Sperrzeit und wirkungslose Betriebsmodi.
- `test_event_images.py` prüft automatisch zugeordnete JPEGs mit synthetischem
Motiv: beschnittener privater Bereich, Dateirechte, Neustart, Migration alter
Ereignisse, DB-/Dateifehler, sichere ID-Abrufe, Header für Löschen und Erhalt
von Ereignis/Profil. Motion-Test prüft die exakten JPEG-Bytes des Trigger-Frames.
- `node tests/test_event_images_ui.js` prüft Vorschau/Ansehen und bestätigtes
Bildlöschen am echten JS-Renderer mit erfundenen Daten, ohne Browser oder Netz.
Abgebrochene Bestätigung löscht nichts; Ereignis bleibt nach Bildlöschung sichtbar.
- Update-Tests verlegen den festen Unitpfad nur in temporären Skriptkopien und
simulieren sudo/runuser. Zweiten sudo-Aufruf stets ablehnen, damit Erfolg und
Rückfall unabhängig von Passwort-Tickets geprüft werden. Abgelehnte Anmeldung,
unprivilegierten Aufruf des internen Rootteils und unveränderte Daten prüfen.
Kein echter root-/PAM-/systemd- oder Pi-Nachweis aus diesen Tests.
- UploadConnectionTest simuliert ssh/rsync und prüft genau einen Master, denselben
privaten Socket für alle Schritte, BatchMode auf Slaves, TTY für sudo sowie
Aufräumen bei Erfolg/Verbindungs-/Transfer-/Aktivierungsfehlern und pure Vorschau.
Dies bestätigt keine reale SSH-/Passwortanmeldung am Pi.