Files
Enelix-EMS/docs/adr/0003-standardisierte-teststrategie.md
T
dh 4a01e9df0f
Tests / test (push) Successful in 40s
Standardisiere Symcon-Modultests
2026-09-17 12:36:37 +00:00

1.8 KiB

ADR 0003: Standardisierte Teststrategie

Kontext

Die Module besitzen PHPUnit-Tests, ihre Prüfungen in einer echten IP-Symcon-Installation waren jedoch unterschiedlich aufgebaut. Dadurch fehlten ein einheitlicher Aufruf, sicherer Cleanup, maschinenlesbare Berichte und eine verbindliche Regel für neue Module.

Entscheidung

Enelix verwendet zwei Testebenen. PHPUnit bleibt die schnelle Pflichtprüfung bei jedem Push. Zusätzlich erhält jedes Modul einen registrierten Symcon-Modultest mit dem gemeinsamen TestContext. Der Runner unterstützt single, affected und all, isoliert jeden Testlauf und liefert Konsole, JSON und JUnit XML.

Der Manager-Test erzeugt jeden implementierten Verbrauchertyp und prüft ihn einzeln sowie in einer gemeinsamen Konstellation. Neue Verbrauchertypen müssen diese Matrix erweitern.

Alternativen

  • Nur PHPUnit: verworfen, weil das reale Objektmodell, Actions und Modulinteraktionen nicht abgedeckt werden.
  • Freie Schnellausführungs-Skripte pro Modul: verworfen, weil Aufbau, Cleanup und Berichte erneut auseinanderlaufen würden.
  • Ein drittes Test-Repository: vorerst verworfen, weil Tests zusammen mit dem jeweiligen Modul versioniert und atomar geändert werden sollen.

Folgen

Jedes neue Modul benötigt zusätzlich zu Unit-Tests einen Manifest-Eintrag und einen Symcon-Test. Der Vertrags-Unit-Test verhindert unregistrierte Module. Integrationstests benötigen einen isolierten IP-Symcon-8.x-Runner. Testobjekte dürfen ausschließlich innerhalb der vom Framework erzeugten Kategorie liegen.

Offene Punkte

  • Bereitstellung und Registrierung des Gitea-Runners mit Label symcon-8.
  • Festlegung der Aufbewahrungsdauer für JSON- und JUnit-Artefakte.
  • Erweiterung der Manager-Matrix, sobald weitere Verbrauchertypen umgesetzt werden.