Testen von Module

Guten Morgen zusammen,

mal eine Frage zum Thema Testen von Modulen. Gibt es eigentlich ein Framework dafür? Z.b. bastel ich gerade an einem Modul, dass u.a. auf mehrere KNX Geräte wirken soll.
Ich kann jetzt zwar aus der ETS die Topologie erstellen und damit die Hardware nachbilden, bzw. teilweise eben auch auf meinen Produktivinstallationen arbeiten, aber für den Test ist das etwas lästig. Da wäre es irgendwie schön, einfach Dummy Geräte zu haben, die auch Daten sammeln (und wenn es nur zufällige sind).

Grüße

Moin,

wir haben mal ein Webinar zum Thema automatisiertes Testen gemacht. Da zeigen wir, wie man seine Module mit PHPUnit testen kann: IP-Symcon Entwickler Webinar: Module automatisiert testen - YouTube

Dabei musst du dann natürlich die „Umgebung“ im Test irgendwie geeignet darstellen. Du könntest beispielsweise die MessageSink deines Moduls manuell befüttern um eine Eingabe des I/O zu simulieren.

Ah, ok, danke …
Komplett überlesen, das Video. Die anderen waren nämlich sehr hilfreich für den Einstieg. Ich schau es mir mal an.

Hab mir den Spaß mal angesehen. Eure Stubs sind schick gemacht und auch das Virtual I/O scheint ganz witzig. Erinnert mich an meine Zeit bei einem gewissen großen Software Haus …

Ein paar Fragen bleiben aber dennoch. Ich hole mal etwas weiter aus. Ich will einen MPC-Regler basteln, den man nicht für jedes Gebäude wieder neu erfinden muss und der den ganzen HKL Bereich (incl. PV) abdeckt. Ich weiß, ist eine „schöne“ Aufgabe, aber ich behaupte ich bin inzwischen indem Bereich Experte :slight_smile:

Ziel ist es aber nicht einen mathematisch formal korrekten MPC zu bauen, also der für jeden Regler n-Zeitschritte, jeden Zeitschritt vorherberechnet, sondern die vorhandenen Kaskaden umfassen und mit einem Schlupf versehen.

Das einfachste Beispiel dafür wäre die P-PI Kaskade aus Vorlauf und thermoelektrischem Stellantrieb. Und hier fehlt es etwas. Der PI Regler kann ja, „Gott weiß was“ sein, z.B. diverse KNX Aktoren, ne Beckhoff, Z-Wave Stellantriebe, HmIP, usw. Allen gemein ist aber Eure Lösung mittel „RequestAction()“ die Dinger ansprechen zu können, d.h. ich muss nur ein SelectVariable, o.ä. für die Soll-Temperatur vorsehen und es funktioniert recht Hardware unabhängig (übrigens genial gelöst von Euch :wink: ).

Aber, irgendwie muss das ja befüllt werden. Z.B. möchte ich für diesen einen PI-Regler die Reglgüte auswerten, u.a. wenn es ein Stellantrieb ist soll die durchschnittliche Ventilstellung um die 50% wandern. Dafür benötige ich ja irgendwie Daten, um das zu testen - also der Regler gibt dem Dummy-Aktor eine Soll-temperatur vor und der Dummy schreibt Ist-Temperatur und Ventilstellung dem Eingang folgend zurück - und davon natürlich viel.

Ich hätte das jetzt über Dummy Hardware gelöst, z.B. ein kleines extra Modul, aber irgendwie müsst Ihr das ja auch lösen, wenn Ihr viele Daten schreiben wollt, einfach um Verhalten zu testen und nicht nur Funktion.